|
1 | 1 | --- |
2 | | -- name: Leggi il file dhcp.leases |
| 2 | +- name: Read dhcp.leases file |
3 | 3 | ansible.builtin.slurp: |
4 | 4 | src: /etc/pihole/dhcp.leases |
5 | 5 | register: dhcp_leases_content |
6 | 6 |
|
7 | | -- name: Converti il contenuto del file in una lista di righe |
| 7 | +- name: Convert file content to a list of strings |
8 | 8 | ansible.builtin.set_fact: |
9 | 9 | dhcp_leases_lines: "{{ dhcp_leases_content.content | b64decode | split('\n') }}" |
10 | 10 |
|
11 | 11 | - name: Filter existing leases based on dhcp reservations |
12 | 12 | ansible.builtin.set_fact: |
13 | 13 | filtered_leases: [] |
14 | 14 |
|
15 | | -- name: Crea una lista di stringhe "mac ip" da pihole.dhcp_reservations |
| 15 | +- name: Get "mac ip" string list from pihole.dhcp_reservations |
16 | 16 | ansible.builtin.set_fact: |
17 | 17 | mac_ip_list: >- |
18 | 18 | {{ pihole.dhcp_reservations | map(attribute='mac') | map('lower') | zip(pihole.dhcp_reservations | map(attribute='ip')) | map('join', ' ') | list }} |
19 | 19 |
|
20 | | -- name: Ottieni lease non riservati |
| 20 | +- name: Get not reserved leases |
21 | 21 | ansible.builtin.set_fact: |
22 | 22 | filtered_leases: >- |
23 | 23 | {{ filtered_leases + (dhcp_leases_lines | reject('equalto', '') | select('match', '^((?!' + mac_ip_list | join('|') + ').)*$') | list) }} |
24 | 24 |
|
25 | | -- name: Ottieni lease riservati |
| 25 | +- name: Get reserved leases |
26 | 26 | ansible.builtin.set_fact: |
27 | 27 | filtered_leases: >- |
28 | 28 | {{ filtered_leases + (dhcp_leases_lines | select('search', '(?:' + (mac_ip_list | join('|')) + ')') | list) }} |
29 | 29 |
|
30 | | -- name: Crea una lista di lease mancanti |
| 30 | +- name: Create a missing leases list |
31 | 31 | ansible.builtin.set_fact: |
32 | 32 | filtered_leases: >- |
33 | 33 | {{ filtered_leases + [(ansible_date_time.epoch + ' ' + item.mac | lower + ' ' + item.ip + ' ' + item.hostname + ' *')] }} |
34 | 34 | loop: "{{ pihole.dhcp_reservations }}" |
35 | 35 | when: not (dhcp_leases_lines | select('search', item.mac | lower + ' ' + item.ip) | list | length > 0) |
36 | 36 |
|
37 | | -- name: Scrivi il nuovo file dhcp.leases |
| 37 | +- name: Write new dhcp.leases file |
38 | 38 | ansible.builtin.copy: |
39 | 39 | dest: /etc/pihole/dhcp.leases |
40 | 40 | content: "{{ filtered_leases | join('\n') }}" |
|
0 commit comments