ansible-role-dhcpd/templates/dhcpd.conf.j2

109 lines
4.1 KiB
Plaintext
Raw Normal View History

2022-02-21 21:35:01 +00:00
#
# {{ ansible_managed }}
#
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
# The style parameter must be one of ad-hoc, interim or none. The
# ddns-update-style statement is only meaningful in the outer scope - it
# is evaluated once after reading the dhcpd.conf file, rather than each
# time a client is assigned an IP address, so there is no way to use
# different DNS update styles for different clients. The default is
# nonrent DNS update styles for different clients. The default is none.
ddns-update-style interim;
# The first point to understand about this style of DNS update is that
# unlike the ad-hoc style, the DHCP server does not necessarily always
# update both the A and the PTR records. The FQDN option includes a flag
# which, when sent by the client, indicates that the client wishes to
# update its own A record. In that case, the server can be configured
# either to honor the clients intentions or ignore them. This is
# done with the statement allow client-updates; or the statement ignore
# client-updates;. By default, client updates are allowed.
ignore client-updates;
2022-02-26 13:52:58 +00:00
{% for key in dhcpd_tsigkeys %}
2022-02-21 21:35:01 +00:00
key "{{ key.name }}" {
algorithm {{ key.algorithm }};
secret "{{ key.secret }}";
}
{% endfor %}
{% for zone in dhcpd_zones %}
zone {{ zone.name }} {
primary {{ zone.primary }};
key "{{ zone.key }}";
}
{% endfor %}
{% for subnet in dhcpd_subnets %}
subnet {{ subnet.network_start }} netmask {{ subnet.network_netmask }} {
interface {{ subnet.interface }};
range {{ subnet.network_range }};
# Time should be the length in seconds that will be assigned to a
# lease if the client requesting the lease does not ask for a specific
# expiration time. This is used for both DHCPv4 and DHCPv6 leases (it
# is also known as the "valid lifetime" in DHCPv6).
default-lease-time {{ subnet.default_lease_time }};
# Time should be the maximum length in seconds that will be assigned
# to a lease. If not defined, the default maximum lease time is 86400.
# The only exception to this is that Dynamic BOOTP lease lengths,
# which are not specified by the client, are not limited by this
# maximum.
max-lease-time {{ subnet.max_lease_time }};
# Time should be the minimum length in seconds that will be assigned
# to a lease. The default is the minimum of 300 seconds or
# max-lease-time.
min-lease-time {{ subnet.min_lease_time }};
# The name parameter should be the domain name that will be appended
# to the client's hostname to form a fully-qualified domain-name
# (FQDN).
ddns-domainname "{{ subnet.ddns_domainname }}";
# The update-static-leases flag, if enabled, causes the DHCP server to
# do DNS updates for clients even if those clients are being assigned
# their IP address using a fixed-address statement - that is, the
# client is being given a static assignment. This can only work with
# the interim DNS update scheme. It is not recommended because the
# DHCP server has no way to tell that the update has been done, and
# therefore will not delete the record when it is not in use. Also,
# the server must attempt the update each time the client renews its
# lease, which could have a significant performance impact in
# environments that place heavy demands on the DHCP server.
update-static-leases on;
option broadcast-address {{ subnet.option_broadcast_address }};
# option domain-name "{{ subnet.option_domain_name }}";
option domain-name-servers {{ subnet.option_domain_name_servers }};
option routers {{ subnet.option_routers }};
option subnet-mask {{ subnet.option_subnet_mask }};
# PXE-Boot-Settings
# allow booting;
# allow bootp;
# next-server 192.168.179.15;
# filename "pxelinux.0";
}
{% endfor %}
{% if dhcpd_static_hosts is defined and dhcpd_static_hosts | length > 0 %}
{% for host in dhcpd_static_hosts %}
host {{ host.name }} {
{% if host.ddns_hostname is defined %}
ddns-hostname {{ host.ddns_hostname }};
{% endif %}
{% if host.fixed_address is defined %}
fixed-address {{ host.fixed_address }};
{% endif %}
hardware ethernet {{ host.hardware_ethernet }};
}
{% endfor %}
{% endif %}