Adds iPXE UEFI support to Multi Node AIO
Now expects a base URL that looks for iPXE files. Uses boot.ipxe.org by default but the base URL can be overridden to point to custom compiled versions of ipxe.lkrn, ipxe.efi, and undionly.kpxe. Change-Id: Ib2c10c4817eaf9a78326f3de00aed0c16f8df776
This commit is contained in:
parent
de0f12f04d
commit
bc611698c8
@ -170,8 +170,8 @@ Instruct the system to use a set amount of ram for the logging VM type:
|
|||||||
Instruct the system to use a set amount of ram for the swift VM type:
|
Instruct the system to use a set amount of ram for the swift VM type:
|
||||||
``SWIFT_VM_SERVER_RAM=${SWIFT_VM_SERVER_RAM:-1024}``
|
``SWIFT_VM_SERVER_RAM=${SWIFT_VM_SERVER_RAM:-1024}``
|
||||||
|
|
||||||
Instruct the system to use a customized iPXE kernel:
|
Instruct the system where to obtain iPXE kernels (looks for ipxe.lkrn, ipxe.efi, etc):
|
||||||
``IPXE_KERNEL_URL=${IPXE_KERNEL_URL:-'http://boot.ipxe.org/ipxe.lkrn'}``
|
``IPXE_KERNEL_BASE_URL=${IPXE_KERNEL_BASE_URL:-'http://boot.ipxe.org'}``
|
||||||
|
|
||||||
Instruct the system to use a customized iPXE script during boot of VMs:
|
Instruct the system to use a customized iPXE script during boot of VMs:
|
||||||
``IPXE_PATH_URL=${IPXE_PATH_URL:-''}``
|
``IPXE_PATH_URL=${IPXE_PATH_URL:-''}``
|
||||||
|
@ -52,7 +52,7 @@ ansible-playbook -vv \
|
|||||||
-e logging_vm_server_ram=${LOGGING_VM_SERVER_RAM:-"1024"} \
|
-e logging_vm_server_ram=${LOGGING_VM_SERVER_RAM:-"1024"} \
|
||||||
-e swift_vm_server_ram=${SWIFT_VM_SERVER_RAM:-"1024"} \
|
-e swift_vm_server_ram=${SWIFT_VM_SERVER_RAM:-"1024"} \
|
||||||
-e container_tech=${CONTAINER_TECH:-"lxc"} \
|
-e container_tech=${CONTAINER_TECH:-"lxc"} \
|
||||||
-e ipxe_kernel_url=${IPXE_KERNEL_URL:-"http://boot.ipxe.org/ipxe.lkrn"} \
|
-e ipxe_kernel_base_url=${IPXE_KERNEL_BASE_URL:-"http://boot.ipxe.org"} \
|
||||||
-e ipxe_path_url=${IPXE_PATH_URL:-""} ${MNAIO_ANSIBLE_PARAMETERS} \
|
-e ipxe_path_url=${IPXE_PATH_URL:-""} ${MNAIO_ANSIBLE_PARAMETERS} \
|
||||||
--force-handlers \
|
--force-handlers \
|
||||||
playbooks/site.yml
|
playbooks/site.yml
|
||||||
|
@ -89,9 +89,13 @@
|
|||||||
|
|
||||||
- name: Download iPXE
|
- name: Download iPXE
|
||||||
get_url:
|
get_url:
|
||||||
url: "{{ ipxe_kernel_url }}"
|
url: "{{ ipxe_kernel_base_url }}/{{ item.filename }}"
|
||||||
dest: "/var/lib/tftpboot/ipxe.lkrn"
|
dest: "/var/lib/tftpboot/{{ item.dest }}"
|
||||||
tmp_dest: /tmp/
|
tmp_dest: /tmp/
|
||||||
|
with_items:
|
||||||
|
- { filename: 'ipxe.lkrn', dest: 'ipxe.lkrn' }
|
||||||
|
- { filename: 'ipxe.efi', dest: 'ipxe.efi' }
|
||||||
|
- { filename: 'undionly.kpxe', dest: 'undionly.kpxe' }
|
||||||
|
|
||||||
- name: Drop ipxe default menu
|
- name: Drop ipxe default menu
|
||||||
template:
|
template:
|
||||||
|
@ -6,6 +6,58 @@ allow bootp;
|
|||||||
log-facility local7;
|
log-facility local7;
|
||||||
authoritative;
|
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 {
|
shared-network all-networks {
|
||||||
{% for dhcp in dhcp_list %}
|
{% for dhcp in dhcp_list %}
|
||||||
subnet {{ dhcp.subnet }} netmask {{ dhcp.netmask }} {
|
subnet {{ dhcp.subnet }} netmask {{ dhcp.netmask }} {
|
||||||
@ -33,8 +85,12 @@ shared-network all-networks {
|
|||||||
{% elif ipxe_boot_file is defined and ipxe_boot_file|length > 0 %}
|
{% elif ipxe_boot_file is defined and ipxe_boot_file|length > 0 %}
|
||||||
filename "{{ ipxe_boot_file }}";
|
filename "{{ ipxe_boot_file }}";
|
||||||
{% endif %}
|
{% endif %}
|
||||||
} else {
|
} elsif option arch = 00:07 {
|
||||||
|
filename "ipxe.efi";
|
||||||
|
} elsif option arch = 00:00 {
|
||||||
filename "ipxe.lkrn";
|
filename "ipxe.lkrn";
|
||||||
|
} else {
|
||||||
|
filename "undionly.kpxe";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ default_ubuntu_mirror_directory: /ubuntu
|
|||||||
|
|
||||||
default_container_tech: "{{ container_tech | default('lxc') }}"
|
default_container_tech: "{{ container_tech | default('lxc') }}"
|
||||||
|
|
||||||
ipxe_kernel_url: "http://boot.ipxe.org/ipxe.lkrn"
|
ipxe_kernel_base_url: "http://boot.ipxe.org"
|
||||||
|
|
||||||
# IP address, or domain name of the TFTP server
|
# IP address, or domain name of the TFTP server
|
||||||
tftp_server: "{{ hostvars[groups['pxe_hosts'][0]]['ansible_host'] | default(ansible_host) }}"
|
tftp_server: "{{ hostvars[groups['pxe_hosts'][0]]['ansible_host'] | default(ansible_host) }}"
|
||||||
|
@ -6,8 +6,8 @@ set space:hex 20:20
|
|||||||
set space ${space:string}
|
set space ${space:string}
|
||||||
set timeout 10
|
set timeout 10
|
||||||
|
|
||||||
{% if ipxe_kernel_url is defined and ipxe_kernel_url|length > 0%}
|
{% if ipxe_kernel_base_url is defined and ipxe_kernel_base_url|length > 0%}
|
||||||
iseq ${version} {{ ipxe_ubuntu_version }} && chain --autofree {{ ipxe_kernel_url }} ||
|
iseq ${version} {{ ipxe_ubuntu_version }} && chain --autofree {{ ipxe_kernel_base_url }}/ipxe.lkrn ||
|
||||||
{% else %}
|
{% else %}
|
||||||
iseq ${version} {{ ipxe_ubuntu_version }} && chain --autofree ipxe.lkrn ||
|
iseq ${version} {{ ipxe_ubuntu_version }} && chain --autofree ipxe.lkrn ||
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
Loading…
Reference in New Issue
Block a user