/
/
/
1---
2# Monitoring Role - Glances Deployment Tasks
3
4- name: Create Glances config directory
5 ansible.builtin.file:
6 path: "{{ glances_config_dir }}"
7 state: directory
8 owner: "{{ ansible_user }}"
9 group: users
10 mode: "0775"
11
12- name: Render Glances configuration file
13 ansible.builtin.template:
14 src: glances.conf.j2
15 dest: "{{ glances_config_dir }}/glances.conf"
16 owner: "{{ ansible_user }}"
17 group: users
18 mode: "0664"
19 notify: restart glances
20
21- name: Render Glances environment file
22 ansible.builtin.template:
23 src: glances.env.j2
24 dest: "{{ glances_config_dir }}/.env"
25 owner: "{{ ansible_user }}"
26 group: users
27 mode: "0660"
28 notify: restart glances
29
30- name: Render Glances docker-compose file
31 ansible.builtin.template:
32 src: glances-compose.yml.j2
33 dest: "{{ glances_config_dir }}/docker-compose.yml"
34 owner: "{{ ansible_user }}"
35 group: users
36 mode: "0664"
37 notify: restart glances
38
39- name: Start Glances service
40 community.docker.docker_compose_v2:
41 project_src: "{{ glances_config_dir }}"
42 state: present
43 pull: always
44
45- name: Wait for Glances web interface
46 ansible.builtin.uri:
47 url: "http://localhost:{{ glances_web_port }}/api/4/status"
48 method: GET
49 status_code: [200]
50 retries: 6
51 delay: 5
52 register: glances_health
53 ignore_errors: true
54
55- name: Display Glances deployment summary
56 ansible.builtin.debug:
57 msg: |
58 Glances monitoring deployed on {{ inventory_hostname }}
59 Web UI: http://{{ ansible_default_ipv4.address | default(inventory_hostname) }}:{{ glances_web_port }}
60 Health: {{ 'OK' if glances_health is succeeded else 'NOT READY - check container logs' }}
61 GPU: {{ glances_gpu_monitoring | default(false) }}
62 Storage: {{ glances_storage_monitoring | default(false) }}
63 Directories: {{ glances_monitored_directories | map(attribute='path') | list | join(', ') | default('none') }}
64
65# ==============================================================================
66# HOME ASSISTANT CONFIGURATION GENERATION
67# ==============================================================================
68
69- name: Render HA sensor block for {{ inventory_hostname }}
70 ansible.builtin.template:
71 src: ha-sensor-block.yaml.j2
72 dest: "{{ ha_generated_dir }}/{{ ha_integration_name }}-sensors.yaml"
73 mode: "0644"
74 delegate_to: localhost
75 become: false
76
77- name: Render HA dashboard tile for {{ inventory_hostname }}
78 ansible.builtin.template:
79 src: ha-dashboard-chip.yaml.j2
80 dest: "{{ ha_generated_dir }}/{{ ha_integration_name }}-chip.yaml"
81 mode: "0644"
82 delegate_to: localhost
83 become: false
84
85- name: Render HA dashboard section for {{ inventory_hostname }}
86 ansible.builtin.template:
87 src: ha-dashboard-section.yaml.j2
88 dest: "{{ ha_generated_dir }}/{{ ha_integration_name }}-section.yaml"
89 mode: "0644"
90 delegate_to: localhost
91 become: false
92
93- name: Read rendered HA sensor block
94 ansible.builtin.slurp:
95 src: "{{ ha_generated_dir }}/{{ ha_integration_name }}-sensors.yaml"
96 delegate_to: localhost
97 become: false
98 register: ha_sensor_content
99
100- name: Read rendered HA dashboard tile
101 ansible.builtin.slurp:
102 src: "{{ ha_generated_dir }}/{{ ha_integration_name }}-chip.yaml"
103 delegate_to: localhost
104 become: false
105 register: ha_chip_content
106
107- name: Read rendered HA dashboard section
108 ansible.builtin.slurp:
109 src: "{{ ha_generated_dir }}/{{ ha_integration_name }}-section.yaml"
110 delegate_to: localhost
111 become: false
112 register: ha_section_content
113
114- name: "HA Config - Sensor block for {{ ha_display_name }}"
115 ansible.builtin.debug:
116 msg: "{{ ha_sensor_content.content | b64decode }}"
117
118- name: "HA Config - Dashboard tile for {{ ha_display_name }}"
119 ansible.builtin.debug:
120 msg: "{{ ha_chip_content.content | b64decode }}"
121
122- name: "HA Config - Dashboard section for {{ ha_display_name }}"
123 ansible.builtin.debug:
124 msg: "{{ ha_section_content.content | b64decode }}"
125