From 68913da3b6de1fb9a93795b461449ee40f4cbc7f Mon Sep 17 00:00:00 2001 From: Thomas Daley Date: Mon, 15 May 2023 12:43:54 -0700 Subject: [PATCH 01/12] Change the "classic" role import default behavior to configur and install --- tasks/main.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tasks/main.yaml b/tasks/main.yaml index ff4bd57..eb34456 100644 --- a/tasks/main.yaml +++ b/tasks/main.yaml @@ -3,3 +3,6 @@ - include_role: name: docker + +- include_tasks: configure.yaml +- include_tasks: deploy.yaml From d158ebd4e07636d4eef2b89e0a03bc07e649ecc9 Mon Sep 17 00:00:00 2001 From: Thomas Daley Date: Fri, 19 May 2023 20:33:48 -0700 Subject: [PATCH 02/12] Add ability to supply custom file provider dynamic configuration to traefik --- defaults/main.yaml | 2 ++ tasks/configure.yaml | 11 ++++++++--- tasks/deploy.yaml | 7 +++---- templates/{traefik.yaml => certs.yaml} | 0 templates/docker-compose.yaml | 2 +- vars/main.yaml | 2 ++ 6 files changed, 16 insertions(+), 8 deletions(-) rename templates/{traefik.yaml => certs.yaml} (100%) create mode 100644 vars/main.yaml diff --git a/defaults/main.yaml b/defaults/main.yaml index ea2fae6..6c77961 100644 --- a/defaults/main.yaml +++ b/defaults/main.yaml @@ -1,6 +1,8 @@ traefik_certs: [] +traefik_config: {} traefik_network: traefik_net + # username: admin # password: traefik traefik_dashboard: yes diff --git a/tasks/configure.yaml b/tasks/configure.yaml index ce57d67..438d01d 100644 --- a/tasks/configure.yaml +++ b/tasks/configure.yaml @@ -35,10 +35,15 @@ label: "{{ item.common_name }}.key" when: traefik_certs is defined -- name: 'Render dynamic configuration to {{ config_dir }}/dynamic/traefik.yaml' +- name: 'Render dynamic configuration for TLS Certs to {{ config_dir }}/dynamic/certs.yaml' template: - src: traefik.yaml - dest: "{{ config_dir }}/dynamic/traefik.yaml" + src: certs.yaml + dest: "{{ config_dir }}/dynamic/certs.yaml" + +- name: 'Copy dynamic configuration from variable to {{ config_dir }}/dynamic/config.yaml' + copy: + content: '{{ traefik_config }}' + dest: "{{ config_dir }}/dynamic/config.yaml" - name: Allow port 80 (HTTP) ufw: diff --git a/tasks/deploy.yaml b/tasks/deploy.yaml index 3958662..7ba2bc5 100644 --- a/tasks/deploy.yaml +++ b/tasks/deploy.yaml @@ -11,8 +11,7 @@ docker_compose_template: docker-compose.yaml # TODO: Look into this more, Do we still need this? Enable hot reload? -# We are now mounting the entire config the file directory, instead of just the file, to avoid inode linking issue -# Are we using overlay2? https://docs.docker.com/storage/storagedriver/overlayfs-driver/ -- name: Restart the service to pick up new certificates +# https://doc.traefik.io/traefik/providers/file/#provider-configuration +- name: Restart the service to pick up new dynamic configs shell: docker service update --force {{ repository }}_{{ version }}_proxy - when: traefik_certs + when: traefik_certs or traefik_dynamic_config diff --git a/templates/traefik.yaml b/templates/certs.yaml similarity index 100% rename from templates/traefik.yaml rename to templates/certs.yaml diff --git a/templates/docker-compose.yaml b/templates/docker-compose.yaml index 60f6c16..93496a5 100644 --- a/templates/docker-compose.yaml +++ b/templates/docker-compose.yaml @@ -19,7 +19,7 @@ services: - CF_API_EMAIL={{ lookup("env", "CF_API_EMAIL") }} - CF_DNS_API_TOKEN={{ lookup("env", "CF_DNS_API_TOKEN") }} command: - # observability (logging) + # Logging - '--log.level=INFO' - '--accesslog=true' diff --git a/vars/main.yaml b/vars/main.yaml new file mode 100644 index 0000000..37026b7 --- /dev/null +++ b/vars/main.yaml @@ -0,0 +1,2 @@ +app_name: traefik +docker_service: proxy From e7faedd0b1bad346988c583157d916610691f880 Mon Sep 17 00:00:00 2001 From: Thomas Daley Date: Sat, 20 May 2023 07:56:54 -0700 Subject: [PATCH 03/12] Use docker_service variable --- tasks/deploy.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tasks/deploy.yaml b/tasks/deploy.yaml index 7ba2bc5..59074c4 100644 --- a/tasks/deploy.yaml +++ b/tasks/deploy.yaml @@ -7,11 +7,11 @@ - include_role: name: docker tasks_from: stack_deploy - vars: - docker_compose_template: docker-compose.yaml -# TODO: Look into this more, Do we still need this? Enable hot reload? -# https://doc.traefik.io/traefik/providers/file/#provider-configuration -- name: Restart the service to pick up new dynamic configs - shell: docker service update --force {{ repository }}_{{ version }}_proxy - when: traefik_certs or traefik_dynamic_config +# force reload to pick up new config file changes +- when: traefik_certs + include_role: + name: docker + tasks_from: service_update + vars: + options: --force From 4c532901bdb8a9c5cda153c5d49ed113714dbb35 Mon Sep 17 00:00:00 2001 From: Thomas Daley Date: Sat, 20 May 2023 08:00:22 -0700 Subject: [PATCH 04/12] add another condition --- tasks/deploy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/deploy.yaml b/tasks/deploy.yaml index 59074c4..63f031e 100644 --- a/tasks/deploy.yaml +++ b/tasks/deploy.yaml @@ -9,7 +9,7 @@ tasks_from: stack_deploy # force reload to pick up new config file changes -- when: traefik_certs +- when: traefik_certs or traefik_config include_role: name: docker tasks_from: service_update From 6dc4b6b3d4e33b62b9ff0d55d2295f089b5189e3 Mon Sep 17 00:00:00 2001 From: Thomas Daley Date: Sat, 20 May 2023 08:26:43 -0700 Subject: [PATCH 05/12] Add better defaults --- defaults/main.yaml | 7 ++++--- templates/docker-compose.yaml | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/defaults/main.yaml b/defaults/main.yaml index 6c77961..a34eb63 100644 --- a/defaults/main.yaml +++ b/defaults/main.yaml @@ -3,9 +3,10 @@ traefik_config: {} traefik_network: traefik_net -# username: admin -# password: traefik -traefik_dashboard: yes +# default username: admin +# default password: traefik +traefik_dashboard: no +traefik_host: localhost traefik_htpasswd: admin:{SHA}qD4s5Uu+8772OqfwKwjb2n/a5MU= traefik_trusted_ips: [] diff --git a/templates/docker-compose.yaml b/templates/docker-compose.yaml index 93496a5..8e8e79e 100644 --- a/templates/docker-compose.yaml +++ b/templates/docker-compose.yaml @@ -91,14 +91,14 @@ services: {% endif %} # router rules must be defined within a single docker label - - traefik.http.routers.dashboard.rule=Host(`{{ host }}`) + - traefik.http.routers.dashboard.rule=Host(`{{ traefik_host }}`) # basic-auth middleware - traefik.http.middlewares.dashboard-auth.basicauth.users={{ traefik_htpasswd }} # redirect /dashboard to /dashboard/ - - traefik.http.middlewares.dashboard-redirect.redirectregex.regex=^https://{{ host | replace('.', '\.') }}$$ - - traefik.http.middlewares.dashboard-redirect.redirectregex.replacement=https://{{ host }}/dashboard/ + - traefik.http.middlewares.dashboard-redirect.redirectregex.regex=^https://{{ traefik_host | replace('.', '\.') }}$$ + - traefik.http.middlewares.dashboard-redirect.redirectregex.replacement=https://{{ traefik_host }}/dashboard/ - traefik.http.middlewares.dashboard-redirect.redirectregex.permanent=false # assign middlewares (order matters) From cee11e4e80d44f7f48d5117493deeb1219277d9e Mon Sep 17 00:00:00 2001 From: Thomas Daley Date: Sat, 20 May 2023 10:25:13 -0700 Subject: [PATCH 06/12] clean up --- meta/main.yaml | 5 +++-- templates/docker-compose.yaml | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/meta/main.yaml b/meta/main.yaml index 6a71c34..3be652c 100644 --- a/meta/main.yaml +++ b/meta/main.yaml @@ -2,7 +2,7 @@ galaxy_info: author: Thomas Daley description: Traefik reusable functionality - min_ansible_version: 2.11 + min_ansible_version: 2.14 platforms: - name: Ubuntu versions: @@ -21,7 +21,8 @@ dependencies: scm: git src: "git@github.com:Diesel-Net/ansible-role-application.git" version: 2.0.0 + - name: docker scm: git src: "git@github.com:Diesel-Net/ansible-role-docker.git" - version: 2.0.0 + version: 2.0.2 diff --git a/templates/docker-compose.yaml b/templates/docker-compose.yaml index 8e8e79e..2727e18 100644 --- a/templates/docker-compose.yaml +++ b/templates/docker-compose.yaml @@ -16,8 +16,8 @@ services: - 80:80 - 443:443 environment: - - CF_API_EMAIL={{ lookup("env", "CF_API_EMAIL") }} - - CF_DNS_API_TOKEN={{ lookup("env", "CF_DNS_API_TOKEN") }} + - CF_API_EMAIL={{ lookup("env", "CLOUDFLARE_API_EMAIL") }} + - CF_DNS_API_TOKEN={{ lookup("env", "CLOUDFLARE_DNS_API_TOKEN") }} command: # Logging - '--log.level=INFO' From 3f9aec176cf35114d9ce3216de7712ed25332efc Mon Sep 17 00:00:00 2001 From: Thomas Daley Date: Sat, 20 May 2023 12:37:57 -0700 Subject: [PATCH 07/12] Add better default for traefik hostnames --- defaults/main.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defaults/main.yaml b/defaults/main.yaml index a34eb63..007907e 100644 --- a/defaults/main.yaml +++ b/defaults/main.yaml @@ -6,7 +6,7 @@ traefik_network: traefik_net # default username: admin # default password: traefik traefik_dashboard: no -traefik_host: localhost +traefik_host: 'traefik.{{ inventory_hostname }}' traefik_htpasswd: admin:{SHA}qD4s5Uu+8772OqfwKwjb2n/a5MU= traefik_trusted_ips: [] From 8b1e539af381e243365d7807bf5d0187982d6083 Mon Sep 17 00:00:00 2001 From: Thomas Daley Date: Sat, 20 May 2023 13:54:08 -0700 Subject: [PATCH 08/12] more flexibility --- defaults/main.yaml | 3 +++ templates/docker-compose.yaml | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/defaults/main.yaml b/defaults/main.yaml index 007907e..5420862 100644 --- a/defaults/main.yaml +++ b/defaults/main.yaml @@ -11,3 +11,6 @@ traefik_htpasswd: admin:{SHA}qD4s5Uu+8772OqfwKwjb2n/a5MU= traefik_trusted_ips: [] traefik_acme_resolvers: [] + +cf_api_email: '{{ lookup("env", "CF_API_EMAIL") }}' +cf_dns_api_token: '{{ lookup("env", "CF_DNS_API_TOKEN") }}' diff --git a/templates/docker-compose.yaml b/templates/docker-compose.yaml index 2727e18..3e7b2b6 100644 --- a/templates/docker-compose.yaml +++ b/templates/docker-compose.yaml @@ -16,8 +16,8 @@ services: - 80:80 - 443:443 environment: - - CF_API_EMAIL={{ lookup("env", "CLOUDFLARE_API_EMAIL") }} - - CF_DNS_API_TOKEN={{ lookup("env", "CLOUDFLARE_DNS_API_TOKEN") }} + - 'CF_API_EMAIL={{ cf_api_email }}' + - 'CF_DNS_API_TOKEN={{ cf_dns_api_token }}' command: # Logging - '--log.level=INFO' From 936819f67189e896755cd8d481aacfd0b65c89cb Mon Sep 17 00:00:00 2001 From: Thomas Daley Date: Sat, 20 May 2023 13:56:40 -0700 Subject: [PATCH 09/12] Force reload --- tasks/deploy.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tasks/deploy.yaml b/tasks/deploy.yaml index 63f031e..d5306ce 100644 --- a/tasks/deploy.yaml +++ b/tasks/deploy.yaml @@ -8,8 +8,7 @@ name: docker tasks_from: stack_deploy -# force reload to pick up new config file changes -- when: traefik_certs or traefik_config +# force reload include_role: name: docker tasks_from: service_update From 16fa5e8cd0448e6fddd292509e0d4dcfa532534b Mon Sep 17 00:00:00 2001 From: Thomas Daley Date: Sat, 20 May 2023 13:59:26 -0700 Subject: [PATCH 10/12] upgrade to 2.10 --- templates/docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/docker-compose.yaml b/templates/docker-compose.yaml index 3e7b2b6..2444add 100644 --- a/templates/docker-compose.yaml +++ b/templates/docker-compose.yaml @@ -4,7 +4,7 @@ services: proxy: - image: traefik:2.9.5 + image: traefik:2.10.1 volumes: - /etc/localtime:/etc/localtime - /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt From f09440211868526eb84e8f22320f823c2da8c430 Mon Sep 17 00:00:00 2001 From: Thomas Daley Date: Sat, 20 May 2023 14:03:18 -0700 Subject: [PATCH 11/12] Bump --- meta/main.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meta/main.yaml b/meta/main.yaml index 3be652c..517861e 100644 --- a/meta/main.yaml +++ b/meta/main.yaml @@ -20,9 +20,9 @@ dependencies: - name: application scm: git src: "git@github.com:Diesel-Net/ansible-role-application.git" - version: 2.0.0 + version: 2.1.0 - name: docker scm: git src: "git@github.com:Diesel-Net/ansible-role-docker.git" - version: 2.0.2 + version: 2.0.3 From d480bd3e352cc58869fe594eea7eb6fa282feae3 Mon Sep 17 00:00:00 2001 From: Thomas Daley Date: Sat, 20 May 2023 14:04:39 -0700 Subject: [PATCH 12/12] aha --- tasks/deploy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/deploy.yaml b/tasks/deploy.yaml index d5306ce..5fef3cd 100644 --- a/tasks/deploy.yaml +++ b/tasks/deploy.yaml @@ -9,7 +9,7 @@ tasks_from: stack_deploy # force reload - include_role: +- include_role: name: docker tasks_from: service_update vars: