forked from CCCHH/ansible-infra
		
	Compare commits
	
		
			5 commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
							
							
								
							
							
	
	
		
			
		
	
	ae60d6fea6 | 
						
						
							|||
| 
							
							
								
							
							
	
	
		
			
		
	
	9f8d2d89cd | 
						
						
							|||
| 
							
							
								
							
							
	
	
		
			
		
	
	e390b7c202 | 
						
						
							|||
| 
							
							
								
							
							
	
	
		
			
		
	
	8cefd07618 | 
						
						
							|||
| c3f71b1f08 | 
					 9 changed files with 29 additions and 73 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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,7 @@ services:
 | 
			
		|||
    volumes:
 | 
			
		||||
        - mariadb:/var/lib/mysql
 | 
			
		||||
    healthcheck:
 | 
			
		||||
      test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-uroot", "-prootpassword"]
 | 
			
		||||
      test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-uroot", "-p{{ secret__sunders_db_root_password }}"]
 | 
			
		||||
      interval: 10s
 | 
			
		||||
      timeout: 5s
 | 
			
		||||
      start_period: 30s
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,17 +7,18 @@ A use case for the deployment of the additional configuration files is Composes
 | 
			
		|||
 | 
			
		||||
## Supported Distributions
 | 
			
		||||
 | 
			
		||||
The following distributions are supported:
 | 
			
		||||
 | 
			
		||||
- Debian 11
 | 
			
		||||
Should work on Debian-based distributions.
 | 
			
		||||
 | 
			
		||||
## Required Arguments
 | 
			
		||||
 | 
			
		||||
For the required arguments look at the [`argument_specs.yaml`](./meta/argument_specs.yaml).
 | 
			
		||||
- `docker_compose__compose_file_content`: The content to deploy to the Compose file at `/ansible_docker_compose/compose.yaml`.
 | 
			
		||||
 | 
			
		||||
## `hosts`
 | 
			
		||||
## Optional Arguments
 | 
			
		||||
 | 
			
		||||
The `hosts` for this role need to be the machines, for which you want to make sure the given Compose file is deployed and all services of it are up-to-date and running.
 | 
			
		||||
- `docker_compose__env_file_content`: The content to deploy to the `.env` file at `/ansible_docker_compose/.env`.
 | 
			
		||||
- `docker_compose__configuration_files`: A list of configuration files to deploy to the `/ansible_docker_compose/configs/` directory.
 | 
			
		||||
- `docker_compose__configuration_files.*.name`: The name of the configuration file.
 | 
			
		||||
- `docker_compose__configuration_files.*.content`: The content to deploy to the configuration file.
 | 
			
		||||
 | 
			
		||||
## Links & Resources
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 != ""
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,31 +2,20 @@ argument_specs:
 | 
			
		|||
  main:
 | 
			
		||||
    options:
 | 
			
		||||
      docker_compose__compose_file_content:
 | 
			
		||||
        description: >-
 | 
			
		||||
          The content of the Compose file at
 | 
			
		||||
          `/ansible_docker_compose/compose.yaml`.
 | 
			
		||||
        type: str
 | 
			
		||||
        required: true
 | 
			
		||||
      docker_compose__env_file_content:
 | 
			
		||||
        description: >-
 | 
			
		||||
          The content of the .env file at
 | 
			
		||||
          `/ansible_docker_compose/.env`.
 | 
			
		||||
        type: str
 | 
			
		||||
        required: false
 | 
			
		||||
      docker_compose__configuration_files:
 | 
			
		||||
        description: >-
 | 
			
		||||
          A list of configuration files to be deployed in the
 | 
			
		||||
          `/ansible_docker_compose/configs/` directory.
 | 
			
		||||
        type: list
 | 
			
		||||
        elements: dict
 | 
			
		||||
        required: false
 | 
			
		||||
        default: [ ]
 | 
			
		||||
        options:
 | 
			
		||||
          name:
 | 
			
		||||
            description: The name of the configuration file.
 | 
			
		||||
            type: str
 | 
			
		||||
            required: true
 | 
			
		||||
          content:
 | 
			
		||||
            description: The content of the configuration file.
 | 
			
		||||
            type: str
 | 
			
		||||
            required: true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,3 @@
 | 
			
		|||
---
 | 
			
		||||
dependencies:
 | 
			
		||||
  - role: distribution_check
 | 
			
		||||
    vars:
 | 
			
		||||
      distribution_check__distribution_support_spec:
 | 
			
		||||
        - name: Debian
 | 
			
		||||
          major_versions:
 | 
			
		||||
            - 11
 | 
			
		||||
            - 12
 | 
			
		||||
  - role: docker
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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