模板中的 Ansible 变量
Ansible variables in template
template/file.cfg.j2
此模板文件将包含将在三个框之间共享的基本行。每个盒子的线条会有一些差异。这是我希望的值 variable:ize.
set system user nsroot 546426471446579744 -encrypted
546... 散列现在应该在 {{ }}
变量中,因为它在实例之间会有所不同。 {{ item.hash}}
我需要一种关于如何设置它和结构的方法,我需要 include_vars
等等吗
编辑: 我有:
vars/vars.yml
servers
ns:
- name: Copy hash
hash: 187f637f107bf7265069ace04bf87fcd8e63923169a2c529a
playbook.yml
tasks:
- name: Variable:ize
template: src=templates/template.j2 dest=/tmp mode=644 owner=root group=wheel
with_items: servers[ansible_hostname]
在您的清单文件中,您需要执行如下操作:
host1 nsroot_hash=12345
host2 nsroot_hash=54321
host3 nsroot_hash=24680
然后您的 template/file.cfg.j2 将如下所示:
set system user nsroot {{ nsroot_hash }} -encrypted
编辑:您希望在您的清单文件中定义 hash
变量,因为您希望针对每个要针对 运行 此任务的主机使用不同的值。所以你的 inventory (host_vars) 文件应该看起来像这样(我假设 ns
是你的其中一台服务器的名称):
ns hash=187f637f107bf7265069ace04bf87fcd8e63923169a2c529a
那么你的 playbook.yml 看起来就像这样:
- hosts: all
tasks:
- name: Variable:ize
template: src=templates/template.j2 dest=/tmp/template.txt mode=644 owner=root group=wheel
请注意,您不需要 with_items
语句。在上面的例子中,假设 ns
是主机名,那么这将创建文件 /tmp/template.txt,其中包含模板文本。 (请注意,dest
是文件路径,而不仅仅是目录路径。)
如果您想将此任务应用于多个主机,那么您只需编辑清单文件,如上所示:
ns hash=187f637f107bf7265069ace04bf87fcd8e63923169a2c529a
aa hash=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bb hash=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
当你 运行 上面的 playbook.yml 文件时,它会将模板应用于所有三个主机,ns、aa 和 bb,并将正确的哈希值放入每个主机上的文件中.
template/file.cfg.j2
此模板文件将包含将在三个框之间共享的基本行。每个盒子的线条会有一些差异。这是我希望的值 variable:ize.
set system user nsroot 546426471446579744 -encrypted
546... 散列现在应该在 {{ }}
变量中,因为它在实例之间会有所不同。 {{ item.hash}}
我需要一种关于如何设置它和结构的方法,我需要 include_vars
等等吗
编辑: 我有:
vars/vars.yml
servers
ns:
- name: Copy hash
hash: 187f637f107bf7265069ace04bf87fcd8e63923169a2c529a
playbook.yml
tasks:
- name: Variable:ize
template: src=templates/template.j2 dest=/tmp mode=644 owner=root group=wheel
with_items: servers[ansible_hostname]
在您的清单文件中,您需要执行如下操作:
host1 nsroot_hash=12345
host2 nsroot_hash=54321
host3 nsroot_hash=24680
然后您的 template/file.cfg.j2 将如下所示:
set system user nsroot {{ nsroot_hash }} -encrypted
编辑:您希望在您的清单文件中定义 hash
变量,因为您希望针对每个要针对 运行 此任务的主机使用不同的值。所以你的 inventory (host_vars) 文件应该看起来像这样(我假设 ns
是你的其中一台服务器的名称):
ns hash=187f637f107bf7265069ace04bf87fcd8e63923169a2c529a
那么你的 playbook.yml 看起来就像这样:
- hosts: all
tasks:
- name: Variable:ize
template: src=templates/template.j2 dest=/tmp/template.txt mode=644 owner=root group=wheel
请注意,您不需要 with_items
语句。在上面的例子中,假设 ns
是主机名,那么这将创建文件 /tmp/template.txt,其中包含模板文本。 (请注意,dest
是文件路径,而不仅仅是目录路径。)
如果您想将此任务应用于多个主机,那么您只需编辑清单文件,如上所示:
ns hash=187f637f107bf7265069ace04bf87fcd8e63923169a2c529a
aa hash=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bb hash=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
当你 运行 上面的 playbook.yml 文件时,它会将模板应用于所有三个主机,ns、aa 和 bb,并将正确的哈希值放入每个主机上的文件中.