在本地主机上运行时分离ansible中的变量

在本地主机上运行时分离ansible中的变量,ansible,Ansible,我有各种类型的服务器,可以分为A、B和C组。每个组都有自己的变量集 现在,我将使用ansible playbook-I“localhost,”-c local playbook.yml命令在每台服务器的localhost上执行playbook。现在我想访问特定于服务器所属组的变量 在剧本中,如果我设置hosts:A并运行上述命令,那么我会得到一个错误[警告]:无法匹配提供的主机模式,忽略:A,如果我放置hosts:localhost或其他内容,那么我会得到一个变量未定义错误 如果有人可以更新我的

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

现在,我将使用
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