113 lines
5.0 KiB
Django/Jinja
113 lines
5.0 KiB
Django/Jinja
ddns-update-style none;
|
|
|
|
allow booting;
|
|
allow bootp;
|
|
|
|
log-facility local7;
|
|
authoritative;
|
|
|
|
# Declare the iPXE option space
|
|
option space ipxe;
|
|
option ipxe-encap-opts code 175 = encapsulate ipxe;
|
|
|
|
# iPXE options, can be set in DHCP response packet
|
|
option ipxe.priority code 1 = signed integer 8;
|
|
option ipxe.keep-san code 8 = unsigned integer 8;
|
|
option ipxe.skip-san-boot code 9 = unsigned integer 8;
|
|
option ipxe.syslogs code 85 = string;
|
|
option ipxe.cert code 91 = string;
|
|
option ipxe.privkey code 92 = string;
|
|
option ipxe.crosscert code 93 = string;
|
|
option ipxe.no-pxedhcp code 176 = unsigned integer 8;
|
|
option ipxe.bus-id code 177 = string;
|
|
option ipxe.san-filename code 188 = string;
|
|
option ipxe.bios-drive code 189 = unsigned integer 8;
|
|
option ipxe.username code 190 = string;
|
|
option ipxe.password code 191 = string;
|
|
option ipxe.reverse-username code 192 = string;
|
|
option ipxe.reverse-password code 193 = string;
|
|
option ipxe.version code 235 = string;
|
|
option iscsi-initiator-iqn code 203 = string;
|
|
|
|
# iPXE feature flags, set in DHCP request packet
|
|
option ipxe.pxeext code 16 = unsigned integer 8;
|
|
option ipxe.iscsi code 17 = unsigned integer 8;
|
|
option ipxe.aoe code 18 = unsigned integer 8;
|
|
option ipxe.http code 19 = unsigned integer 8;
|
|
option ipxe.https code 20 = unsigned integer 8;
|
|
option ipxe.tftp code 21 = unsigned integer 8;
|
|
option ipxe.ftp code 22 = unsigned integer 8;
|
|
option ipxe.dns code 23 = unsigned integer 8;
|
|
option ipxe.bzimage code 24 = unsigned integer 8;
|
|
option ipxe.multiboot code 25 = unsigned integer 8;
|
|
option ipxe.slam code 26 = unsigned integer 8;
|
|
option ipxe.srp code 27 = unsigned integer 8;
|
|
option ipxe.nbi code 32 = unsigned integer 8;
|
|
option ipxe.pxe code 33 = unsigned integer 8;
|
|
option ipxe.elf code 34 = unsigned integer 8;
|
|
option ipxe.comboot code 35 = unsigned integer 8;
|
|
option ipxe.efi code 36 = unsigned integer 8;
|
|
option ipxe.fcoe code 37 = unsigned integer 8;
|
|
option ipxe.vlan code 38 = unsigned integer 8;
|
|
option ipxe.menu code 39 = unsigned integer 8;
|
|
option ipxe.sdi code 40 = unsigned integer 8;
|
|
option ipxe.nfs code 41 = unsigned integer 8;
|
|
|
|
# Other useful general options
|
|
option arch code 93 = unsigned integer 16;
|
|
option client-architecture code 93 = unsigned integer 16;
|
|
option conf-file code 209 = text;
|
|
|
|
shared-network all-networks {
|
|
{% for dhcp in dhcp_list %}
|
|
subnet {{ dhcp.subnet }} netmask {{ dhcp.netmask }} {
|
|
range {{ dhcp.range_start }} {{ dhcp.range_end }};
|
|
option broadcast-address {{ dhcp.broadcast }};
|
|
option routers {{ dhcp.gateway }};
|
|
option domain-name-servers {{ dhcp.dns }};
|
|
option subnet-mask {{ dhcp.netmask }};
|
|
{% if dhcp.default_lease_time is defined and dhcp.default_lease_time > 0 %}
|
|
default-lease-time {{ dhcp.default_lease_time }};
|
|
{% else %}
|
|
default-lease-time {{ dhcp_default_lease_time }};
|
|
{% endif %}
|
|
{% if dhcp.max_lease_time is defined and dhcp.max_lease_time > 0 %}
|
|
max-lease-time {{ dhcp.max_lease_time }};
|
|
{% else %}
|
|
max-lease-time {{ dhcp_max_lease_time }};
|
|
{% endif %}
|
|
{% if dhcp.tftp_server is defined and dhcp.tftp_server|ipaddr %}
|
|
next-server {{ dhcp.tftp_server }};
|
|
{% elif tftp_server is defined and tftp_server|length > 0 %}
|
|
next-server {{ tftp_server }};
|
|
{% endif %}
|
|
if exists user-class and ( option user-class = "iPXE" ) {
|
|
{% if dhcp.ipxe_boot_file is defined and dhcp.ipxe_boot_file|ipaddr %}
|
|
filename "{{ dhcp.ipxe_boot_file }}";
|
|
{% elif ipxe_boot_file is defined and ipxe_boot_file|length > 0 %}
|
|
filename "{{ ipxe_boot_file }}";
|
|
{% endif %}
|
|
} elsif option arch = 00:07 {
|
|
filename "ipxe.efi";
|
|
} elsif option arch = 00:00 {
|
|
filename "ipxe.lkrn";
|
|
} else {
|
|
filename "undionly.kpxe";
|
|
}
|
|
}
|
|
|
|
{% endfor %}
|
|
|
|
group {
|
|
{% for item in groups['pxe_servers'] %}
|
|
host {{ hostvars[item]['server_hostname'] }} {
|
|
hardware ethernet {{ hostvars[item]['server_mac_address'] | lower }};
|
|
fixed-address {{ hostvars[item]['server_vm_fixed_addr'] }};
|
|
option host-name "{{ hostvars[item]['server_hostname'] }}";
|
|
}
|
|
{% endfor %}
|
|
|
|
}
|
|
|
|
}
|