// Module included in the following assemblies:
//
// * installing/installing_bare_metal/ipi/ipi-install-prerequisites.adoc

:_mod-docs-content-type: REFERENCE

[id="installation-overview_{context}"]
= Installation overview

The installation program supports interactive mode. However, you can prepare an `install-config.yaml` file containing the provisioning details for all of the bare-metal hosts, and the relevant cluster details, in advance.

The installation program loads the `install-config.yaml` file and the administrator generates the manifests and verifies all prerequisites.

The installation program performs the following tasks:

* Enrolls all nodes in the cluster
* Starts the bootstrap virtual machine (VM)
* Starts the metal platform components as `systemd` services, which have the following containers:

** Ironic-dnsmasq: The DHCP server responsible for handing over the IP addresses to the provisioning interface of various nodes on the provisioning network. Ironic-dnsmasq is only enabled when you deploy an {product-title} cluster with a provisioning network.
** Ironic-httpd: The HTTP server that is used to ship the images to the nodes.
** Image-customization
** Ironic
** Ironic-inspector (available in {product-title} 4.16 and earlier)
** Ironic-ramdisk-logs
** Extract-machine-os
** Provisioning-interface
** Metal3-baremetal-operator

The nodes enter the validation phase, where each node moves to a _manageable_ state after Ironic validates the credentials to access the Baseboard Management Controller (BMC).

When the node is in the manageable state, the _inspection_ phase starts. The inspection phase ensures that the hardware meets the minimum requirements needed for a successful deployment of {product-title}.

The `install-config.yaml` file details the provisioning network. On the bootstrap VM, the installation program uses the Pre-Boot Execution Environment (PXE) to push a live image to every node with the Ironic Python Agent (IPA) loaded. When using virtual media, it connects directly to the BMC of each node to virtually attach the image.

When using PXE boot, all nodes reboot to start the process:

* The `ironic-dnsmasq` service running on the bootstrap VM provides the IP address of the node and the TFTP boot server.
* The first-boot software loads the root file system over HTTP.
* The `ironic` service on the bootstrap VM receives the hardware information from each node.

The nodes enter the cleaning state, where each node must clean all the disks before continuing with the configuration.

After the cleaning state finishes, the nodes enter the available state and the installation program moves the nodes to the deploying state.

IPA runs the `coreos-installer` command to install the {op-system-first} image on the disk defined by the `rootDeviceHints` parameter in the `install-config.yaml` file. The node boots by using {op-system}.

After the installation program configures the control plane nodes, it moves control from the bootstrap VM to the control plane nodes and deletes the bootstrap VM.

The Bare-Metal Operator continues the deployment of the workers, storage, and infra nodes.

After the installation completes, the nodes move to the active state. You can then proceed with postinstallation configuration and other Day 2 tasks.
