From cbd4a06e88e2bca7afa8b1913796265310346f0a Mon Sep 17 00:00:00 2001 From: Pim Kunis Date: Wed, 3 May 2023 13:35:22 +0200 Subject: [PATCH] add swarm dashboard stack --- ansible/playbooks/stacks.yml | 1 + .../roles/swarm_dashboard/docker-stack.yml.j2 | 31 +++++++++++++++++++ ansible/roles/swarm_dashboard/tasks/main.yml | 15 +++++++++ 3 files changed, 47 insertions(+) create mode 100644 ansible/roles/swarm_dashboard/docker-stack.yml.j2 create mode 100644 ansible/roles/swarm_dashboard/tasks/main.yml diff --git a/ansible/playbooks/stacks.yml b/ansible/playbooks/stacks.yml index 210cb8a..c15c531 100644 --- a/ansible/playbooks/stacks.yml +++ b/ansible/playbooks/stacks.yml @@ -14,3 +14,4 @@ - {role: cyberchef, tags: cyberchef} - {role: inbucket, tags: inbucket} - {role: kms, tags: kms} + - {role: swarm_dashboard, tags: swarm_dashboard} diff --git a/ansible/roles/swarm_dashboard/docker-stack.yml.j2 b/ansible/roles/swarm_dashboard/docker-stack.yml.j2 new file mode 100644 index 0000000..a3f2336 --- /dev/null +++ b/ansible/roles/swarm_dashboard/docker-stack.yml.j2 @@ -0,0 +1,31 @@ +# vi: ft=yaml +version: "3" + +networks: + traefik: + external: true + +services: + dashboard: + image: charypar/swarm-dashboard + volumes: + - type: bind + source: /var/run/docker.sock + target: /var/run/docker.sock + environment: + PORT: 80 + networks: + - traefik + deploy: + placement: + constraints: + - node.role == manager + labels: + - traefik.enable=true + - traefik.http.routers.swarm-dashboard.entrypoints=localsecure + - traefik.http.routers.swarm-dashboard.rule=Host(`swarm.pim.kunis.nl`) + - traefik.http.routers.swarm-dashboard.tls=true + - traefik.http.routers.swarm-dashboard.tls.certresolver=letsencrypt + - traefik.http.routers.swarm-dashboard.service=swarm-dashboard + - traefik.http.services.swarm-dashboard.loadbalancer.server.port=80 + - traefik.docker.network=traefik diff --git a/ansible/roles/swarm_dashboard/tasks/main.yml b/ansible/roles/swarm_dashboard/tasks/main.yml new file mode 100644 index 0000000..6f8e171 --- /dev/null +++ b/ansible/roles/swarm_dashboard/tasks/main.yml @@ -0,0 +1,15 @@ +- name: Create working directory + file: + path: /srv/swarm_dashboard + state: directory + +- name: Copy Docker stack file + template: + src: "{{ role_path }}/docker-stack.yml.j2" + dest: /srv/swarm_dashboard/docker-stack.yml + +- name: Deploy Docker stack + docker_stack: + name: swarm_dashboard + compose: + - /srv/swarm_dashboard/docker-stack.yml