在localhost

时间:2018-02-01 09:38:03

标签: ansible

我有各种类型的服务器,可以分为A,B和C组。每个组都有自己的变量集。

现在,我将使用ansible-playbook -i "localhost," -c local playbook.yml命令在每个服务器上的localhost上执行playbook。现在我想访问特定于服务器所属组的变量。

在剧本中,如果我设置hosts: A并运行上述命令,则会收到错误[WARNING]: Could not match supplied host pattern, ignoring: A,如果我放了hosts: localhost或其他内容,那么我会得到variable undefined error

如果有人能够更新我可以在localhost上运行playbook并同时访问属于服务器组的组变量的解决方案,那将会非常有用。

请注意,我只能使用localhost运行playbook,这是一个约束。

1 个答案:

答案 0 :(得分:2)

如果使用-c local Ansible将在任何情况下执行控制器上的任务。

如果您使用-l serverA Ansible将仅执行serverA的任务。

所以你可以像这样制作库存:

[groupA]
serverA

[groupB]
serverB

在你的剧本中:

hosts: all

执行如下:

ansible-playbook -l serverA -c local playbook.yml

这将从serverA/groupA获取变量并在您的控制器上本地执行任务。