/
/
/
Ansible role that deploys a supervised home assistant installation on my homeassistant device.
1---
2# Reverse Proxy (Nginx Proxy Manager) + CrowdSec Deployment
3
4- name: Create reverse proxy directory structure
5 ansible.builtin.file:
6 path: "{{ item }}"
7 state: directory
8 owner: "{{ homeassistant_docker_owner }}"
9 group: "{{ homeassistant_docker_group }}"
10 mode: '2775'
11 become: true
12 loop:
13 - "{{ homeassistant_docker_base_path }}/reverse-proxy"
14 - "{{ homeassistant_docker_base_path }}/reverse-proxy/data"
15 - "{{ homeassistant_docker_base_path }}/reverse-proxy/letsencrypt"
16
17- name: Create CrowdSec directories
18 ansible.builtin.file:
19 path: "{{ item }}"
20 state: directory
21 owner: "{{ homeassistant_docker_owner }}"
22 group: "{{ homeassistant_docker_group }}"
23 mode: '2775'
24 become: true
25 loop:
26 - "{{ homeassistant_docker_base_path }}/reverse-proxy/crowdsec-config"
27 - "{{ homeassistant_docker_base_path }}/reverse-proxy/crowdsec-db"
28 when: homeassistant_crowdsec_enabled | bool
29
30- name: Deploy reverse proxy Docker Compose file
31 ansible.builtin.template:
32 src: npm-compose.yml.j2
33 dest: "{{ homeassistant_docker_base_path }}/reverse-proxy/docker-compose.yaml"
34 owner: "{{ homeassistant_docker_owner }}"
35 group: "{{ homeassistant_docker_group }}"
36 mode: '0664'
37 become: true
38 notify: restart reverse-proxy
39
40- name: Check if reverse proxy directory exists
41 ansible.builtin.stat:
42 path: "{{ homeassistant_docker_base_path }}/reverse-proxy"
43 register: npm_dir_stat
44 changed_when: false
45 check_mode: false
46
47- name: Start reverse proxy services
48 community.docker.docker_compose_v2:
49 project_src: "{{ homeassistant_docker_base_path }}/reverse-proxy"
50 state: present
51 register: npm_start_result
52 check_mode: false
53 when:
54 - npm_dir_stat.stat.exists
55 - not ansible_check_mode
56
57- name: Display reverse proxy deployment summary
58 ansible.builtin.debug:
59 msg: |
60 Reverse Proxy Deployment:
61 - NPM Status: {{ 'Started' if npm_start_result is defined and npm_start_result is changed else 'Already running' }}
62 - Admin UI: http://{{ ansible_default_ipv4.address }}:{{ homeassistant_npm_admin_port }}
63 - HTTP: port {{ homeassistant_npm_http_port }}
64 - HTTPS: port {{ homeassistant_npm_https_port }}
65 - Network: {{ homeassistant_npm_network_name }} ({{ homeassistant_npm_network_subnet }})
66 - CrowdSec: {{ 'Enabled' if homeassistant_crowdsec_enabled else 'Disabled' }}
67 {% if homeassistant_crowdsec_enabled %}
68 - CrowdSec LAPI: http://{{ homeassistant_crowdsec_lapi_host }}:{{ homeassistant_crowdsec_lapi_port }}
69 {% endif %}
70