/
/
/
Ansible role that deploys my edge device with connectivity containers. Currently it deploys a thread border router via the zbt-1 dongle by Home Assistant, a zigbee2MQTT interface using the Sonoff zigbee dongle and a DSMR reader with a generic P1 to USB converter.
1---
2# Entrance IoT Gateway - Pull latest images and recreate containers
3#
4# Usage via update-services.yml:
5# All entrance services: ansible-playbook update-services.yml --limit entrance_servers
6# Single service: ansible-playbook update-services.yml --limit entrance_servers --tags z2m
7
8- name: Update Zigbee2MQTT
9 when: enable_z2m
10 tags: [z2m, zigbee]
11 block:
12 - name: "Zigbee2MQTT - Pull latest image and recreate"
13 community.docker.docker_compose_v2:
14 project_src: "{{ z2m_compose_dir }}"
15 state: present
16 pull: always
17 recreate: auto
18 register: z2m_update
19
20 - name: "Zigbee2MQTT - Report update status"
21 debug:
22 msg: "Zigbee2MQTT: {{ 'updated and recreated' if z2m_update.changed else 'already up to date' }}"
23
24- name: Update OpenThread Border Router
25 when: enable_otbr
26 tags: [otbr, thread]
27 block:
28 - name: "OTBR - Pull latest image and recreate"
29 community.docker.docker_compose_v2:
30 project_src: "{{ otbr_compose_dir }}"
31 state: present
32 pull: always
33 recreate: auto
34 register: otbr_update
35
36 - name: "OTBR - Report update status"
37 debug:
38 msg: "OTBR: {{ 'updated and recreated' if otbr_update.changed else 'already up to date' }}"
39
40- name: Update DSMR Reader
41 when: enable_dsmr
42 tags: [dsmr, energy]
43 block:
44 - name: "DSMR Reader - Pull latest image and recreate"
45 community.docker.docker_compose_v2:
46 project_src: "{{ dsmr_compose_dir }}"
47 state: present
48 pull: always
49 recreate: auto
50 register: dsmr_update
51
52 - name: "DSMR Reader - Report update status"
53 debug:
54 msg: "DSMR Reader: {{ 'updated and recreated' if dsmr_update.changed else 'already up to date' }}"
55
56- name: Prune unused Docker images
57 tags: [cleanup, prune]
58 community.docker.docker_prune:
59 images: true
60 images_filters:
61 dangling: "true"
62 register: prune_result
63
64- name: Report cleanup
65 tags: [cleanup, prune]
66 debug:
67 msg: "Pruned {{ prune_result.images | default([]) | length }} dangling image(s), reclaimed {{ prune_result.images_space_reclaimed | default(0) | human_readable }}"
68 when: prune_result.images | default([]) | length > 0
69