Add dnsmasq role
This commit is contained in:
parent
02086cdc32
commit
b20e9cccff
|
@ -14,5 +14,6 @@ query_filters:
|
|||
- role: 'firewall'
|
||||
- role: 'server'
|
||||
- role: 'storage-node'
|
||||
- role: 'desktop-computer'
|
||||
group_by:
|
||||
- cluster
|
||||
|
|
5
roles/dnsmasq/handlers/main.yml
Normal file
5
roles/dnsmasq/handlers/main.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
- name: restart dnsmasq
|
||||
service:
|
||||
name: dnsmasq
|
||||
state: restarted
|
||||
when: "'handler' not in ansible_skip_tags"
|
16
roles/dnsmasq/tasks/main.yml
Normal file
16
roles/dnsmasq/tasks/main.yml
Normal file
|
@ -0,0 +1,16 @@
|
|||
- name: Install packages
|
||||
package:
|
||||
name:
|
||||
- dnsmasq
|
||||
|
||||
- name: Configure dnsmasq
|
||||
template:
|
||||
dest: '/etc/dnsmasq.d/{{ item }}'
|
||||
src: '{{ item }}.j2'
|
||||
loop:
|
||||
- 00-options.conf
|
||||
- 10-ranges.conf
|
||||
notify: restart dnsmasq
|
||||
|
||||
# TODO DNS update
|
||||
# TODO netboot config
|
11
roles/dnsmasq/templates/00-options.conf.j2
Normal file
11
roles/dnsmasq/templates/00-options.conf.j2
Normal file
|
@ -0,0 +1,11 @@
|
|||
# disable DNS server
|
||||
port = 0
|
||||
|
||||
bind-interfaces
|
||||
interface = {{ interfaces | map(attribute='name') | join(',') }}
|
||||
|
||||
dhcp-authoritative
|
||||
dhcp-proxy
|
||||
|
||||
dhcp-option = option:dns-server,{{ dns | join(',') }}
|
||||
dhcp-option = option:ntp-server,{{ ntp | join(',') }}
|
18
roles/dnsmasq/templates/10-ranges.conf.j2
Normal file
18
roles/dnsmasq/templates/10-ranges.conf.j2
Normal file
|
@ -0,0 +1,18 @@
|
|||
{% for prefix in prefixes | selectattr('custom_fields.dhcp_server') %}
|
||||
{% if prefix.custom_fields.dhcp_server.address | ipaddr('address') == primary_ip4 %}
|
||||
# {{ prefix.vlan.name }}
|
||||
dhcp-range = set:{{ prefix.vlan.name }},{{ prefix.prefix | ipmath(100) }},{{ prefix.prefix | ipmath(200) }},{{ prefix.prefix | ipaddr('netmask') }}
|
||||
{% if prefix.custom_fields.gateway %}
|
||||
dhcp-option = tag:{{ prefix.vlan.name }},option:router,{{ prefix.custom_fields.gateway.address | ipaddr('address') }}
|
||||
{% endif -%}
|
||||
|
||||
{% for host in hostvars.values() | selectattr('primary_ip4') | selectattr('primary_ip4', 'ansible.utils.in_network', prefix.prefix) %}
|
||||
{% for interface in host.interfaces | selectattr('mac_address') %}
|
||||
{% for address in interface.ip_addresses | selectattr('status.value', '==', 'dhcp') %}
|
||||
dhcp-host = {{ interface.mac_address | lower }},{{ address.address | ipaddr('address') }},{{ interface.device.name | lower }}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% endif %}
|
||||
{% endfor %}
|
Loading…
Reference in a new issue