Обработчик уведомлений 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}}
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 }}"