Как пройти через инвентаризацию групп хостов и выполнить задачу для конкретной группы?

Эксперты,

Я новичок в Ansible и учусь писать сценарии. Наткнулся на упражнение и нуждается в некоторой помощи - прокрутите группы хостов инвентаризации и замените любое существующее содержимое в / home / student / text1 текстом в зависимости от группы хостов: - если хост находится в группе хостов A, текст должен быть: добро пожаловать в группу A - если хост находится в группе хостов B, текст должен быть: добро пожаловать в группу B - если хост находится в группе хостов C, текст должен быть: добро пожаловать в группу C

Я мог бы пройти через инвентарь с помощью цикла: "{{groups ['all']}}", но как мне поставить другое условие, что если хост находится в группе A, сделайте это, а хост находится в другой группе B, сделайте это, и цикл через всю инвентарь?

Спасибо!


person user2962058    schedule 01.11.2019    source источник


Ответы (1)


Q: "замените любое существующее содержимое в / home / student / text1 текстом в зависимости от группы хостов: - если хост находится в группе хостов A, текст должен быть: добро пожаловать в группу A - если хост находится в группе хостов B, текст должно быть: добро пожаловать в группу B - если хост находится в группе хостов C, текст должен быть: добро пожаловать в группу C »

A: Я ожидаю, что если хост является членом большего количества групп, например B и C, файл / home / student / text1 должен выглядеть так:

welcome to group B
welcome to group C

Можно использовать специальную переменную group_names.

group_names: Список групп, в которые входит текущий хост

Например

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

$ cat text1.j2
{% for group in group_names %}
welcome to group {{ group }}
{% endfor %}

(не испытано)

person Vladimir Botka    schedule 01.11.2019