ansible: запускать задачу несколько раз на одном хосте, используя переменные из другого - PullRequest
0 голосов
/ 10 октября 2019

новичок в ansible , не могу найти ссылку на мою проблему, которая не кажется такой редкой ..

У меня есть два хоста в одной группе, каждый из которых со своимпеременные, скажем:

[myHosts]
host1  a=1  b=10
host2  a=2  b=20

Теперь у меня есть задача, которую нужно выполнить дважды только на host1, один раз с переменными host1 и второй раз со значением a от host1 и b от host2. Если я напишу это так:

- role: my_role
      vars:
        a_val: {{ a }}
        b_val: {{ b }}
      loop: "{{ groups['myHosts'] }}"
      when: inventory_hostname in groups['myHosts'][0]

Я получу a_val и b_val, заполненные только значениями host1 (что хорошо для a_val, но не для b_val).

Я знаю, что, похоже, нет причины, по которой я мог бы просто вызывать одну и ту же задачу дважды, ссылаясь на правильное значение b с некоторыми переменными волшебного значения (hostvars[groups['myHosts'][1]]['b'], например, сработало бы), но хост могзавтра будет 10, и это будет раздражать (в этом случае условие when все равно будет в порядке, поскольку все будет выполняться всегда там).

Как можно обобщить, чтобы заполнить b_val с помощьюправильное значение?

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Это то, что мне было нужно: https://stackoverflow.com/a/32336359/827818

Я составил отдельный список, подобный этому:

bs_list:
  host1:
    b: val1
  host2:
    b: val2

, включенный в pre_tasks, а затем

- debug: 
    msg: "{{ item.value.b }}"
  with_dict: "{{ bs_list }}"
  when: inventory_hostname in groups['myHosts'][0]
0 голосов
/ 12 октября 2019
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...