82 lines
3.6 KiB
Plaintext
82 lines
3.6 KiB
Plaintext
#!ipxe
|
|
|
|
set attempts:int32 10
|
|
set i:int32 0
|
|
|
|
goto deploy
|
|
|
|
:deploy
|
|
imgfree
|
|
{%- if pxe_options.deployment_aki_path %}
|
|
{%- set aki_path_https_elements = pxe_options.deployment_aki_path.split(':') %}
|
|
{%- set aki_port_and_path = aki_path_https_elements[2].split('/') %}
|
|
{%- set aki_afterport = aki_port_and_path[1:]|join('/') %}
|
|
{%- set aki_path_https = ['https:', aki_path_https_elements[1], ':8084/', aki_afterport]|join %}
|
|
{%- endif %}
|
|
{%- if pxe_options.deployment_ari_path %}
|
|
{%- set ari_path_https_elements = pxe_options.deployment_ari_path.split(':') %}
|
|
{%- set ari_port_and_path = ari_path_https_elements[2].split('/') %}
|
|
{%- set ari_afterport = ari_port_and_path[1:]|join('/') %}
|
|
{%- set ari_path_https = ['https:', ari_path_https_elements[1], ':8084/', ari_afterport]|join %}
|
|
{%- endif %}
|
|
kernel {% if pxe_options.ipxe_timeout > 0 %}--timeout {{ pxe_options.ipxe_timeout }} {% endif %}{{ aki_path_https }} selinux=0 troubleshoot=0 text {{ pxe_options.pxe_append_params|default("", true) }} BOOTIF=${mac} initrd={{ pxe_options.initrd_filename|default("deploy_ramdisk", true) }} || goto retry
|
|
|
|
initrd {% if pxe_options.ipxe_timeout > 0 %}--timeout {{ pxe_options.ipxe_timeout }} {% endif %}{{ ari_path_https }} || goto retry
|
|
boot
|
|
|
|
:retry
|
|
iseq ${i} ${attempts} && goto fail ||
|
|
inc i
|
|
echo No response, retrying in ${i} seconds.
|
|
sleep ${i}
|
|
goto deploy
|
|
|
|
:fail
|
|
echo Failed to get a response after ${attempts} attempts
|
|
echo Powering off in 30 seconds.
|
|
sleep 30
|
|
poweroff
|
|
|
|
:boot_anaconda
|
|
imgfree
|
|
kernel {% if pxe_options.ipxe_timeout > 0 %}--timeout {{ pxe_options.ipxe_timeout }} {% endif %}{{ aki_path_https }} text {{ pxe_options.pxe_append_params|default("", true) }} inst.ks={{ pxe_options.ks_cfg_url }} {% if pxe_options.repo_url %}inst.repo={{ pxe_options.repo_url }}{% else %}inst.stage2={{ pxe_options.stage2_url }}{% endif %} initrd=ramdisk || goto boot_anaconda
|
|
initrd {% if pxe_options.ipxe_timeout > 0 %}--timeout {{ pxe_options.ipxe_timeout }} {% endif %}{{ ari_path_https }} || goto boot_anaconda
|
|
boot
|
|
|
|
:boot_ramdisk
|
|
imgfree
|
|
{%- if pxe_options.boot_iso_url %}
|
|
sanboot {{ pxe_options.boot_iso_url }}
|
|
{%- else %}
|
|
kernel {% if pxe_options.ipxe_timeout > 0 %}--timeout {{ pxe_options.ipxe_timeout }} {% endif %}{{ aki_path_https }} root=/dev/ram0 text {{ pxe_options.pxe_append_params|default("", true) }} {{ pxe_options.ramdisk_opts|default('', true) }} initrd=ramdisk || goto boot_ramdisk
|
|
initrd {% if pxe_options.ipxe_timeout > 0 %}--timeout {{ pxe_options.ipxe_timeout }} {% endif %}{{ ari_path_https }} || goto boot_ramdisk
|
|
boot
|
|
{%- endif %}
|
|
|
|
{%- if pxe_options.boot_from_volume %}
|
|
|
|
:boot_iscsi
|
|
imgfree
|
|
{% if pxe_options.username %}set username {{ pxe_options.username }}{% endif %}
|
|
{% if pxe_options.password %}set password {{ pxe_options.password }}{% endif %}
|
|
{% if pxe_options.iscsi_initiator_iqn %}set initiator-iqn {{ pxe_options.iscsi_initiator_iqn }}{% endif %}
|
|
sanhook --drive 0x80 {{ pxe_options.iscsi_boot_url }} || goto fail_iscsi_retry
|
|
{%- if pxe_options.iscsi_volumes %}{% for i, volume in enumerate(pxe_options.iscsi_volumes) %}
|
|
set username {{ volume.username }}
|
|
set password {{ volume.password }}
|
|
{%- set drive_id = 129 + i %}
|
|
sanhook --drive {{ '0x%x' % drive_id }} {{ volume.url }} || goto fail_iscsi_retry
|
|
{%- endfor %}{% endif %}
|
|
{% if pxe_options.iscsi_volumes %}set username {{ pxe_options.username }}{% endif %}
|
|
{% if pxe_options.iscsi_volumes %}set password {{ pxe_options.password }}{% endif %}
|
|
sanboot --no-describe || goto fail_iscsi_retry
|
|
|
|
:fail_iscsi_retry
|
|
echo Failed to attach iSCSI volume(s), retrying in 10 seconds.
|
|
sleep 10
|
|
goto boot_iscsi
|
|
{%- endif %}
|
|
|
|
:boot_whole_disk
|
|
sanboot --no-describe || exit 0
|