Merge pull request #9 from drybjed/ipxe-support
Add iPXE boot loader support
This commit is contained in:
commit
0de6ec18f7
@ -13,6 +13,8 @@ v0.1.1
|
||||
parsed with errors, now ``debops.dhcpd`` will detect them hand handle
|
||||
separately from normal networks. [drybjed]
|
||||
|
||||
- Add support for iPXE boot loader chain-loading and DHCP options. [drybjed]
|
||||
|
||||
v0.1.0
|
||||
------
|
||||
|
||||
|
@ -148,6 +148,43 @@ dhcpd_nameservers: []
|
||||
dhcpd_options: False
|
||||
|
||||
|
||||
# ----------------
|
||||
# iPXE support
|
||||
# ----------------
|
||||
|
||||
# .. envvar:: dhcpd_ipxe
|
||||
#
|
||||
# Add iPXE-specific options to ISC DHCP server configuration.
|
||||
dhcpd_ipxe: False
|
||||
|
||||
|
||||
# .. envvar:: dhcpd_ipxe_dhcp_space
|
||||
#
|
||||
# Add DHCP options iPXE namespace in ``dhcpd.conf`` required to support
|
||||
# iPXE-specific DHCP options in the DHCP server configuration.
|
||||
dhcpd_ipxe_dhcp_space: True
|
||||
|
||||
|
||||
# .. envvar:: dhcpd_ipxe_chain_filename
|
||||
#
|
||||
# Initial file sent to hosts which requested a PXE boot, used to chain-load
|
||||
# iPXE boot loader.
|
||||
dhcpd_ipxe_chain_filename: 'undionly.kpxe'
|
||||
|
||||
|
||||
# .. envvar:: dhcpd_ipxe_filename
|
||||
#
|
||||
# File sent to hosts booted with iPXE, by default load the standard menu file.
|
||||
dhcpd_ipxe_filename: 'menu.ipxe'
|
||||
|
||||
|
||||
# .. envvar:: dhcpd_ipxe_options
|
||||
#
|
||||
# Additional DHCP options in a YAML text block format, added in the iPXE
|
||||
# section of the configuration.
|
||||
dhcpd_ipxe_options: ''
|
||||
|
||||
|
||||
# ----------------------------------------
|
||||
# ISC DHCP Server configuration scopes
|
||||
# ----------------------------------------
|
||||
|
@ -27,6 +27,7 @@ log-facility {{ dhcpd_log_facility }};
|
||||
{{ dhcpd_options }}
|
||||
|
||||
{% endif %}
|
||||
{% include 'ipxe.j2' %}
|
||||
{% if dhcpd_keys is defined and dhcpd_keys %}
|
||||
{% for key in dhcpd_keys %}
|
||||
{{ print.key(key) }}
|
||||
|
57
templates/etc/dhcp/ipxe.j2
Normal file
57
templates/etc/dhcp/ipxe.j2
Normal file
@ -0,0 +1,57 @@
|
||||
{% if dhcpd_ipxe is defined and dhcpd_ipxe %}
|
||||
{% if dhcpd_ipxe_dhcp_space is defined and dhcpd_ipxe_dhcp_space %}
|
||||
# DHCP options configuration for iPXE
|
||||
option space ipxe;
|
||||
option ipxe-encap-opts code 175 = encapsulate ipxe;
|
||||
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.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;
|
||||
# Feature indicators
|
||||
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;
|
||||
|
||||
{% endif %}
|
||||
# iPXE chain-loading configuration
|
||||
if exists user-class and option user-class = "iPXE" {
|
||||
filename "{{ dhcpd_ipxe_filename }}";
|
||||
{% if dhcpd_ipxe_options is defined and dhcpd_ipxe_options %}
|
||||
{{ dhcpd_ipxe_options | indent(8, true) }}
|
||||
{% endif %}
|
||||
} else {
|
||||
filename "{{ dhcpd_ipxe_chain_filename }}";
|
||||
}
|
||||
|
||||
{% endif %}
|
Loading…
Reference in New Issue
Block a user