// Module included in the following assemblies:
//
// microshift_install_bootc/microshift-install-running-bootc-image-in-VM.adoc

:_mod-docs-content-type: PROCEDURE
[id="microshift-install-bootc-prepare-kickstart_{context}"]
= Creating the Kickstart file

[role="_abstract"]
You must create the Kickstart file to use during installation.

.Prerequisites

* You have root-user access.
* You are logged in to the physical hypervisor host.

.Procedure

. Set the `AUTH_CONFIG` environment variable to reference the secret file in the `kickstart.ks` file to authenticate private container registry access by running the following command:
+
[source,terminal]
----
$ AUTH_CONFIG=~/.quay-auth.json
----

. Set the `PULL_SECRET` environment variable to reference the secret files in the `kickstart.ks` file to authenticate the {OCP} registry access by running the following command:
+
[source,terminal]
----
$ PULL_SECRET=~/.pull-secret.json
----

. Set the `IMAGE_REF` environment variable to reference the image mode for your container image to use during installation by running the following command:
+
[source,terminal,subs="attributes+,quotes"]
----
$ IMAGE_REF="quay.io/_<myorg>/<mypath>_/microshift-{product-version}-bootc"
----
+
Replace _<myorg/<mypath>_ with your remote registry organization name and path.

. Create the `kickstart.ks` file to use during installation by running the following script:
+
[source,terminal]
----
$ cat > kickstart.ks <<EOFKS
lang en_US.UTF-8
keyboard us
timezone UTC
text
reboot

# Partition the disk with hardware-specific boot and swap partitions, adding an
# LVM volume that contains a 10GB+ system root. The remainder of the volume will
# be used by the CSI driver for storing data.
zerombr
clearpart --all --initlabel
# Create boot and swap partitions as required by the current hardware platform
reqpart --add-boot
# Add an LVM volume group and allocate a system root logical volume
part pv.01 --grow
volgroup rhel pv.01
logvol / --vgname=rhel --fstype=xfs --size=10240 --name=root

# Lock root user account
rootpw --lock

# Configure network to use DHCP and activate on boot
network --bootproto=dhcp --device=link --activate --onboot=on

%pre-install --log=/dev/console --erroronfail

# Create a 'bootc' image registry authentication file
mkdir -p /etc/ostree
cat > /etc/ostree/auth.json <<'EOF'
$(cat "${AUTH_CONFIG}")
EOF

%end

# Pull a 'bootc' image from a remote registry
ostreecontainer --url "${IMAGE_REF}"

%post --log=/dev/console --erroronfail

# Create an OpenShift pull secret file
cat > /etc/crio/openshift-pull-secret <<'EOF'
$(cat "${PULL_SECRET}")
EOF
chmod 600 /etc/crio/openshift-pull-secret

%end
EOFKS
----
