Ansible 仅为属于特定组的主机运行任务

Ansible 仅为属于特定组的主机运行任务,ansible,Ansible,我正试图根据库存文件中的组跳过剧本中的任务 库存: [test] testserver1 [qa] qaserver1 [prod] prodserver1 prodserver2 我非常确定我需要在任务中添加when子句,但不确定如何引用清单文件 -名称:将广告组添加到本地管理员 ansible.windows.win_组成员资格: 姓名:管理员 成员: -“{{local_admin_ad_group}” 国家:现在 何时:未生产库存 基本上,我希望在所有服务器上运行上述任务,除了名

我正试图根据库存文件中的组跳过剧本中的任务

库存:

[test]
testserver1

[qa]
qaserver1

[prod]
prodserver1
prodserver2
我非常确定我需要在任务中添加
when
子句,但不确定如何引用清单文件

-名称:将广告组添加到本地管理员
ansible.windows.win_组成员资格:
姓名:管理员
成员:
-“{{local_admin_ad_group}”
国家:现在
何时:未生产库存

基本上,我希望在所有服务器上运行上述任务,除了名为
prod

的组中的服务器之外。您可以在一个环境中拥有所有主机,但我建议对
dev
staging
qa
prod
使用不同的环境文件。如果按条件将其分开,可能会发生很快的情况,即您搞乱了某些条件或忘记将其全部添加到新任务中,并且意外地在prod主机上运行了不应该在那里运行的任务

如果您仍然希望所有主机都在同一个资源清册中,您可以使用不同的重头戏(在同一个剧本中可以有多个重头戏)将它们分开,然后使用
hosts
指定它们应该运行的位置。
例如:

-名称:播放一个
主持人:
-质量保证
-试验
任务:
-名字:第二场
主持人:prod
任务:
如果要在每个任务级别执行此操作,可以使用
group\u names
变量。
例如:

-名称:将广告组添加到本地管理员
ansible.windows.win_组成员资格:
姓名:管理员
成员:
-“{{local_admin_ad_group}”
国家:现在
当:“‘prod’不在组名称中”
在这种情况下,如果你改变了事情,你需要非常小心,所以你的条件仍然是他们应该的样子