From 137d7643e66976fd4b7ddc61d31fe99f3a9f0304 Mon Sep 17 00:00:00 2001 From: Mark Goddard Date: Wed, 8 Dec 2021 16:51:33 +0000 Subject: [PATCH] docker: restart docker and containerd in handlers This is more efficient when there are no changes. Change-Id: I50ef8ea28e7d83e2788e1ceaee93c97765031a15 --- roles/docker/handlers/main.yml | 21 +++++++++++++ roles/docker/tasks/config.yml | 31 ++++++------------- .../tasks/configure-containerd-for-zun.yml | 13 +++----- roles/docker/tasks/install.yml | 31 +++++++++---------- 4 files changed, 49 insertions(+), 47 deletions(-) create mode 100644 roles/docker/handlers/main.yml diff --git a/roles/docker/handlers/main.yml b/roles/docker/handlers/main.yml new file mode 100644 index 0000000..6f31ece --- /dev/null +++ b/roles/docker/handlers/main.yml @@ -0,0 +1,21 @@ +--- +- name: Reload docker service file + become: True + systemd: + name: docker + daemon_reload: yes + notify: + - Restart docker + +- name: Restart docker + systemd: + name: docker + state: restarted + masked: no + become: True + +- name: Restart containerd + service: + name: containerd + state: restarted + become: True diff --git a/roles/docker/tasks/config.yml b/roles/docker/tasks/config.yml index a43d7a5..41efee6 100644 --- a/roles/docker/tasks/config.yml +++ b/roles/docker/tasks/config.yml @@ -35,7 +35,8 @@ content: "{{ docker_config | to_nice_json }}" dest: /etc/docker/daemon.json mode: 0644 - register: docker_configured + notify: + - Restart docker - name: Remove old docker options file become: True @@ -47,6 +48,8 @@ - not docker_http_proxy - not docker_https_proxy - not docker_no_proxy + notify: + - Reload docker service file - name: Ensure docker service directory exists become: True @@ -70,32 +73,16 @@ docker_http_proxy | length > 0 or docker_https_proxy | length > 0 or docker_no_proxy | length > 0 + notify: + - Reload docker service file -- name: Reload docker service file - become: True - systemd: - name: docker - daemon_reload: yes - register: docker_reloaded +- name: Flush handlers + meta: flush_handlers -- name: Start docker +- name: Start and enable docker systemd: name: docker state: started - masked: no - become: True - -- name: Restart docker - systemd: - name: docker - state: restarted - masked: no - become: True - when: docker_configured.changed or docker_reloaded.changed - -- name: Enable docker - systemd: - name: docker enabled: yes masked: no become: True diff --git a/roles/docker/tasks/configure-containerd-for-zun.yml b/roles/docker/tasks/configure-containerd-for-zun.yml index b8a29d6..8c648a4 100644 --- a/roles/docker/tasks/configure-containerd-for-zun.yml +++ b/roles/docker/tasks/configure-containerd-for-zun.yml @@ -16,7 +16,8 @@ owner: "{{ config_owner_user }}" group: "{{ config_owner_group }}" become: True - register: cni_configured + notify: + - Restart containerd - name: Ensuring CNI bin directory exist file: @@ -40,11 +41,5 @@ dest: "/etc/containerd/config.toml" mode: "0660" become: true - register: containerd_configured - -- name: Restart containerd - service: - name: containerd - state: restarted - become: True - when: cni_configured.changed or containerd_configured.changed + notify: + - Restart containerd diff --git a/roles/docker/tasks/install.yml b/roles/docker/tasks/install.yml index 213640c..f8be8db 100644 --- a/roles/docker/tasks/install.yml +++ b/roles/docker/tasks/install.yml @@ -12,23 +12,22 @@ # APT starts Docker engine right after installation, which creates # iptables rules before we disable iptables in Docker config +- block: + - name: Check if docker systemd unit exists + stat: + path: /etc/systemd/system/docker.service + register: docker_unit_file -- name: Check if docker systemd unit exists - stat: - path: /etc/systemd/system/docker.service - register: docker_unit_file - -- name: Mask the docker systemd unit on Debian/Ubuntu - file: - src: /dev/null - dest: /etc/systemd/system/docker.service - owner: root - group: root - state: link - become: true - when: - - ansible_facts.os_family == 'Debian' - - not docker_unit_file.stat.exists + - name: Mask the docker systemd unit on Debian/Ubuntu + file: + src: /dev/null + dest: /etc/systemd/system/docker.service + owner: root + group: root + state: link + become: true + when: not docker_unit_file.stat.exists + when: ansible_facts.os_family == 'Debian' - name: Install packages package: