docker_compose(role): use community.docker.docker_compose_v2 module
Use the community.docker.docker_compose_v2 module as it supports proper changed handling out of the box, making the roles code more straightforward and work. Also just do a docker compose restart instead of having the custom docker compose reload script. https://docs.ansible.com/ansible/latest/collections/community/docker/docker_compose_v2_module.html
This commit is contained in:
		
					parent
					
						
							
								9f8d2d89cd
							
						
					
				
			
			
				commit
				
					
						ae60d6fea6
					
				
			
		
					 5 changed files with 21 additions and 48 deletions
				
			
		| 
						 | 
				
			
			@ -6,4 +6,3 @@ docker_compose__configuration_files:
 | 
			
		|||
    content: "{{ lookup('ansible.builtin.template', 'resources/z9/yate/docker_compose/regexroute.conf.j2') }}"
 | 
			
		||||
  - name: regfile.conf
 | 
			
		||||
    content: "{{ lookup('ansible.builtin.template', 'resources/z9/yate/docker_compose/regfile.conf.j2') }}"
 | 
			
		||||
docker_compose__restart_cmd: "exec yate sh -c 'kill -1 1'"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,3 +6,6 @@ collections:
 | 
			
		|||
  - name: community.sops
 | 
			
		||||
    version: ">=2.2.4"
 | 
			
		||||
    source: https://galaxy.ansible.com
 | 
			
		||||
  - name: community.docker
 | 
			
		||||
    version: ">=5.0.0"
 | 
			
		||||
    source: https://galaxy.ansible.com
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,2 +1 @@
 | 
			
		|||
docker_compose__configuration_files: [ ]
 | 
			
		||||
docker_compose__restart_cmd: ""
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,13 +1,11 @@
 | 
			
		|||
- name: docker compose down
 | 
			
		||||
  ansible.builtin.command:
 | 
			
		||||
    cmd: /usr/bin/docker compose down
 | 
			
		||||
    chdir: /ansible_docker_compose
 | 
			
		||||
  community.docker.docker_compose_v2:
 | 
			
		||||
    project_src: /ansible_docker_compose
 | 
			
		||||
    state: absent
 | 
			
		||||
  become: true
 | 
			
		||||
  changed_when: true  # This is always changed.
 | 
			
		||||
- name: docker compose reload script
 | 
			
		||||
  ansible.builtin.command:
 | 
			
		||||
    cmd: /usr/bin/docker compose {{ docker_compose__restart_cmd }}
 | 
			
		||||
    chdir: /ansible_docker_compose
 | 
			
		||||
 | 
			
		||||
- name: docker compose restart
 | 
			
		||||
  community.docker.docker_compose_v2:
 | 
			
		||||
    project_src: /ansible_docker_compose
 | 
			
		||||
    state: restarted
 | 
			
		||||
  become: true
 | 
			
		||||
  changed_when: true  # Mark this as always changed (for now?).
 | 
			
		||||
  when: docker_compose__restart_cmd != ""
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,7 +59,7 @@
 | 
			
		|||
    state: absent
 | 
			
		||||
  become: true
 | 
			
		||||
  loop: "{{ docker_compose__config_files_to_remove.files }}"
 | 
			
		||||
  # notify: docker compose down
 | 
			
		||||
  notify: docker compose restart
 | 
			
		||||
 | 
			
		||||
- name: make sure all given configuration files are deployed
 | 
			
		||||
  ansible.builtin.copy:
 | 
			
		||||
| 
						 | 
				
			
			@ -70,45 +70,19 @@
 | 
			
		|||
    group: root
 | 
			
		||||
  become: true
 | 
			
		||||
  loop: "{{ docker_compose__configuration_files }}"
 | 
			
		||||
  # notify: docker compose down
 | 
			
		||||
  notify: docker compose reload script
 | 
			
		||||
  notify: docker compose restart
 | 
			
		||||
 | 
			
		||||
- name: Flush handlers to make "docker compose down" handler run now
 | 
			
		||||
- name: Flush handlers to make "docker compose down" and "docker compose restart" handlers run now
 | 
			
		||||
  ansible.builtin.meta: flush_handlers
 | 
			
		||||
 | 
			
		||||
- name: docker compose ps --format json before docker compose up
 | 
			
		||||
  ansible.builtin.command:
 | 
			
		||||
    cmd: /usr/bin/docker compose ps --format json
 | 
			
		||||
    chdir: /ansible_docker_compose
 | 
			
		||||
- name: docker compose up
 | 
			
		||||
  community.docker.docker_compose_v2:
 | 
			
		||||
    project_src: /ansible_docker_compose
 | 
			
		||||
    state: present
 | 
			
		||||
    build: always
 | 
			
		||||
    pull: always
 | 
			
		||||
    remove_orphans: true
 | 
			
		||||
  become: true
 | 
			
		||||
  changed_when: false
 | 
			
		||||
  register: docker_compose__ps_json_before_up
 | 
			
		||||
 | 
			
		||||
- name: docker compose up --detach --pull always --build
 | 
			
		||||
  ansible.builtin.command:
 | 
			
		||||
    cmd: /usr/bin/docker compose up --detach --pull always --build --remove-orphans
 | 
			
		||||
    chdir: /ansible_docker_compose
 | 
			
		||||
  become: true
 | 
			
		||||
  changed_when: false
 | 
			
		||||
  # The changed for this task is tried to be determined by the "potentially
 | 
			
		||||
  # report changed" task together with the "docker compose ps --format json
 | 
			
		||||
  # [...]" tasks.
 | 
			
		||||
 | 
			
		||||
- name: docker compose ps --format json after docker compose up
 | 
			
		||||
  ansible.builtin.command:
 | 
			
		||||
    cmd: /usr/bin/docker compose ps --format json
 | 
			
		||||
    chdir: /ansible_docker_compose
 | 
			
		||||
  become: true
 | 
			
		||||
  changed_when: false
 | 
			
		||||
  register: docker_compose__ps_json_after_up
 | 
			
		||||
 | 
			
		||||
# Doesn't work anymore. Dunno why.
 | 
			
		||||
# TODO: Fix
 | 
			
		||||
# - name: potentially report changed
 | 
			
		||||
#   ansible.builtin.debug:
 | 
			
		||||
#     msg: "If this reports changed, then the docker compose containers changed."
 | 
			
		||||
#   changed_when: (docker_compose__ps_json_before_up.stdout | from_json | community.general.json_query('[].ID') | sort)
 | 
			
		||||
#                 != (docker_compose__ps_json_after_up.stdout | from_json | community.general.json_query('[].ID') | sort)
 | 
			
		||||
 | 
			
		||||
- name: Make sure anacron is installed
 | 
			
		||||
  become: true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue