From b852c75137090356afcae7822adbb2d7539d74c6 Mon Sep 17 00:00:00 2001 From: Anson Shie Date: Fri, 10 Oct 2025 22:55:28 +0800 Subject: [PATCH 1/5] Enhance Traefik configuration in playbooks - Added dynamic Traefik configuration for a11yvillage and coseeing backends and frontends. - Introduced new source configuration files for Traefik. - Implemented logic to ensure Traefik config directory exists and handles loading and writing of Traefik configurations. - Updated playbooks to utilize dynamic label generation for Traefik routers and resolvers. --- ansible_yaml/a11yvillage-be-playbook.yml | 58 +++++++++++++++++++++--- ansible_yaml/a11yvillage-fe-playbook.yml | 38 ++++++++++++++++ ansible_yaml/coseeing-be-playbook.yml | 56 ++++++++++++++++++++--- ansible_yaml/coseeing-fe-playbook.yml | 38 ++++++++++++++++ ansible_yaml/extra/a11yvillage-be.yml | 10 ++++ ansible_yaml/extra/coseeing-be.yml | 10 ++++ 6 files changed, 198 insertions(+), 12 deletions(-) create mode 100644 ansible_yaml/extra/a11yvillage-be.yml create mode 100644 ansible_yaml/extra/coseeing-be.yml diff --git a/ansible_yaml/a11yvillage-be-playbook.yml b/ansible_yaml/a11yvillage-be-playbook.yml index 51ddb3f..b6ba74b 100644 --- a/ansible_yaml/a11yvillage-be-playbook.yml +++ b/ansible_yaml/a11yvillage-be-playbook.yml @@ -12,6 +12,8 @@ certbot_source_directory: /usr/local/certbot-src certbot_executable_path: "{{ certbot_source_directory }}/venv/bin/certbot" domain: api.a11yvillage.coseeing.org + traefik_certresolver: a11yvillage-api + traefik_router_prefix: a11yvillage-api-service-- email: tsengwoody@coseeing.org ecr_location: 622913514517.dkr.ecr.ap-northeast-1.amazonaws.com image_name: "{{ ecr_location }}/a11yvillage-be:{{ deploy_tag }}" @@ -83,6 +85,17 @@ mode: '0755' become: true + - name: Load Traefik source config (a11yvillage-be) + set_fact: + traefik_source_config: "{{ lookup('file', playbook_dir + '/extra/a11yvillage-be.yml') | from_yaml }}" + + - name: Transform Traefik config (placeholders -> prefix -> labels) + set_fact: + traefik_labels_list: "{{ (traefik_source_config + | replace_placeholders(domain, traefik_certresolver) + | apply_prefix(traefik_router_prefix) + ) | flatten_to_labels }}" + - name: Create .env file copy: dest: "{{ docker_compose_dir }}/.env" @@ -109,12 +122,7 @@ networks: - default - entry - labels: - - "traefik.enable=true" - - "traefik.http.routers.api-a11yvillage.rule=Host(`api.a11yvillage.coseeing.org`)" - - "traefik.http.routers.api-a11yvillage.entrypoints=websecure" - - "traefik.http.routers.api-a11yvillage.tls.certresolver=api-a11yvillageresolver" - - "traefik.docker.network=entry" + labels: {{ (['traefik.enable=true', 'traefik.docker.network=entry'] + traefik_labels_list) | to_json }} deploy: resources: limits: @@ -137,6 +145,44 @@ driver: bridge name: entry + - name: Ensure Traefik config directory exists + file: + path: /data/entry/entry + state: directory + mode: '0755' + become: true + + - name: Check if Traefik config exists + stat: + path: /data/entry/entry/traefik.yml + register: traefik_file + + - name: Load Traefik config when present + slurp: + src: /data/entry/entry/traefik.yml + register: traefik_slurp + when: traefik_file.stat.exists + + - name: Initialize Traefik config fact + set_fact: + traefik_config: "{{ (traefik_slurp.content | b64decode | from_yaml) if traefik_file.stat.exists else {} }}" + + - name: Ensure certificatesResolvers map exists + set_fact: + traefik_config: "{{ traefik_config | combine({'certificatesResolvers': (traefik_config.certificatesResolvers | default({}))}, recursive=True) }}" + + - name: Ensure resolver block exists in Traefik config + set_fact: + traefik_config: "{{ traefik_config | combine({'certificatesResolvers': { (traefik_certresolver): { 'acme': { 'tlsChallenge': {}, 'email': email, 'storage': '/letsencrypt/' + traefik_certresolver + '.json' } }}}, recursive=True) }}" + when: (traefik_config.certificatesResolvers | default({})).get(traefik_certresolver) is not defined + + - name: Write back Traefik config + copy: + dest: /data/entry/entry/traefik.yml + content: "{{ traefik_config | to_nice_yaml }}" + mode: '0644' + become: true + - name: Update the repository cache and update package "unzip" to latest version using default apt: name: unzip diff --git a/ansible_yaml/a11yvillage-fe-playbook.yml b/ansible_yaml/a11yvillage-fe-playbook.yml index 8ab8315..5283d63 100644 --- a/ansible_yaml/a11yvillage-fe-playbook.yml +++ b/ansible_yaml/a11yvillage-fe-playbook.yml @@ -110,6 +110,44 @@ driver: bridge name: entry + - name: Ensure Traefik config directory exists + file: + path: /data/entry/entry + state: directory + mode: '0755' + become: true + + - name: Check if Traefik config exists + stat: + path: /data/entry/entry/traefik.yml + register: traefik_file + + - name: Load Traefik config when present + slurp: + src: /data/entry/entry/traefik.yml + register: traefik_slurp + when: traefik_file.stat.exists + + - name: Initialize Traefik config fact + set_fact: + traefik_config: "{{ (traefik_slurp.content | b64decode | from_yaml) if traefik_file.stat.exists else {} }}" + + - name: Ensure certificatesResolvers map exists + set_fact: + traefik_config: "{{ traefik_config | combine({'certificatesResolvers': (traefik_config.certificatesResolvers | default({}))}, recursive=True) }}" + + - name: Ensure resolver block exists in Traefik config (a11yvillage-fe) + set_fact: + traefik_config: "{{ traefik_config | combine({'certificatesResolvers': { (traefik_certresolver): { 'acme': { 'tlsChallenge': {}, 'email': email, 'storage': '/letsencrypt/' + traefik_certresolver + '.json' } }}}, recursive=True) }}" + when: (traefik_config.certificatesResolvers | default({})).get(traefik_certresolver) is not defined + + - name: Write back Traefik config + copy: + dest: /data/entry/entry/traefik.yml + content: "{{ traefik_config | to_nice_yaml }}" + mode: '0644' + become: true + - name: Update the repository cache and update package "unzip" to latest version using default apt: name: unzip diff --git a/ansible_yaml/coseeing-be-playbook.yml b/ansible_yaml/coseeing-be-playbook.yml index a8a005d..0221088 100644 --- a/ansible_yaml/coseeing-be-playbook.yml +++ b/ansible_yaml/coseeing-be-playbook.yml @@ -12,6 +12,8 @@ certbot_source_directory: /usr/local/certbot-src certbot_executable_path: "{{ certbot_source_directory }}/venv/bin/certbot" domain: api.coseeing.org + traefik_certresolver: coseeing-api + traefik_router_prefix: coseeing-api-service-- email: tsengwoody@coseeing.org ecr_location: 622913514517.dkr.ecr.ap-northeast-1.amazonaws.com image_name: "{{ ecr_location }}/coseeing-be:{{ deploy_tag }}" @@ -83,6 +85,17 @@ mode: '0755' become: true + - name: Load Traefik source config (coseeing-be) + set_fact: + traefik_source_config: "{{ lookup('file', playbook_dir + '/extra/coseeing-be.yml') | from_yaml }}" + + - name: Transform Traefik config (placeholders -> prefix -> labels) + set_fact: + traefik_labels_list: "{{ (traefik_source_config + | replace_placeholders(domain, traefik_certresolver) + | apply_prefix(traefik_router_prefix) + ) | flatten_to_labels }}" + - name: Create .env file copy: dest: "{{ docker_compose_dir }}/.env" @@ -110,12 +123,7 @@ networks: - default - entry - labels: - - "traefik.enable=true" - - "traefik.http.routers.api-coseeing.rule=Host(`api.coseeing.org`)" - - "traefik.http.routers.api-coseeing.entrypoints=websecure" - - "traefik.http.routers.api-coseeing.tls.certresolver=api-coseeing" - - "traefik.docker.network=entry" + labels: {{ (['traefik.enable=true', 'traefik.docker.network=entry'] + traefik_labels_list) | to_json }} deploy: resources: limits: @@ -139,6 +147,42 @@ driver: bridge name: entry + - name: Ensure Traefik config directory exists + file: + path: /data/entry/entry + state: directory + mode: '0755' + + - name: Check if Traefik config exists + stat: + path: /data/entry/entry/traefik.yml + register: traefik_file + + - name: Load Traefik config when present + slurp: + src: /data/entry/entry/traefik.yml + register: traefik_slurp + when: traefik_file.stat.exists + + - name: Initialize Traefik config fact + set_fact: + traefik_config: "{{ (traefik_slurp.content | b64decode | from_yaml) if traefik_file.stat.exists else {} }}" + + - name: Ensure certificatesResolvers map exists + set_fact: + traefik_config: "{{ traefik_config | combine({'certificatesResolvers': (traefik_config.certificatesResolvers | default({}))}, recursive=True) }}" + + - name: Ensure resolver block exists in Traefik config + set_fact: + traefik_config: "{{ traefik_config | combine({'certificatesResolvers': { (traefik_certresolver): { 'acme': { 'tlsChallenge': {}, 'email': email, 'storage': '/letsencrypt/' + traefik_certresolver + '.json' } }}}, recursive=True) }}" + when: (traefik_config.certificatesResolvers | default({})).get(traefik_certresolver) is not defined + + - name: Write back Traefik config + copy: + dest: /data/entry/entry/traefik.yml + content: "{{ traefik_config | to_nice_yaml }}" + mode: '0644' + - name: Update the repository cache and update package "unzip" to latest version using default apt: name: unzip diff --git a/ansible_yaml/coseeing-fe-playbook.yml b/ansible_yaml/coseeing-fe-playbook.yml index 1d3529a..47a822a 100644 --- a/ansible_yaml/coseeing-fe-playbook.yml +++ b/ansible_yaml/coseeing-fe-playbook.yml @@ -110,6 +110,44 @@ driver: bridge name: entry + - name: Ensure Traefik config directory exists + file: + path: /data/entry/entry + state: directory + mode: '0755' + become: true + + - name: Check if Traefik config exists + stat: + path: /data/entry/entry/traefik.yml + register: traefik_file + + - name: Load Traefik config when present + slurp: + src: /data/entry/entry/traefik.yml + register: traefik_slurp + when: traefik_file.stat.exists + + - name: Initialize Traefik config fact + set_fact: + traefik_config: "{{ (traefik_slurp.content | b64decode | from_yaml) if traefik_file.stat.exists else {} }}" + + - name: Ensure certificatesResolvers map exists + set_fact: + traefik_config: "{{ traefik_config | combine({'certificatesResolvers': (traefik_config.certificatesResolvers | default({}))}, recursive=True) }}" + + - name: Ensure resolver block exists in Traefik config (coseeing-fe) + set_fact: + traefik_config: "{{ traefik_config | combine({'certificatesResolvers': { (traefik_certresolver): { 'acme': { 'tlsChallenge': {}, 'email': email, 'storage': '/letsencrypt/' + traefik_certresolver + '.json' } }}}, recursive=True) }}" + when: (traefik_config.certificatesResolvers | default({})).get(traefik_certresolver) is not defined + + - name: Write back Traefik config + copy: + dest: /data/entry/entry/traefik.yml + content: "{{ traefik_config | to_nice_yaml }}" + mode: '0644' + become: true + - name: Update the repository cache and update package "unzip" to latest version using default apt: name: unzip diff --git a/ansible_yaml/extra/a11yvillage-be.yml b/ansible_yaml/extra/a11yvillage-be.yml new file mode 100644 index 0000000..0ce3ff8 --- /dev/null +++ b/ansible_yaml/extra/a11yvillage-be.yml @@ -0,0 +1,10 @@ +http: + routers: + https: + rule: Host(`(`host`)`) + entrypoints: websecure + tls: + certresolver: (`certresolver`) + http: + rule: Host(`(`host`)`) + entrypoints: webinsecure \ No newline at end of file diff --git a/ansible_yaml/extra/coseeing-be.yml b/ansible_yaml/extra/coseeing-be.yml new file mode 100644 index 0000000..0ce3ff8 --- /dev/null +++ b/ansible_yaml/extra/coseeing-be.yml @@ -0,0 +1,10 @@ +http: + routers: + https: + rule: Host(`(`host`)`) + entrypoints: websecure + tls: + certresolver: (`certresolver`) + http: + rule: Host(`(`host`)`) + entrypoints: webinsecure \ No newline at end of file From 54489102bacb892e70b2a268cd4df2bded64c150 Mon Sep 17 00:00:00 2001 From: Anson Shie Date: Fri, 10 Oct 2025 23:06:31 +0800 Subject: [PATCH 2/5] Refactor Traefik config condition in playbooks - Updated the condition for ensuring the resolver block exists in Traefik configuration across a11yvillage and coseeing playbooks. - Changed the condition from checking for undefined resolvers to checking for the absence of the resolver in the configuration. --- ansible_yaml/a11yvillage-be-playbook.yml | 2 +- ansible_yaml/a11yvillage-fe-playbook.yml | 2 +- ansible_yaml/coseeing-be-playbook.yml | 2 +- ansible_yaml/coseeing-fe-playbook.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible_yaml/a11yvillage-be-playbook.yml b/ansible_yaml/a11yvillage-be-playbook.yml index b6ba74b..bfabd3e 100644 --- a/ansible_yaml/a11yvillage-be-playbook.yml +++ b/ansible_yaml/a11yvillage-be-playbook.yml @@ -174,7 +174,7 @@ - name: Ensure resolver block exists in Traefik config set_fact: traefik_config: "{{ traefik_config | combine({'certificatesResolvers': { (traefik_certresolver): { 'acme': { 'tlsChallenge': {}, 'email': email, 'storage': '/letsencrypt/' + traefik_certresolver + '.json' } }}}, recursive=True) }}" - when: (traefik_config.certificatesResolvers | default({})).get(traefik_certresolver) is not defined + when: traefik_certresolver not in (traefik_config.certificatesResolvers | default({})) - name: Write back Traefik config copy: diff --git a/ansible_yaml/a11yvillage-fe-playbook.yml b/ansible_yaml/a11yvillage-fe-playbook.yml index 5283d63..2461752 100644 --- a/ansible_yaml/a11yvillage-fe-playbook.yml +++ b/ansible_yaml/a11yvillage-fe-playbook.yml @@ -139,7 +139,7 @@ - name: Ensure resolver block exists in Traefik config (a11yvillage-fe) set_fact: traefik_config: "{{ traefik_config | combine({'certificatesResolvers': { (traefik_certresolver): { 'acme': { 'tlsChallenge': {}, 'email': email, 'storage': '/letsencrypt/' + traefik_certresolver + '.json' } }}}, recursive=True) }}" - when: (traefik_config.certificatesResolvers | default({})).get(traefik_certresolver) is not defined + when: traefik_certresolver not in (traefik_config.certificatesResolvers | default({})) - name: Write back Traefik config copy: diff --git a/ansible_yaml/coseeing-be-playbook.yml b/ansible_yaml/coseeing-be-playbook.yml index 0221088..a1b2bdf 100644 --- a/ansible_yaml/coseeing-be-playbook.yml +++ b/ansible_yaml/coseeing-be-playbook.yml @@ -175,7 +175,7 @@ - name: Ensure resolver block exists in Traefik config set_fact: traefik_config: "{{ traefik_config | combine({'certificatesResolvers': { (traefik_certresolver): { 'acme': { 'tlsChallenge': {}, 'email': email, 'storage': '/letsencrypt/' + traefik_certresolver + '.json' } }}}, recursive=True) }}" - when: (traefik_config.certificatesResolvers | default({})).get(traefik_certresolver) is not defined + when: traefik_certresolver not in (traefik_config.certificatesResolvers | default({})) - name: Write back Traefik config copy: diff --git a/ansible_yaml/coseeing-fe-playbook.yml b/ansible_yaml/coseeing-fe-playbook.yml index 47a822a..d49ef04 100644 --- a/ansible_yaml/coseeing-fe-playbook.yml +++ b/ansible_yaml/coseeing-fe-playbook.yml @@ -139,7 +139,7 @@ - name: Ensure resolver block exists in Traefik config (coseeing-fe) set_fact: traefik_config: "{{ traefik_config | combine({'certificatesResolvers': { (traefik_certresolver): { 'acme': { 'tlsChallenge': {}, 'email': email, 'storage': '/letsencrypt/' + traefik_certresolver + '.json' } }}}, recursive=True) }}" - when: (traefik_config.certificatesResolvers | default({})).get(traefik_certresolver) is not defined + when: traefik_certresolver not in (traefik_config.certificatesResolvers | default({})) - name: Write back Traefik config copy: From b26485c176a4f6ec7161a498388e827e9c9938eb Mon Sep 17 00:00:00 2001 From: Anson Shie Date: Fri, 10 Oct 2025 23:19:29 +0800 Subject: [PATCH 3/5] Refactor Traefik path configuration in playbooks - Introduced a variable for the Traefik path in a11yvillage, coseeing, and their respective frontends. - Updated all relevant tasks to use the new variable for consistency and maintainability. - Added a task to restart the Traefik service after configuration changes. --- ansible_yaml/a11yvillage-be-playbook.yml | 19 +++++++++++++++---- ansible_yaml/a11yvillage-fe-playbook.yml | 19 +++++++++++++++---- ansible_yaml/coseeing-be-playbook.yml | 19 +++++++++++++++---- ansible_yaml/coseeing-fe-playbook.yml | 19 +++++++++++++++---- 4 files changed, 60 insertions(+), 16 deletions(-) diff --git a/ansible_yaml/a11yvillage-be-playbook.yml b/ansible_yaml/a11yvillage-be-playbook.yml index bfabd3e..55e64cb 100644 --- a/ansible_yaml/a11yvillage-be-playbook.yml +++ b/ansible_yaml/a11yvillage-be-playbook.yml @@ -17,6 +17,7 @@ email: tsengwoody@coseeing.org ecr_location: 622913514517.dkr.ecr.ap-northeast-1.amazonaws.com image_name: "{{ ecr_location }}/a11yvillage-be:{{ deploy_tag }}" + traefik_path: /data/entry/entry collections: - community.docker - community.aws @@ -147,19 +148,19 @@ - name: Ensure Traefik config directory exists file: - path: /data/entry/entry + path: "{{ traefik_path }}" state: directory mode: '0755' become: true - name: Check if Traefik config exists stat: - path: /data/entry/entry/traefik.yml + path: "{{ traefik_path }}/traefik.yml" register: traefik_file - name: Load Traefik config when present slurp: - src: /data/entry/entry/traefik.yml + src: "{{ traefik_path }}/traefik.yml" register: traefik_slurp when: traefik_file.stat.exists @@ -178,7 +179,7 @@ - name: Write back Traefik config copy: - dest: /data/entry/entry/traefik.yml + dest: "{{ traefik_path }}/traefik.yml" content: "{{ traefik_config | to_nice_yaml }}" mode: '0644' become: true @@ -226,3 +227,13 @@ - name: Show compose_result Detail info debug: var: compose_result + + - name: Restart traefik service + docker_compose_v2: + project_src: "{{ traefik_path }}" + state: present + register: traefik_result + + - name: Show traefik_result Detail info + debug: + var: traefik_result \ No newline at end of file diff --git a/ansible_yaml/a11yvillage-fe-playbook.yml b/ansible_yaml/a11yvillage-fe-playbook.yml index 2461752..e23126b 100644 --- a/ansible_yaml/a11yvillage-fe-playbook.yml +++ b/ansible_yaml/a11yvillage-fe-playbook.yml @@ -17,6 +17,7 @@ email: tsengwoody@coseeing.org ecr_location: 622913514517.dkr.ecr.ap-northeast-1.amazonaws.com image_name: "{{ ecr_location }}/a11yvillage-fe:{{ deploy_tag }}" + traefik_path: /data/entry/entry collections: - community.docker - community.aws @@ -112,19 +113,19 @@ - name: Ensure Traefik config directory exists file: - path: /data/entry/entry + path: "{{ traefik_path }}" state: directory mode: '0755' become: true - name: Check if Traefik config exists stat: - path: /data/entry/entry/traefik.yml + path: "{{ traefik_path }}/traefik.yml" register: traefik_file - name: Load Traefik config when present slurp: - src: /data/entry/entry/traefik.yml + src: "{{ traefik_path }}/traefik.yml" register: traefik_slurp when: traefik_file.stat.exists @@ -143,7 +144,7 @@ - name: Write back Traefik config copy: - dest: /data/entry/entry/traefik.yml + dest: "{{ traefik_path }}/traefik.yml" content: "{{ traefik_config | to_nice_yaml }}" mode: '0644' become: true @@ -191,3 +192,13 @@ - name: Show compose_result Detail info debug: var: compose_result + + - name: Restart traefik service + docker_compose_v2: + project_src: "{{ traefik_path }}" + state: present + register: traefik_result + + - name: Show traefik_result Detail info + debug: + var: traefik_result diff --git a/ansible_yaml/coseeing-be-playbook.yml b/ansible_yaml/coseeing-be-playbook.yml index a1b2bdf..a869795 100644 --- a/ansible_yaml/coseeing-be-playbook.yml +++ b/ansible_yaml/coseeing-be-playbook.yml @@ -17,6 +17,7 @@ email: tsengwoody@coseeing.org ecr_location: 622913514517.dkr.ecr.ap-northeast-1.amazonaws.com image_name: "{{ ecr_location }}/coseeing-be:{{ deploy_tag }}" + traefik_path: /data/entry/entry collections: - community.docker - community.aws @@ -149,18 +150,18 @@ - name: Ensure Traefik config directory exists file: - path: /data/entry/entry + path: "{{ traefik_path }}" state: directory mode: '0755' - name: Check if Traefik config exists stat: - path: /data/entry/entry/traefik.yml + path: "{{ traefik_path }}/traefik.yml" register: traefik_file - name: Load Traefik config when present slurp: - src: /data/entry/entry/traefik.yml + src: "{{ traefik_path }}/traefik.yml" register: traefik_slurp when: traefik_file.stat.exists @@ -179,7 +180,7 @@ - name: Write back Traefik config copy: - dest: /data/entry/entry/traefik.yml + dest: "{{ traefik_path }}/traefik.yml" content: "{{ traefik_config | to_nice_yaml }}" mode: '0644' @@ -226,3 +227,13 @@ - name: Show compose_result Detail info debug: var: compose_result + + - name: Restart traefik service + docker_compose_v2: + project_src: "{{ traefik_path }}" + state: present + register: traefik_result + + - name: Show traefik_result Detail info + debug: + var: traefik_result diff --git a/ansible_yaml/coseeing-fe-playbook.yml b/ansible_yaml/coseeing-fe-playbook.yml index d49ef04..a1903cf 100644 --- a/ansible_yaml/coseeing-fe-playbook.yml +++ b/ansible_yaml/coseeing-fe-playbook.yml @@ -17,6 +17,7 @@ email: tsengwoody@coseeing.org ecr_location: 622913514517.dkr.ecr.ap-northeast-1.amazonaws.com image_name: "{{ ecr_location }}/coseeing-fe:{{ deploy_tag }}" + traefik_path: /data/entry/entry collections: - community.docker - community.aws @@ -112,19 +113,19 @@ - name: Ensure Traefik config directory exists file: - path: /data/entry/entry + path: "{{ traefik_path }}" state: directory mode: '0755' become: true - name: Check if Traefik config exists stat: - path: /data/entry/entry/traefik.yml + path: "{{ traefik_path }}/traefik.yml" register: traefik_file - name: Load Traefik config when present slurp: - src: /data/entry/entry/traefik.yml + src: "{{ traefik_path }}/traefik.yml" register: traefik_slurp when: traefik_file.stat.exists @@ -143,7 +144,7 @@ - name: Write back Traefik config copy: - dest: /data/entry/entry/traefik.yml + dest: "{{ traefik_path }}/traefik.yml" content: "{{ traefik_config | to_nice_yaml }}" mode: '0644' become: true @@ -191,3 +192,13 @@ - name: Show compose_result Detail info debug: var: compose_result + + - name: Restart traefik service + docker_compose_v2: + project_src: "{{ traefik_path }}" + state: present + register: traefik_result + + - name: Show traefik_result Detail info + debug: + var: traefik_result From b10481bef9eae0036917c661d0a3246e4977798a Mon Sep 17 00:00:00 2001 From: Anson Shie Date: Fri, 10 Oct 2025 23:29:19 +0800 Subject: [PATCH 4/5] Update Traefik service restart state in playbooks - Changed the state of the Traefik service from 'present' to 'restarted' in a11yvillage and coseeing playbooks. - Specified the services to be restarted, ensuring proper service management during playbook execution. --- ansible_yaml/a11yvillage-be-playbook.yml | 4 +++- ansible_yaml/a11yvillage-fe-playbook.yml | 4 +++- ansible_yaml/coseeing-be-playbook.yml | 4 +++- ansible_yaml/coseeing-fe-playbook.yml | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/ansible_yaml/a11yvillage-be-playbook.yml b/ansible_yaml/a11yvillage-be-playbook.yml index 55e64cb..8ddc6f2 100644 --- a/ansible_yaml/a11yvillage-be-playbook.yml +++ b/ansible_yaml/a11yvillage-be-playbook.yml @@ -231,7 +231,9 @@ - name: Restart traefik service docker_compose_v2: project_src: "{{ traefik_path }}" - state: present + state: restarted + services: + - traefik register: traefik_result - name: Show traefik_result Detail info diff --git a/ansible_yaml/a11yvillage-fe-playbook.yml b/ansible_yaml/a11yvillage-fe-playbook.yml index e23126b..1a18869 100644 --- a/ansible_yaml/a11yvillage-fe-playbook.yml +++ b/ansible_yaml/a11yvillage-fe-playbook.yml @@ -196,7 +196,9 @@ - name: Restart traefik service docker_compose_v2: project_src: "{{ traefik_path }}" - state: present + state: restarted + services: + - traefik register: traefik_result - name: Show traefik_result Detail info diff --git a/ansible_yaml/coseeing-be-playbook.yml b/ansible_yaml/coseeing-be-playbook.yml index a869795..f0c406a 100644 --- a/ansible_yaml/coseeing-be-playbook.yml +++ b/ansible_yaml/coseeing-be-playbook.yml @@ -231,7 +231,9 @@ - name: Restart traefik service docker_compose_v2: project_src: "{{ traefik_path }}" - state: present + state: restarted + services: + - traefik register: traefik_result - name: Show traefik_result Detail info diff --git a/ansible_yaml/coseeing-fe-playbook.yml b/ansible_yaml/coseeing-fe-playbook.yml index a1903cf..28847bd 100644 --- a/ansible_yaml/coseeing-fe-playbook.yml +++ b/ansible_yaml/coseeing-fe-playbook.yml @@ -196,7 +196,9 @@ - name: Restart traefik service docker_compose_v2: project_src: "{{ traefik_path }}" - state: present + state: restarted + services: + - traefik register: traefik_result - name: Show traefik_result Detail info From e438a3f8b333090ac4af229827a1a2f43a225a27 Mon Sep 17 00:00:00 2001 From: Anson Shie Date: Fri, 10 Oct 2025 23:39:14 +0800 Subject: [PATCH 5/5] Add conditional checks for Traefik configuration updates in playbooks - Registered the result of writing the Traefik configuration in a11yvillage, coseeing, and their respective frontends. - Added conditional checks to only show the Traefik result if the configuration was changed, improving efficiency and clarity in playbook execution. --- ansible_yaml/a11yvillage-be-playbook.yml | 5 ++++- ansible_yaml/a11yvillage-fe-playbook.yml | 3 +++ ansible_yaml/coseeing-be-playbook.yml | 3 +++ ansible_yaml/coseeing-fe-playbook.yml | 3 +++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ansible_yaml/a11yvillage-be-playbook.yml b/ansible_yaml/a11yvillage-be-playbook.yml index 8ddc6f2..9a9105a 100644 --- a/ansible_yaml/a11yvillage-be-playbook.yml +++ b/ansible_yaml/a11yvillage-be-playbook.yml @@ -183,6 +183,7 @@ content: "{{ traefik_config | to_nice_yaml }}" mode: '0644' become: true + register: traefik_write_result - name: Update the repository cache and update package "unzip" to latest version using default apt: @@ -235,7 +236,9 @@ services: - traefik register: traefik_result + when: traefik_write_result.changed - name: Show traefik_result Detail info debug: - var: traefik_result \ No newline at end of file + var: traefik_result + when: traefik_write_result.changed \ No newline at end of file diff --git a/ansible_yaml/a11yvillage-fe-playbook.yml b/ansible_yaml/a11yvillage-fe-playbook.yml index 1a18869..83aeb54 100644 --- a/ansible_yaml/a11yvillage-fe-playbook.yml +++ b/ansible_yaml/a11yvillage-fe-playbook.yml @@ -148,6 +148,7 @@ content: "{{ traefik_config | to_nice_yaml }}" mode: '0644' become: true + register: traefik_write_result - name: Update the repository cache and update package "unzip" to latest version using default apt: @@ -200,7 +201,9 @@ services: - traefik register: traefik_result + when: traefik_write_result.changed - name: Show traefik_result Detail info debug: var: traefik_result + when: traefik_write_result.changed diff --git a/ansible_yaml/coseeing-be-playbook.yml b/ansible_yaml/coseeing-be-playbook.yml index f0c406a..53db7fb 100644 --- a/ansible_yaml/coseeing-be-playbook.yml +++ b/ansible_yaml/coseeing-be-playbook.yml @@ -183,6 +183,7 @@ dest: "{{ traefik_path }}/traefik.yml" content: "{{ traefik_config | to_nice_yaml }}" mode: '0644' + register: traefik_write_result - name: Update the repository cache and update package "unzip" to latest version using default apt: @@ -235,7 +236,9 @@ services: - traefik register: traefik_result + when: traefik_write_result.changed - name: Show traefik_result Detail info debug: var: traefik_result + when: traefik_write_result.changed diff --git a/ansible_yaml/coseeing-fe-playbook.yml b/ansible_yaml/coseeing-fe-playbook.yml index 28847bd..d8cbb33 100644 --- a/ansible_yaml/coseeing-fe-playbook.yml +++ b/ansible_yaml/coseeing-fe-playbook.yml @@ -148,6 +148,7 @@ content: "{{ traefik_config | to_nice_yaml }}" mode: '0644' become: true + register: traefik_write_result - name: Update the repository cache and update package "unzip" to latest version using default apt: @@ -200,7 +201,9 @@ services: - traefik register: traefik_result + when: traefik_write_result.changed - name: Show traefik_result Detail info debug: var: traefik_result + when: traefik_write_result.changed