Stop using handlers

With the switch to tripleo_free in stable/train, we can no longer
reliably use handlers.  That being said, handlers don't make sense when
you are forcing them to run with a flush handlers anyway. So this change
takes the code we used in the handler and makes them explicit tasks in
the required locations where we used to do a flush handlers.  This
change should also improve the scope of some tasks to only occur when
necessary.

Change-Id: I1e31af24a4c1b9356a5971c6c1cb717d39d1e9b2
Closes-Bug: #1909750
This commit is contained in:
Alex Schultz 2021-01-11 09:29:51 -07:00
parent a0a314ade3
commit dc3a577652
3 changed files with 73 additions and 24 deletions

View File

@ -7,6 +7,7 @@
name: docker-distribution name: docker-distribution
state: present state: present
become: true become: true
register: _distro_install
- name: manage /etc/docker-distribution/registry/config.yml - name: manage /etc/docker-distribution/registry/config.yml
template: template:
@ -14,14 +15,31 @@
dest: /etc/docker-distribution/registry/config.yml dest: /etc/docker-distribution/registry/config.yml
mode: '0644' mode: '0644'
become: true become: true
register: _distro_config
notify: restart docker-distribution service notify: restart docker-distribution service
- name: force systemd to reread configs - name: Handle docker-distribution restart
meta: flush_handlers
- name: enable and start docker-distribution
systemd:
enabled: true
state: started
name: docker-distribution
become: true become: true
when: _distro_install is changed or _distro_config is changed
block:
- name: Reload systemd
systemd:
daemon_reload: yes
become: true
- name: Reload docker-distribution
service:
enabled: true
name: docker-distribution
state: restarted
become: true
# NOTE(bogdando): import caveats https://github.com/ansible/ansible/issues/42621
- name: Wait for registry
uri:
# Just checking API version should be fine
# https://docs.docker.com/registry/spec/api/#api-version-check
url: "http://{{ container_registry_host }}:{{ container_registry_port }}/v2/"
return_content: yes
register: registry_status
retries: 10
delay: 5
until: "registry_status.status|int == 200 and 'OK' in registry_status.msg"

View File

@ -69,7 +69,7 @@
value: "" value: ""
create: yes create: yes
mode: '0644' mode: '0644'
notify: restart docker service register: _cfg_flags
when: ansible_service_mgr == 'systemd' when: ansible_service_mgr == 'systemd'
- name: configure OPTIONS in /etc/sysconfig/docker - name: configure OPTIONS in /etc/sysconfig/docker
@ -79,7 +79,7 @@
line: "OPTIONS='{{ _full_docker_options }}'" line: "OPTIONS='{{ _full_docker_options }}'"
create: yes create: yes
mode: '0644' mode: '0644'
notify: restart docker service register: _cfg_options
- name: configure INSECURE_REGISTRY in /etc/sysconfig/docker - name: configure INSECURE_REGISTRY in /etc/sysconfig/docker
lineinfile: lineinfile:
@ -88,7 +88,7 @@
line: "INSECURE_REGISTRY='{{ registry_flags }}'" line: "INSECURE_REGISTRY='{{ registry_flags }}'"
mode: '0644' mode: '0644'
when: container_registry_insecure_registries | length > 0 when: container_registry_insecure_registries | length > 0
notify: restart docker service register: _cfg_insecure
vars: vars:
registry_flags: --insecure-registry {{ container_registry_insecure_registries | join(' --insecure-registry ') }} registry_flags: --insecure-registry {{ container_registry_insecure_registries | join(' --insecure-registry ') }}
@ -97,7 +97,7 @@
path: "{{ item | dirname }}" path: "{{ item | dirname }}"
state: directory state: directory
mode: '0755' mode: '0755'
notify: restart docker service register: _cfg_sockets
with_items: "{{ container_registry_additional_sockets }}" with_items: "{{ container_registry_additional_sockets }}"
when: container_registry_additional_sockets | length > 0 when: container_registry_additional_sockets | length > 0
@ -106,7 +106,7 @@
src: docker-daemon.json.j2 src: docker-daemon.json.j2
dest: /etc/docker/daemon.json dest: /etc/docker/daemon.json
mode: '0644' mode: '0644'
notify: restart docker service register: _cfg_daemon
- name: configure DOCKER_STORAGE_OPTIONS in /etc/sysconfig/docker-storage - name: configure DOCKER_STORAGE_OPTIONS in /etc/sysconfig/docker-storage
lineinfile: lineinfile:
@ -116,7 +116,7 @@
create: yes create: yes
mode: '0644' mode: '0644'
when: container_registry_storage_options | length > 0 when: container_registry_storage_options | length > 0
notify: restart docker service register: _cfg_storage
- name: configure DOCKER_NETWORK_OPTIONS in /etc/sysconfig/docker-network - name: configure DOCKER_NETWORK_OPTIONS in /etc/sysconfig/docker-network
lineinfile: lineinfile:
@ -126,33 +126,63 @@
create: yes create: yes
mode: '0644' mode: '0644'
when: container_registry_network_options | length > 0 when: container_registry_network_options | length > 0
notify: restart docker service register: _cfg_network
- name: ensure docker group exists - name: ensure docker group exists
group: group:
name: docker name: docker
state: present state: present
register: _cfg_group
- name: add deployment user to docker group - name: add deployment user to docker group
user: user:
name: "{{ container_registry_deployment_user }}" name: "{{ container_registry_deployment_user }}"
groups: docker groups: docker
append: yes append: yes
register: _cfg_user
when: container_registry_deployment_user | length > 0 when: container_registry_deployment_user | length > 0
- name: reset ssh connection to pick up docker group - name: reset ssh connection to pick up docker group
meta: reset_connection meta: reset_connection
when: container_registry_deployment_user | length > 0 when: _cfg_group is changed or _cfg_user is changed
- name: force systemd to reread configs - name: Handle docker restart
meta: flush_handlers when:
- (_cfg_flags is changed
or _cfg_options is changed
or _cfg_insecure is changed
or _cfg_sockets is changed
or _cfg_daemon is changed
or _cfg_storage is changed
or _cfg_network is changed
or _cfg_group is changed
or _cfg_user is changed)
block:
- name: Reload systemd
systemd:
daemon_reload: yes
become: true
when:
- ansible_service_mgr == 'systemd'
- _cfg_flags is changed
- name: enable and start docker - name: Reload docker
systemd: service:
enabled: true name: docker
state: started enabled: true
name: docker state: restarted
when: ansible_service_mgr == 'systemd' become: true
- name: Pause while Docker restarts
shell: sleep 10
changed_when: false
- name: Wait for docker
command: /usr/bin/docker images
register: docker_ready
retries: 10
delay: 5
until: docker_ready.rc == 0
- name: mark docker configured - name: mark docker configured
lineinfile: lineinfile:

View File

@ -26,4 +26,5 @@
- name: Start Docker daemon - name: Start Docker daemon
service: service:
name: docker name: docker
enabled: true
state: started state: started