--- - name: Update Docker Daemon configuration to use Syslog Server hosts: all become: yes tasks: - name: Read current Docker daemon.json ansible.builtin.slurp: src: /etc/docker/daemon.json register: current_daemon_json - name: Parse current Docker daemon.json set_fact: current_daemon_config: "{{ current_daemon_json['content'] | b64decode | from_json }}" - name: Check current log-driver setting set_fact: log_driver_current: "{{ current_daemon_config['log-driver'] | default('not_set') }}" - name: Update Docker daemon.json with syslog configuration if log-driver is local ansible.builtin.copy: dest: /etc/docker/daemon.json content: "{{ updated_daemon_json | to_nice_json }}" vars: syslog_config: { "log-driver": "syslog", "log-opts": { "syslog-address": "udp://[2a0e:b680:80::91]:5514", "syslog-format": "rfc5424", "tag": "{{ '{{.Name}}' }}" } } updated_daemon_json: "{{ current_daemon_config | combine(syslog_config) }}" when: log_driver_current == 'local' or log is undefined register: daemon_update - name: Restart Docker to apply changes ansible.builtin.systemd: name: docker state: restarted when: daemon_update.changed - include_role: name: roles/managed-mailcow tasks_from: find-mailcow-composedir.yml when: daemon_update.changed - name: Stop mailcow stack import_role: name: roles/managed-mailcow tasks_from: stop-mailcow.yml vars: docker_compose_path: "{{ mailcow_dir_result.files[0].path }}" verbose: False when: daemon_update.changed and mailcow_dir_result.matched > 0 - name: Start mailcow stack import_role: name: roles/managed-mailcow tasks_from: start-mailcow.yml vars: docker_compose_path: "{{ mailcow_dir_result.files[0].path }}" verbose: False when: daemon_update.changed and mailcow_dir_result.matched > 0