From e084462ae16ce5eefb3d49b385519d77f72fde93 Mon Sep 17 00:00:00 2001 From: yuri Date: Sun, 4 Dec 2022 20:11:39 +0100 Subject: [PATCH] Add esphome role and playbook --- .../thinkcccentre/host_vars/esphome.yml | 4 +++ inventories/thinkcccentre/hosts.yml | 2 ++ playbooks/deploy_esphome.yml | 7 ++++ .../files/configs/esphome/nginx/esphome.conf | 8 +++++ playbooks/roles/esphome/files/esphome.service | 10 ++++++ playbooks/roles/esphome/handlers/main.yml | 4 +++ .../roles/esphome/meta/argument_specs.yml | 8 +++++ playbooks/roles/esphome/meta/main.yml | 8 +++++ playbooks/roles/esphome/tasks/main.yml | 33 +++++++++++++++++++ 9 files changed, 84 insertions(+) create mode 100644 inventories/thinkcccentre/host_vars/esphome.yml create mode 100644 playbooks/deploy_esphome.yml create mode 100644 playbooks/files/configs/esphome/nginx/esphome.conf create mode 100644 playbooks/roles/esphome/files/esphome.service create mode 100644 playbooks/roles/esphome/handlers/main.yml create mode 100644 playbooks/roles/esphome/meta/argument_specs.yml create mode 100644 playbooks/roles/esphome/meta/main.yml create mode 100644 playbooks/roles/esphome/tasks/main.yml diff --git a/inventories/thinkcccentre/host_vars/esphome.yml b/inventories/thinkcccentre/host_vars/esphome.yml new file mode 100644 index 0000000..37307a1 --- /dev/null +++ b/inventories/thinkcccentre/host_vars/esphome.yml @@ -0,0 +1,4 @@ +esphome__version: "2022.11.4" +nginx__configs: + - name: esphome + content: "{{ lookup('ansible.builtin.file', 'configs/esphome/nginx/esphome.conf') }}" diff --git a/inventories/thinkcccentre/hosts.yml b/inventories/thinkcccentre/hosts.yml index ad700f7..43692d2 100644 --- a/inventories/thinkcccentre/hosts.yml +++ b/inventories/thinkcccentre/hosts.yml @@ -6,3 +6,5 @@ all: ansible_host: light.z9 automation: ansible_host: automation.z9 + esphome: + ansible_host: esphome.z9 diff --git a/playbooks/deploy_esphome.yml b/playbooks/deploy_esphome.yml new file mode 100644 index 0000000..c99c3ba --- /dev/null +++ b/playbooks/deploy_esphome.yml @@ -0,0 +1,7 @@ +--- +- name: Deploy esphome on esphome.z9 + become: true + hosts: esphome + roles: + - esphome + - nginx diff --git a/playbooks/files/configs/esphome/nginx/esphome.conf b/playbooks/files/configs/esphome/nginx/esphome.conf new file mode 100644 index 0000000..a303431 --- /dev/null +++ b/playbooks/files/configs/esphome/nginx/esphome.conf @@ -0,0 +1,8 @@ +server { + listen 80; + server_name esphome.z9; + + location / { + proxy_pass http://localhost:6052; + } +} diff --git a/playbooks/roles/esphome/files/esphome.service b/playbooks/roles/esphome/files/esphome.service new file mode 100644 index 0000000..65e134c --- /dev/null +++ b/playbooks/roles/esphome/files/esphome.service @@ -0,0 +1,10 @@ +[Unit] +Description=ESPHome + +[Service] +ExecStart=/home/esphome/.local/bin/esphome dashboard config/ +WorkingDirectory=/home/esphome/.local/bin +User=esphome + +[Install] +WantedBy=multi-user.target diff --git a/playbooks/roles/esphome/handlers/main.yml b/playbooks/roles/esphome/handlers/main.yml new file mode 100644 index 0000000..2524898 --- /dev/null +++ b/playbooks/roles/esphome/handlers/main.yml @@ -0,0 +1,4 @@ +- name: Restart esphome + ansible.builtin.systemd: + service: esphome.service + state: restarted diff --git a/playbooks/roles/esphome/meta/argument_specs.yml b/playbooks/roles/esphome/meta/argument_specs.yml new file mode 100644 index 0000000..71963ae --- /dev/null +++ b/playbooks/roles/esphome/meta/argument_specs.yml @@ -0,0 +1,8 @@ +--- +argument_specs: + main: + options: + esphome__version: + description: ESPHome version that should be installed. + type: str + required: true diff --git a/playbooks/roles/esphome/meta/main.yml b/playbooks/roles/esphome/meta/main.yml new file mode 100644 index 0000000..2c3bd99 --- /dev/null +++ b/playbooks/roles/esphome/meta/main.yml @@ -0,0 +1,8 @@ +--- +dependencies: + - role: distribution_check + vars: + distribution_check__supported_distributions: + - name: Debian + versions: + - "11" diff --git a/playbooks/roles/esphome/tasks/main.yml b/playbooks/roles/esphome/tasks/main.yml new file mode 100644 index 0000000..36e1250 --- /dev/null +++ b/playbooks/roles/esphome/tasks/main.yml @@ -0,0 +1,33 @@ +- name: Ensure acl is installed + ansible.builtin.apt: + name: acl +- name: Ensure pip is installed + ansible.builtin.apt: + name: python3-pip +- name: Ensure esphome user exists + ansible.builtin.user: + name: esphome +- name: Ensure esphome dependencies are installed + become_user: esphome + ansible.builtin.pip: + name: tornado + extra_args: --user +- name: Ensure esphome are installed + become_user: esphome + ansible.builtin.pip: + name: "esphome=={{ esphome__version }}" + extra_args: --user + notify: Restart esphome +- name: Ensure esphome systemd service file is deployed + ansible.builtin.copy: + src: esphome.service + dest: /etc/systemd/system/esphome.service + mode: 0644 + owner: root + group: root + notify: Restart esphome +- name: Ensure esphome service is enabled and started + ansible.builtin.systemd: + service: esphome.service + enabled: true + state: started