Ansible:如何在临时命令中使用清单变量

Sno*_*121 5 ansible

我想在主机文件上运行临时命令,在该主机文件中,我为每个主机定义了一个变量,在执行临时命令时如何使用该变量。

例如:

ansible -i /home/bob/hosts_file -m shell -a "$VAR/project run"
Run Code Online (Sandbox Code Playgroud)

$VAR在“ hosts_file”中为每个主机定义了,清单文件中每个主机的$ VAR是不同的。在执行时,如何在临时命令中使用该变量替换每个主机。

slm*_*slm 5

无论如何,使用 Ansible 即席命令都ansible可以使用所有相同的变量。

例子

#1. 组名
$ 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从我的库存文件中显示了这一点。

#2. 库存主机名

这是我使用变量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)


Kev*_*ger 4

即使在运行临时命令时,主机变量也可用于 ansible。您可以像通过剧本一样使用 jinja 模板插入它们。

ansible all -i /home/bob/hosts_file -m shell -a "{{var}}/project run"
Run Code Online (Sandbox Code Playgroud)