在本地主机上运行时分离ansible中的变量
我有各种类型的服务器,可以分为A、B和C组。每个组都有自己的变量集 现在,我将使用在本地主机上运行时分离ansible中的变量,ansible,Ansible,我有各种类型的服务器,可以分为A、B和C组。每个组都有自己的变量集 现在,我将使用ansible playbook-I“localhost,”-c local playbook.yml命令在每台服务器的localhost上执行playbook。现在我想访问特定于服务器所属组的变量 在剧本中,如果我设置hosts:A并运行上述命令,那么我会得到一个错误[警告]:无法匹配提供的主机模式,忽略:A,如果我放置hosts:localhost或其他内容,那么我会得到一个变量未定义错误 如果有人可以更新我的
ansible playbook-I“localhost,”-c local playbook.yml
命令在每台服务器的localhost上执行playbook。现在我想访问特定于服务器所属组的变量
在剧本中,如果我设置
hosts:A
并运行上述命令,那么我会得到一个错误[警告]:无法匹配提供的主机模式,忽略:A
,如果我放置hosts:localhost
或其他内容,那么我会得到一个变量未定义错误
如果有人可以更新我的解决方案,我可以在本地主机上运行playbook,同时访问属于服务器组的组变量,这将非常有帮助
请注意,我只能使用localhost运行playbook,这是一个限制。如果使用
-c local
Ansible将在任何情况下在控制器上执行任务
如果使用-l serverA
Ansible将仅为serverA
执行任务
因此,您可以按如下方式制作库存:
[groupA]
serverA
[groupB]
serverB
ansible-playbook -l serverA -c local playbook.yml
在您的剧本中:
hosts: all
然后像这样执行:
[groupA]
serverA
[groupB]
serverB
ansible-playbook -l serverA -c local playbook.yml
这将从
服务器A/groupA
获取VAR,并在控制器上本地执行任务。如果使用-c local
Ansible将在任何情况下在控制器上执行任务
如果使用-l serverA
Ansible将仅为serverA
执行任务
因此,您可以按如下方式制作库存:
[groupA]
serverA
[groupB]
serverB
ansible-playbook -l serverA -c local playbook.yml
在您的剧本中:
hosts: all
然后像这样执行:
[groupA]
serverA
[groupB]
serverB
ansible-playbook -l serverA -c local playbook.yml
这将从
serverA/groupA
获取变量,并在控制器上本地执行任务。变量未定义错误
表示某些变量未定义。 ・ “没有明确问题陈述的问题对其他读者没有用处。请看:。”是的,我理解。出现该错误是因为我设置了hosts:localhost
,而变量是为组A定义的。variable undefined error
表示某些变量未定义。 ・ “没有明确问题陈述的问题对其他读者没有用处。请看:。”是的,我理解。这个错误是因为我在为组A定义变量时设置了hosts:localhost
。