我有各种类型的服务器,可以分为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,这是一个约束。
答案 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
获取变量并在您的控制器上本地执行任务。