From d851c852d6fdc0e07742aad4ed2b2e52275faa09 Mon Sep 17 00:00:00 2001 From: Kris Lamoureux Date: Sat, 11 Jul 2020 03:38:45 -0400 Subject: [PATCH] Route Nextcloud through Traefik --- dev/host_vars/nextcloud.yml | 7 +++++++ dev/nextcloud.yml | 1 + roles/nextcloud/tasks/main.yml | 19 ++++++++++++++++--- roles/traefik/tasks/main.yml | 6 +++--- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/dev/host_vars/nextcloud.yml b/dev/host_vars/nextcloud.yml index c5b0a94..61f0788 100644 --- a/dev/host_vars/nextcloud.yml +++ b/dev/host_vars/nextcloud.yml @@ -1,3 +1,10 @@ +# docker +docker_user: vagrant + +# traefik +traefik_domain: traefik.vm.krislamo.org +traefik_auth: admin:$apr1$T1l.BCFz$Jyg8msXYEAUi3LLH39I9d1 # admin:admin + # container settings nextcloud_version: stable nextcloud_admin: admin diff --git a/dev/nextcloud.yml b/dev/nextcloud.yml index fd518ad..f602783 100644 --- a/dev/nextcloud.yml +++ b/dev/nextcloud.yml @@ -6,4 +6,5 @@ roles: - base - docker + - traefik - nextcloud diff --git a/roles/nextcloud/tasks/main.yml b/roles/nextcloud/tasks/main.yml index aa5b0b3..370ee5c 100644 --- a/roles/nextcloud/tasks/main.yml +++ b/roles/nextcloud/tasks/main.yml @@ -4,12 +4,19 @@ "{{ nextcloud_dbroot }}"] state: directory +- name: Create Nextcloud network + docker_network: + name: "{{ nextcloud_container }}" + - name: Start Nextcloud's database container docker_container: name: "{{ nextcloud_dbcontainer }}" image: mariadb:{{ nextcloud_dbversion }} restart_policy: always volumes: "{{ nextcloud_dbroot }}:/var/lib/mysql" + networks_cli_compatible: true + networks: + - name: "{{ nextcloud_container }}" env: MYSQL_RANDOM_ROOT_PASSWORD: "true" MYSQL_DATABASE: "{{ nextcloud_dbname }}" @@ -22,8 +29,14 @@ image: nextcloud:{{ nextcloud_version }} restart_policy: always volumes: "{{ nextcloud_root }}:/var/www/html" - ports: 80:80 - links: "{{ nextcloud_dbcontainer }}:mysql" + networks_cli_compatible: true + networks: + - name: "{{ nextcloud_container }}" + - name: traefik + labels: + traefik.http.routers.nextcloud.rule: "Host(`{{ nextcloud_domain }}`)" + traefik.docker.network: traefik + traefik.enable: "true" - name: Grab Nextcloud container information docker_container_info: @@ -32,7 +45,7 @@ - name: Wait for Nextcloud to become available wait_for: - host: "{{ nextcloud_info.container.NetworkSettings.IPAddress }}" + host: "{{ nextcloud_info.container.NetworkSettings.Networks.traefik.IPAddress }}" port: 80 - name: Check Nextcloud status diff --git a/roles/traefik/tasks/main.yml b/roles/traefik/tasks/main.yml index 8e6eedc..92ec5ce 100644 --- a/roles/traefik/tasks/main.yml +++ b/roles/traefik/tasks/main.yml @@ -6,7 +6,7 @@ - name: Create Traefik network docker_network: - name: traefik-net + name: traefik - name: Start Traefik container docker_container: @@ -18,13 +18,13 @@ ports: "{{ traefik_ports }}" networks_cli_compatible: "false" networks: - - name: "traefik-net" + - name: traefik labels: traefik.http.routers.traefik.rule: "Host(`{{ traefik_domain }}`)" traefik.http.middlewares.auth.basicauth.users: "{{ traefik_auth }}" traefik.http.routers.traefik.middlewares: "auth@docker" traefik.http.routers.traefik.service: "api@internal" - traefik.docker.network: "proxy_traefik-net" + traefik.docker.network: traefik traefik.enable: "true" volumes: - /var/run/docker.sock:/var/run/docker.sock