dhcp: add role for isc-dhcp server
This commit is contained in:
parent
99c963e0ed
commit
ee8e3928f0
35
roles/dhcp/defaults/main.yml
Normal file
35
roles/dhcp/defaults/main.yml
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
dhcp_server_package_name: "dhcp-server"
|
||||||
|
dhcp_server_configfile_path: "/etc/dhcp/dhcpd.test.conf"
|
||||||
|
dhcp_server_systemd_unit: "dhcpd.service"
|
||||||
|
|
||||||
|
# Default lease time in seconds: 1 day = 60*60*24
|
||||||
|
dhcp_default_lease_time: 86400
|
||||||
|
# Max lease time in seconds: 1 week = 60*60*24*7
|
||||||
|
dhcp_max_lease_time: 604800
|
||||||
|
# domain-name and name-servers common across all networks the dhcp-server controls
|
||||||
|
dhcp_common_domain_name: "example.org"
|
||||||
|
dhcp_common_name_servers:
|
||||||
|
- "ns1.example.org"
|
||||||
|
- "ns2.example.org"
|
||||||
|
dhcp_is_authorative: True
|
||||||
|
|
||||||
|
dhcp_subnets:
|
||||||
|
- net: 192.168.167.0
|
||||||
|
netmask: 255.255.255.0
|
||||||
|
routers: 192.168.167.2
|
||||||
|
broadcast: 192.168.167.255
|
||||||
|
domain_name: "int.example.org"
|
||||||
|
domain_name_servers:
|
||||||
|
- "ns1.int.example.org"
|
||||||
|
domain_search:
|
||||||
|
- "int.example.org"
|
||||||
|
range_start: 192.168.167.10
|
||||||
|
range_end: 192.168.167.20
|
||||||
|
allow_unknown: True
|
||||||
|
hosts:
|
||||||
|
- name: server
|
||||||
|
mac: "00:00:00:00:00:00"
|
||||||
|
ip: 192.168.167.45
|
||||||
|
|
24
roles/dhcp/tasks/main.yml
Normal file
24
roles/dhcp/tasks/main.yml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Ensure ISC-DHCP installed
|
||||||
|
package:
|
||||||
|
name: "{{ dhcp_server_package_name }}"
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Template DHCP-server configuration
|
||||||
|
template:
|
||||||
|
src: dhcpd.conf.j2
|
||||||
|
dest: "{{ dhcp_server_configfile_path }}"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
setype: dhcp_etc_t
|
||||||
|
|
||||||
|
- name: Restart & enable DHCP-server
|
||||||
|
systemd:
|
||||||
|
name: "{{ dhcp_server_systemd_unit }}"
|
||||||
|
enabled: yes
|
||||||
|
state: restarted
|
||||||
|
daemon_reload: yes
|
||||||
|
|
||||||
|
|
54
roles/dhcp/templates/dhcpd.conf.j2
Normal file
54
roles/dhcp/templates/dhcpd.conf.j2
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
# dhcpd.conf
|
||||||
|
|
||||||
|
{% if dhcp_is_authorative is defined and dhcp_is_authorative is sameas true %}
|
||||||
|
authoritative;
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
# Global settings for DHCP lease times
|
||||||
|
default-lease-time {{ dhcp_default_lease_time }};
|
||||||
|
max-lease-time {{ dhcp_max_lease_time }};
|
||||||
|
|
||||||
|
# Global domain names and servers for all supported networks
|
||||||
|
{% if dhcp_common_domain_name is not none %}
|
||||||
|
option domain-name "{{ dhcp_common_domain_name }}";
|
||||||
|
{% endif %}
|
||||||
|
{% if dhcp_common_name_servers is not none %}
|
||||||
|
option domain-name-servers {{ dhcp_common_name_servers|join(', ') }};
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
# Use this to send dhcp log messages to a different log file (you also
|
||||||
|
# have to hack syslog.conf to complete the redirection).
|
||||||
|
log-facility local7;
|
||||||
|
|
||||||
|
# Subnet definitions
|
||||||
|
{% for subnet in dhcp_subnets %}
|
||||||
|
subnet {{ subnet.net }} netmask {{ subnet.netmask }} {
|
||||||
|
option routers {{ subnet.routers }};
|
||||||
|
option broadcast-address {{ subnet.broadcast }};
|
||||||
|
option domain-name "{{ subnet.domain_name }}";
|
||||||
|
option domain-name-servers {{ subnet.domain_name_servers|join(', ') }};
|
||||||
|
{% if subnet.domain_search is defined and subnet.domain_search|length > 0 %}
|
||||||
|
option domain-search {{ subnet.domain_search | map('regex_replace', '(.*)', '\"\\1\"') | join(', ') }};
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if subnet.range_start is defined and subnet.range_end is defined %}
|
||||||
|
range {{ subnet.range_start }} {{ subnet.range_end }};
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if subnet.allow_unknown is defined and subnet.allow_unknown is sameas false %}
|
||||||
|
deny unknown-clients;
|
||||||
|
{% else %}
|
||||||
|
allow unknown-clients;
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% for host in subnet.hosts %}
|
||||||
|
host {{ host.name }} {
|
||||||
|
hardware ethernet {{ host.mac }};
|
||||||
|
{% if host.ip is defined %}
|
||||||
|
fixed-address {{ host.ip }};
|
||||||
|
{% endif %}
|
||||||
|
}
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
{% endfor %}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user