我想在主机文件上运行临时命令,在该主机文件中,我为每个主机定义了一个变量,在执行临时命令时如何使用该变量。
例如:
ansible -i /home/bob/hosts_file -m shell -a "$VAR/project run"
Run Code Online (Sandbox Code Playgroud)
我$VAR在“ hosts_file”中为每个主机定义了,清单文件中每个主机的$ VAR是不同的。在执行时,如何在临时命令中使用该变量替换每个主机。
无论如何,使用 Ansible 即席命令都ansible可以使用所有相同的变量。
$ ansible -i inventory/lab -m debug -a "var=group_names" all | head -10
es-master-01.mydom.local | SUCCESS => {
"group_names": [
"elasticsearch",
"engineering",
"lab",
"lab-es-master"
]
}
Run Code Online (Sandbox Code Playgroud)
在这里,我查询清单中的服务器,以找出该服务器在清单文件中分配给哪些组。该变量group_names从我的库存文件中显示了这一点。
这是我使用变量inventory_hostnames并使用 Jinja 表示法访问它的另一个示例:
$ ansible -i inventory/nyc1 -l ocp-app* all -c local -m shell -a "echo {{ inventory_hostname }}"
ocp-app-01e.nyc1.dom.us | CHANGED | rc=0 >>
ocp-app-01e.nyc1.dom.us
ocp-app-01c.nyc1.dom.us | CHANGED | rc=0 >>
ocp-app-01c.nyc1.dom.us
ocp-app-01d.nyc1.dom.us | CHANGED | rc=0 >>
ocp-app-01d.nyc1.dom.us
ocp-app-01a.nyc1.dom.us | CHANGED | rc=0 >>
ocp-app-01a.nyc1.dom.us
ocp-app-01b.nyc1.dom.us | CHANGED | rc=0 >>
ocp-app-01b.nyc1.dom.us
ocp-app-01f.nyc1.dom.us | CHANGED | rc=0 >>
ocp-app-01f.nyc1.dom.us
Run Code Online (Sandbox Code Playgroud)
即使在运行临时命令时,主机变量也可用于 ansible。您可以像通过剧本一样使用 jinja 模板插入它们。
ansible all -i /home/bob/hosts_file -m shell -a "{{var}}/project run"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3265 次 |
| 最近记录: |