lang en_US
keyboard us
timezone UTC --utc
#platform x86, AMD64, or Intel EM64T
text
cmdline
reboot
selinux --enforcing
firewall --disabled
firstboot --disabled
rootpw --lock

bootloader --location=mbr --append="rhgb quiet crashkernel=auto"
zerombr
clearpart --all --initlabel
autopart

# Downloading and installing OS image using "liveimg" section is the
# default mode of operation for an OpenStack-integrated Ironic
# deployment where Glance is in use. Users (infrastructure operators)
# may choose to customize this pattern, or use release specific kickstart
# configurations which may already point to a mirror.
#
# An alternative is "url", which points to a repository of files used for
# the deploy, similar to mounting an ISO media and exposing the files.

{% if 'is_source_a_path' in ks_options -%}
url --url {{ks_options.liveimg_url }}

# If packages are not selected, a URL based auto-deployment fails.
%packages --ignoremissing
%end
{% else -%}
liveimg --url {{ ks_options.liveimg_url }}
{% endif -%}

# Following %pre and %onerror sections are mandatory
%pre
/usr/bin/curl {% if 'insecure_heartbeat' in ks_options %}--insecure{% endif %} -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'X-OpenStack-Ironic-API-Version: 1.72' -d '{"callback_url": "", "agent_token": "{{ ks_options.agent_token }}", "agent_status": "start", "agent_status_message": "Deployment starting. Running pre-installation scripts."}' {{ ks_options.heartbeat_url }}
%end

%onerror
/usr/bin/curl {% if 'insecure_heartbeat' in ks_options %}--insecure{% endif %} -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'X-OpenStack-Ironic-API-Version: 1.72' -d '{"callback_url": "", "agent_token": "{{ ks_options.agent_token }}", "agent_status": "error", "agent_status_message": "Error: Deploying using anaconda. Check console for more information."}' {{ ks_options.heartbeat_url }}
%end

# Config-drive information, if any.
{{ ks_options.config_drive }}

# Sending callback after the installation is mandatory.
# This ought to be the last thing done; otherwise the
# ironic-conductor could reboot the node before anaconda
# finishes executing everything in this file.
# The sync makes sure that the data is flushed out to disk,
# before rebooting.
%post
sync
/usr/bin/curl {% if 'insecure_heartbeat' in ks_options %}--insecure{% endif %} -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'X-OpenStack-Ironic-API-Version: 1.72' -d '{"callback_url": "", "agent_token": "{{ ks_options.agent_token }}", "agent_status": "end", "agent_status_message": "Deployment completed successfully."}' {{ ks_options.heartbeat_url }}
%end
