Running Ansible Handlers Based on Modified Results in Multiple Loops

I have an Ansible variable containing a list of web servers (all on the same host):

servers:
  - foo
  - bar
  - baz

And a task that modifies their configuration files and registers the results in a variable:

- name: create server configs
  template: ...
  with_items: "{{ servers }}"
  notify: restart changed servers
  register: servers_changed

And a handler that restarts only the servers that change during this task:

- name: restart changed servers
  command: restart-my-server {{ item.item.name }}
  when: item.changed
  with_items: "{{ servers_changed.results }}"

My problem is that now I need several tasks, like the ones above, that change different configuration files. But if I do, they will overwrite the variable servers_changed, so only the latter will be used.

I can register different variables in each task, but then I need a different handler for each of them. It will be random. Is there a better way?

+4
2

, . restart_servers, , . .

:

servers:
- name: server1
  port: 1000
- name: server2
  port: 1001

:

- name: create server configs
  template: ...
  with_items: "{{ servers }}"
  notify: restart changed servers
  register: servers_changed

- name: remember which servers need to restart
  set_fact:
    restart_servers: "{{ restart_servers | default([]) + [item.item.name] }}"
  when: item.changed
  with_items: "{{ servers_changed.results }}"

:

- name: restart changed servers
  command: restart-my-server {{ item.name }}
  when: item.name in restart_servers | default([])
  with_items: "{{ servers }}"

, , , set_fact .

, .

0

servers_changed :

- name: create server configs
  template: ...
  with_items: "{{ servers }}"
  notify: restart changed servers
  register: servers_changed_now

- set_fact:
    servers_changed: "{{ servers_changed | default([]) | union(servers_changed_now.results|default([]) }}"

- name: restart changed servers
  command: restart-my-server {{ item.item.name }}
  when: item.changed
  with_items: "{{ servers_changed }}"
+3

Source: https://habr.com/ru/post/1664230/


All Articles