[ansible][attitude-adjuster] put home-assistant on the host network
change
commit d7e4e8e7afb068397237bc49b3bdc7b8856437f2
author Alpha Chen <alpha@kejadlen.dev>
date
parent 4f39381c
diff --git a/ansible/attitude-adjuster/docker.yml b/ansible/attitude-adjuster/docker.yml
index 28cd18b3..f823f1ed 100644
--- a/ansible/attitude-adjuster/docker.yml
+++ b/ansible/attitude-adjuster/docker.yml
@@ -49,94 +49,3 @@
         - docker-compose
         - python-docker
 
-    - name: docker compose
-      docker_compose:
-        project_name: attitude-adjuster
-        definition:
-          version: '2'
-          services:
-            ddclient:
-              image: kejadlen/ddclient
-              container_name: ddclient
-              environment:
-                TZ: America/Los_Angeles
-              volumes:
-                - /etc/ddclient:/etc/ddclient
-              networks:
-                - bridge
-              restart: always
-
-            home_assistant:
-              container_name: home-assistant
-              image: homeassistant/raspberrypi3-homeassistant
-              ports:
-                - 5353:5353/udp
-                - 51827:51827/tcp
-              environment:
-                TZ: America/Los_Angeles
-              volumes:
-                - /etc/homeassistant:/config
-              networks:
-                - bridge
-              restart: always
-              labels:
-                - traefik.enable=true
-                - traefik.frontend.rule=Host:{{ home_assistant.host }}
-                - traefik.basic.port=8123
-                - traefik.basic.protocol=http
-
-            pihole:
-              container_name: pihole
-              image: pihole/pihole:latest
-              ports:
-                - 53:53/tcp
-                - 53:53/udp
-              environment:
-                ServerIP: 192.168.1.101
-                TZ: America/Los_Angeles
-                VIRTUAL_HOST: "{{ pihole.host }}"
-                WEBPASSWORD: "{{ pihole.password }}"
-              volumes:
-                 - /etc/pihole:/etc/pihole
-                 - /etc/dnsmasq.d:/etc/dnsmasq.d
-              dns:
-                - 127.0.0.1
-                - 1.1.1.1
-              cap_add:
-                - NET_ADMIN
-              networks:
-                - bridge
-              restart: always
-              labels:
-                - traefik.enable=true
-                - traefik.frontend.rule=Host:{{ pihole.host }}
-                - traefik.basic.port=80
-                - traefik.basic.protocol=http
-
-            traefik:
-              container_name: traefik
-              image: traefik
-              command: --api --docker
-              ports:
-                - 80:80
-                - 8080:8080
-                - 443:443
-              volumes:
-                - /var/run/docker.sock:/var/run/docker.sock
-                - /opt/traefik/traefik.toml:/traefik.toml
-                - /opt/traefik/acme.json:/acme.json
-              networks:
-                - bridge
-              restart: always
-              labels:
-                - traefik.enable=true
-                - traefik.frontend.rule=Host:{{ traefik.host }}
-                - traefik.frontend.auth.basic.users=alpha:{{ traefik.password | password_hash('md5') | replace('$', '$$') }}
-                - traefik.basic.port=8080
-                - traefik.basic.protocol=http
-
-          networks:
-            bridge:
-        state: present
-        pull: yes
-
diff --git a/ansible/attitude-adjuster/main.yml b/ansible/attitude-adjuster/main.yml
index c0a4df9a..911f9158 100644
--- a/ansible/attitude-adjuster/main.yml
+++ b/ansible/attitude-adjuster/main.yml
@@ -12,8 +12,96 @@
 
 - import_playbook: security.yml
 
+- import_playbook: docker.yml
 - import_playbook: ddclient.yml
 - import_playbook: home-assistant.yml
 - import_playbook: pihole.yml
 - import_playbook: traefik.yml
-- import_playbook: docker.yml
+
+- hosts: attitude-adjuster
+  vars_files:
+    - vars.yml.private
+  tasks:
+    - name: docker compose
+      docker_compose:
+        project_name: attitude-adjuster
+        definition:
+          version: '2'
+          services:
+
+            ddclient:
+              image: kejadlen/ddclient
+              container_name: ddclient
+              environment:
+                TZ: America/Los_Angeles
+              volumes:
+                - /etc/ddclient:/etc/ddclient
+              networks:
+                - bridge
+              restart: always
+
+            home_assistant:
+              container_name: home-assistant
+              image: homeassistant/raspberrypi3-homeassistant
+              environment:
+                TZ: America/Los_Angeles
+              volumes:
+                - /etc/homeassistant:/config
+              network_mode: host
+              restart: always
+
+            pihole:
+              container_name: pihole
+              image: pihole/pihole:latest
+              ports:
+                - 53:53/tcp
+                - 53:53/udp
+              environment:
+                ServerIP: 192.168.1.101
+                TZ: America/Los_Angeles
+                VIRTUAL_HOST: "{{ pihole.host }}"
+                WEBPASSWORD: "{{ pihole.password }}"
+              volumes:
+                 - /etc/pihole:/etc/pihole
+                 - /etc/dnsmasq.d:/etc/dnsmasq.d
+              dns:
+                - 127.0.0.1
+                - 1.1.1.1
+              cap_add:
+                - NET_ADMIN
+              networks:
+                - bridge
+              restart: always
+              labels:
+                - traefik.enable=true
+                - traefik.frontend.rule=Host:{{ pihole.host }}
+                - traefik.basic.port=80
+                - traefik.basic.protocol=http
+
+            traefik:
+              container_name: traefik
+              image: traefik
+              command: --api --docker
+              ports:
+                - 80:80
+                - 443:443
+              volumes:
+                - /var/run/docker.sock:/var/run/docker.sock
+                - /opt/traefik/traefik.toml:/traefik.toml
+                - /opt/traefik/acme.json:/acme.json
+              networks:
+                - bridge
+              restart: always
+              labels:
+                - traefik.enable=true
+                - traefik.frontend.rule=Host:{{ traefik.host }}
+                - traefik.frontend.auth.basic.users=alpha:{{ traefik.password | password_hash('md5') | replace('$', '$$') }}
+                - traefik.basic.port=8080
+                - traefik.basic.protocol=http
+
+          networks:
+            bridge:
+
+        state: present
+        pull: yes
+
diff --git a/ansible/attitude-adjuster/traefik.yml b/ansible/attitude-adjuster/traefik.yml
index 9345288e..e3accef1 100644
--- a/ansible/attitude-adjuster/traefik.yml
+++ b/ansible/attitude-adjuster/traefik.yml
@@ -6,13 +6,17 @@
   become: yes
   tasks:
 
+    - name: get docker ip
+      shell: ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+'
+      register: docker_ip
+
     - name: traefik.toml
       copy:
         content: |
           debug = false
           insecureSkipVerify = true
 
-          logLevel = "ERROR"
+          logLevel = "INFO" # "ERROR"
           defaultEntryPoints = ["https","http"]
 
           [entryPoints]
@@ -26,6 +30,19 @@
 
           [retry]
 
+          [file]
+
+          [frontends]
+            [frontends.homeassistant]
+            backend = "homeassistant"
+              [frontends.homeassistant.routes.test_1]
+              rule = "Host:{{ home_assistant.host }}"
+
+          [backends]
+            [backends.homeassistant]
+              [backends.homeassistant.servers.server1]
+              url = "http://{{ docker_ip.stdout | trim }}:8123"
+
           [docker]
           endpoint = "unix:///var/run/docker.sock"
           domain = "{{ traefik.domain }}"
@@ -41,9 +58,19 @@
           [acme.httpChallenge]
           entryPoint = "http"
         dest: /opt/traefik/traefik.toml
+      notify: restart traefik
 
     - name: acme.json
       file:
         name: /opt/traefik/acme.json
         mode: 0600
         state: touch
+
+  handlers:
+
+    - name: restart traefik
+      docker_container:
+        name: traefik
+        restart: yes
+      ignore_errors: yes
+