- name: install dhcpd apt: name: isc-dhcp-server state: present - name: configure dhcp server copy: content: | option dhcp-max-message-size 2048; use-host-decl-names on; option architecture-type code 93 = unsigned integer 16; subnet {{server_net}}.0 netmask {{server_netmask}} { range {{server_net}}.10 {{server_net}}.250; default-lease-time 6000; max-lease-time 7200; option routers {{server_ip}}; option domain-name "{{domain_name}}"; option domain-name-servers {{server_ip}}; option time-servers {{server_ip}}; option ntp-servers {{server_ip}}; server-name {{server_name}}; next-server {{server_ip}}; allow booting; allow bootp; class "pxeclients" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; if exists user-class and option user-class = "iPXE" { filename "menu.ipxe"; } else { if option architecture-type = 00:09 { filename "ipxe.efi"; } elsif option architecture-type = 00:07 { filename "ipxe.efi"; } elsif option architecture-type = 00:06 { filename "ipxe.efi"; } else { filename "ipxe.pxe"; } } } } dest: /etc/dhcp/dhcpd.conf mode: u=rw,g=r,o=o owner: root group: root # validate: dhcpd -t -cf %s register: dhcpd_config - name: set dhcp server interface copy: content: | INTERFACESv4="{{dhcp_interface}}" INTERFACESv6="" dest: /etc/default/isc-dhcp-server mode: u=rw,g=r,o=o owner: root group: root register: dhcp_default_config - name: reload dhcp systemd: name: isc-dhcp-server state: restarted when: dhcp_default_config.changed or dhcpd_config.changed