Есть ли способ установить переменную среды при циклическом переключении роли в пьесе Ansible? - PullRequest
0 голосов
/ 09 апреля 2019

Мне нужно перебрать роль Ansible и сохранить индекс итерации.

Моя цель - использовать число (в данном случае INDEX) в my-role для каждой итерации. Моя роль выполняет другие книги, и мне нужно значение INDEX для каждой итерации. Я хочу использовать этот индекс в другом учебнике. Поэтому я планирую установить переменную среды для чтения из другой книги.

Это мой код:

- name: my-role
  with_sequence: 'start=0 end={{ number_of_users|int }}'
  include_role:
    name: my-role
  vars:
    user_name: '{{ user_temp[item|int] }}'
    queue_name: '{{ queue_temp[item|int] }}'
  lineinfile:
    dest: "/etc/environment"
    state: present
    line: 'export INDEX=[item|int]'

Очевидно, я не могу сделать два заявления одновременно.

Сообщение об ошибке:

ОШИБКА! операторы конфликтующих действий: include_role, lineinfile

Есть ли способ установить переменную окружения при цикле по роли?

1 Ответ

0 голосов
/ 10 апреля 2019

Есть ли способ установить переменную окружения при зацикливании роли?

Да, используя опцию apply: include_role:

- with_sequence: start=0 end=3
  include_role:
    name: my-role
    apply:
      environment:
        INDEX: '[{{item}}]'

Кстати, даже если у ansible было , позволяющее запустить lineinfile вместе с этой ролью, просто добавление записи в /etc/environment вряд ли автоматически предоставит эту переменную среды роли. Это потребовало бы, чтобы каждое ssh-соединение, созданное для каждой задачи, фактически являлось источником /etc/environment, что могло бы произойти, но неразумно рассчитывать на это, когда ansible предлагает вам директиву environment:, которая явно предназначена для этого.

...