Ansible обработчик уведомлений with_items

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

Теперь у меня есть задача для каждого приложения добавить переменную среды и уведомление о перезапуске приложения, например:

- name: Add variable1
  become: yes
  lineinfile: dest=/etc/environment regexp='^VARIABLE1=' line='VARIABLE1={{VARIABLE1}}'
  notify: restart application1

- name: restart application1
  become: yes
  command: restart application1

Поскольку у меня много приложений, это означает, что у меня много задач. Я хотел бы иметь задачу перебирать приложения, используя with_items. Чего я не могу понять, так это как иметь одну задачу обработчика для перезапуска. Можно ли передать обработчику, какое приложение нуждается в перезагрузке? Что-то типа:

- name: add variables
  become: yes
  lineinfile: dest=/etc/environment regexp='^{{item.app_name}}='
  line='{{item.app_name}}={{ item.variable }}'
  notify: restart apps   #pass app_name to handler somehow
  with_items:
  - { variable: "FIRST", app_name: "APP1"}
  - { variable: "SECOND", app_name: "APP2"}
  - { variable: "THIRD", app_name: "APP3"}


- name: restart apps
  become: yes
  command: restart {{app_name}}

person A.Jac    schedule 12.09.2017    source источник
comment
Я не вижу никаких обработчиков в вашем коде. Но вы можете увидеть этот похожий вопрос: stackoverflow.com/q/42769314/2795592   -  person Konstantin Suvorov    schedule 12.09.2017


Ответы (1)


Вы можете сами эмулировать функциональность обработчика, зарегистрировав значения и зациклив их в последующей задаче (эта вторая задача может быть определена как обработчик, а может и не быть):

- name: add variables
  lineinfile:
    dest: ./testfile
    regexp: '^{{item.app_name}}='
    line: '{{item.app_name}}={{ item.variable }}'
  register: add_variables
  with_items:
    - { variable: "FIRST", app_name: "APP1"}
    - { variable: "SECOND", app_name: "APP2"}
    - { variable: "THIRD", app_name: "APP3"}

- name: restart apps
  become: yes
  command: restart {{item.item.app_name}}
  when: item.changed
  with_items: "{{ add_variables.results }}"
person techraf    schedule 12.09.2017
comment
ansible-lint предупреждает [ANSIBLE0016] Задачи, которые запускаются при изменении, скорее всего, должны быть обработчиками, а отчеты Ansible Galaxy Syntax Score E503: Задачи, которые запускаются при изменении, скорее всего, должны быть обработчиками - person Vladimir Botka; 18.11.2018
comment
Задача помещается в раздел обработчиков. Пример - person Vladimir Botka; 18.11.2018