ansible playbook主机,是否有按变量筛选的方法

ansible playbook主机,是否有按变量筛选的方法,ansible,ansible-playbook,Ansible,Ansible Playbook,我是ansible的新手,如果我的问题有点基本的话,请容忍我 我有10个不同主题的WordPress网站,它们都列在“生产”组下的主机文件中: [production] black.com red.com blue.com 每个站点需要不同的变量: theme_name: black 我是否可以使用变量在“生产”主机组上运行剧本?您无法轻松*按变量筛选。但您可以将主机添加到其他组,如: [production] black.com red.com blue.com [black] b

我是ansible的新手,如果我的问题有点基本的话,请容忍我

我有10个不同主题的WordPress网站,它们都列在“生产”组下的主机文件中:

[production]

black.com

red.com

blue.com
每个站点需要不同的变量:

theme_name: black

我是否可以使用变量在“生产”主机组上运行剧本?

您无法轻松*按变量筛选。但您可以将主机添加到其他组,如:

[production]
black.com
red.com
blue.com

[black]
black.com

[red]
red.com

[blue]
blue.com
现在为主题名创建一个组vars files。例如,为红色组创建文件
group\u vars/red
,内容如下:

theme_name: red
现在,您可以使用
黑色
红色
蓝色
组运行游戏手册


*我想有一种方法,在
hostvars
dict上运行过滤器,并将其简化为符合您的条件的主机名列表。但这似乎是间接的,而且违背了最佳实践。如果您想针对一组特定的主机,您应该在资源清册中为它们设置一个组。

不确定您的问题是否完全清楚,但您的问题的另一个可能答案可能是:

您可以将变量直接分配给资源清册中的主机或组,这里有一个很好的介绍,介绍了如何实现这一点

示例摘自页面,主机条目后定义的变量:

[atlanta]
host1 http_port=80 maxRequestsPerChild=808
host2 http_port=303 maxRequestsPerChild=909
这对于少量主机应该可以很好地工作,尽管在大规模工作时有更好的方法


哈。

@boazbarkan,你最好投它一票,而不是说谢谢。