Ansible 如何循环清点主机组并为特定组执行任务?

Ansible 如何循环清点主机组并为特定组执行任务?,ansible,ansible-inventory,Ansible,Ansible Inventory,专家们 我对Ansible还不熟悉,正在学习写剧本。偶然发现一个练习,需要一些帮助- 循环清点主机组,并根据主机组将/home/student/text1中的任何现有内容替换为文本: -如果主机在主机组中,则文本应为:欢迎加入组A -若主机在B主机组中,则文本应为:欢迎加入B组 -若主机在C主机组中,则文本应为:欢迎来到C组 我可以通过循环遍历清单:“{{groups['all']}}”,但我如何设置另一个条件,即如果主机在一个组中,那么主机在另一个组B中,那么如何遍历整个清单 谢谢大家! Q:

专家们

我对Ansible还不熟悉,正在学习写剧本。偶然发现一个练习,需要一些帮助- 循环清点主机组,并根据主机组将/home/student/text1中的任何现有内容替换为文本: -如果主机在主机组中,则文本应为:欢迎加入组A -若主机在B主机组中,则文本应为:欢迎加入B组 -若主机在C主机组中,则文本应为:欢迎来到C组

我可以通过循环遍历清单:“{{groups['all']}}”,但我如何设置另一个条件,即如果主机在一个组中,那么主机在另一个组B中,那么如何遍历整个清单

谢谢大家!

Q:“将/home/student/text1中的任何现有内容替换为取决于主机组的文本:-如果主机在主机组中,文本应为:欢迎来到A组-如果主机在B主机组中,文本应为:欢迎来到B组-如果主机在C主机组中,文本应为:欢迎来到C组”

答:我希望如果主机是更多组的成员,例如B和C,那么文件/home/student/text1应该如下所示

welcome to group B
welcome to group C
可以使用特殊变量

组名称:当前主机所属组的列表

比如说

- hosts: all
  tasks:
    - template:
        src: text1.j2
        dest: /home/student/text1

$ cat text1.j2
{% for group in group_names %}
welcome to group {{ group }}
{% endfor %}
(未测试)