Update Pi-hole DNS playbook for v6
Pi-hole v6 uses pihole.toml hosts array instead of custom.list. Updated playbook to modify toml config directly via Python script. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
d7c7b82314
commit
de76f5c6a8
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
- name: Configure Pi-hole local DNS records
|
- name: Configure Pi-hole v6 local DNS records
|
||||||
hosts: pihole
|
hosts: pihole
|
||||||
vars:
|
vars:
|
||||||
dns_domain: lab.directlx.dev
|
dns_domain: lab.directlx.dev
|
||||||
|
|
@ -22,16 +22,25 @@
|
||||||
- { ip: "192.168.200.61", hostname: "odoo" }
|
- { ip: "192.168.200.61", hostname: "odoo" }
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Create Pi-hole custom DNS records
|
- name: Copy DNS update script
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: ../templates/pihole-custom-list.j2
|
src: ../templates/pihole-hosts.py.j2
|
||||||
dest: /etc/pihole/custom.list
|
dest: /tmp/update_pihole_hosts.py
|
||||||
owner: root
|
mode: '0755'
|
||||||
group: root
|
|
||||||
mode: '0644'
|
- name: Update Pi-hole DNS hosts
|
||||||
notify: Restart pihole dns
|
ansible.builtin.command: python3 /tmp/update_pihole_hosts.py
|
||||||
|
register: update_result
|
||||||
|
changed_when: "'updated' in update_result.stdout.lower()"
|
||||||
|
notify: Restart pihole-FTL
|
||||||
|
|
||||||
|
- name: Cleanup script
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /tmp/update_pihole_hosts.py
|
||||||
|
state: absent
|
||||||
|
|
||||||
handlers:
|
handlers:
|
||||||
- name: Restart pihole dns
|
- name: Restart pihole-FTL
|
||||||
ansible.builtin.command: pihole restartdns
|
ansible.builtin.systemd:
|
||||||
changed_when: true
|
name: pihole-FTL
|
||||||
|
state: restarted
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# Update Pi-hole v6 hosts in pihole.toml
|
||||||
|
import re
|
||||||
|
|
||||||
|
hosts = '''
|
||||||
|
{% for record in dns_records %}
|
||||||
|
"{{ record.ip }} {{ record.hostname }}.{{ dns_domain }} {{ record.hostname }}",
|
||||||
|
{% endfor %}
|
||||||
|
'''
|
||||||
|
|
||||||
|
with open('/etc/pihole/pihole.toml', 'r') as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
# Find and replace hosts array
|
||||||
|
pattern = r'hosts = \[.*?\]'
|
||||||
|
replacement = f'hosts = [{hosts} ]'
|
||||||
|
content = re.sub(pattern, replacement, content, flags=re.DOTALL)
|
||||||
|
|
||||||
|
with open('/etc/pihole/pihole.toml', 'w') as f:
|
||||||
|
f.write(content)
|
||||||
|
|
||||||
|
print('Pi-hole DNS hosts updated')
|
||||||
Loading…
Reference in New Issue