Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,29 @@ include::_attributes/common-attributes.adoc[]
:context: ipi-install-installation-workflow

toc::[]
[role="_abstract"]
Review the different methods for installing {product-title} on bare metal and setup your environment for installation.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see anything on this assembly that talks about different install methods (which makes sense - by the time you're on a page in the bare metal IPI install section, you've already decided on this method). I would suggest focusing on the environment setup only:

Suggested change
Review the different methods for installing {product-title} on bare metal and setup your environment for installation.
Before you can install an {product-title} cluster on bare metal, you must set up your environment for installation.

(also a nit here that "set up" is two words as a verb, and "setup" is only used as a noun, per the ISG)


// Installing {op-system-base} on the provisioner node
include::modules/ipi-install-installing-rhel-on-the-provisioner-node.adoc[leveloffset=+1]

// Preparing the provisioner node for {product-title} installation
include::modules/ipi-install-preparing-the-provisioner-node-for-openshift-install.adoc[leveloffset=+1]

[role="_additional-resources"]
.Additional resources

* link:https://docs.redhat.com/en/documentation/subscription_central/1-latest/html/getting_started_with_rhel_system_registration/basic-reg-rhel-cli[Registering a {op-system-base} system with command-line tools]
* link:https://console.redhat.com/openshift/install/metal/installer-provisioned[Install OpenShift on Bare Metal with installer-provisioned infrastructure]

// Checking NTP server synchronization
include::modules/ipi-install-checking-ntp-sync.adoc[leveloffset=+1]

[role="_additional-resources"]
.Additional resources

* xref:../../../installing/installing_bare_metal/ipi/ipi-install-installation-workflow.adoc#configuring-ntp-for-disconnected-clusters_ipi-install-installation-workflow[Optional: Configuring NTP for disconnected clusters]

* xref:../../../installing/installing_bare_metal/ipi/ipi-install-prerequisites.adoc#network-requirements-ntp_ipi-install-prerequisites[Network Time Protocol (NTP)]
* xref:../../../installing/installing_bare_metal/ipi/ipi-install-installation-workflow.adoc#configuring-ntp-for-disconnected-clusters_ipi-install-installation-workflow[Optional: Configuring NTP for disconnected clusters]

// Configuring networking
include::modules/ipi-install-configuring-networking.adoc[leveloffset=+1]
Expand Down Expand Up @@ -77,21 +84,14 @@ include::modules/local-arbiter-node-config-prerequisites.adoc[leveloffset=+1]
// Configuring a local arbiter node
include::modules/ipi-install-config-local-arbiter-node.adoc[leveloffset=+1]

.Next steps

* xref:../../../installing/installing_bare_metal/ipi/ipi-install-installing-a-cluster.adoc#ipi-install-installing-a-cluster[Installing a cluster]

[role="_additional-resources"]
.Additional resources

* xref:../../../installing/installing_bare_metal/ipi/ipi-install-installing-a-cluster.adoc#ipi-install-installing-a-cluster[Installing a cluster]
* xref:../../../nodes/clusters/nodes-cluster-enabling-features.adoc#nodes-cluster-enabling-features-about_nodes-cluster-enabling-features[Understanding feature gates]

[id="ipi-install-configuration-files"]
[id="additional-resources_config"]
== Configuring the install-config.yaml file

// Configuring the install-config.yaml file
include::modules/ipi-install-configuring-the-install-config-file.adoc[leveloffset=+2]
include::modules/ipi-install-configuring-the-install-config-file.adoc[leveloffset=+1]

// Additional `install-config` parameters
include::modules/ipi-install-additional-install-config-parameters.adoc[leveloffset=+2]
Expand All @@ -103,7 +103,6 @@ include::modules/ipi-install-bmc-addressing.adoc[leveloffset=+2]
.Additional resources

* xref:../../../vcp/vcp-overview.adoc#vcp-overview[Understanding virtualized control planes]

* xref:../../../installing/installing_bare_metal/bare-metal-postinstallation-configuration.adoc#bmo-editing-a-baremetalhost-resource_bare-metal-postinstallation-configuration[Editing a BareMetalHost resource]

// Verifying support for the Redfish API
Expand Down Expand Up @@ -156,11 +155,8 @@ include::modules/ipi-install-configure-multiple-cluster-nodes.adoc[leveloffset=+
// Optional: Configuring managed Secure Boot
include::modules/ipi-install-configuring-managed-secure-boot-in-the-install-config-file.adoc[leveloffset=+2]

[id="ipi-install-manifest-configuration-files"]
== Manifest configuration files

// Creating the {product-title} manifests
include::modules/ipi-install-creating-the-openshift-manifests.adoc[leveloffset=+2]
include::modules/ipi-install-creating-the-openshift-manifests.adoc[leveloffset=+1]

// Optional: Configuring NTP for disconnected clusters
include::modules/ipi-install-configuring-ntp-for-disconnected-clusters.adoc[leveloffset=+2]
Expand Down Expand Up @@ -197,11 +193,9 @@ include::modules/ipi-install-configuring-storage-on-nodes.adoc[leveloffset=+2]
// Creating a disconnected registry
include::modules/ipi-install-creating-a-disconnected-registry.adoc[leveloffset=+1]


[id="prerequisites_ipi-disconnected-registry"]
=== Prerequisites

* If you have already prepared a mirror registry for xref:../../../disconnected/installing-mirroring-installation-images.adoc#prerequisites_installing-mirroring-installation-images[Mirroring images for a disconnected installation], you can skip directly to xref:../../../installing/installing_bare_metal/ipi/ipi-install-installation-workflow.adoc#ipi-modify-install-config-for-a-disconnected-registry_ipi-install-installation-workflow[Modify the install-config.yaml file to use the disconnected registry].
[role="_additional-resources"]
.Additional resources
* xref:../../../disconnected/installing-mirroring-installation-images.adoc#prerequisites_installing-mirroring-installation-images[Mirroring images for a disconnected installation]

// Preparing the registry node to host the mirrored registry
include::modules/ipi-install-preparing-a-disconnected-registry.adoc[leveloffset=+2]
Expand Down
4 changes: 2 additions & 2 deletions modules/creating-manifest-file-customized-br-ex-bridge.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ spec:
----
+
where:
+

`metadata.name`:: Specifies the name of the policy.
`contents.source`:: Writes the encoded base64 information to the specified path.
`path`:: For each node in your cluster, specify the hostname path to your node and the base-64 encoded Ignition configuration file data for the machine type. The `worker` role is the default role for nodes in your cluster. You must use the `.yml` extension for configuration files. For example, use `$(hostname -s).yml` when specifying the short hostname path for each node or all nodes in the `MachineConfig` manifest file.
Expand Down Expand Up @@ -205,7 +205,7 @@ endif::agent[]
ifndef::agent[]
.Next steps

* Scaling compute nodes to apply the manifest object that includes a customized `br-ex` bridge to each compute node that exists in your cluster. For more information, see "Expanding the cluster" in the _Additional resources_ section.
* Scaling compute nodes to apply the manifest object that includes a customized `br-ex` bridge to each compute node that exists in your cluster. For more information, see "Expanding the cluster".
endif::agent[]
ifeval::["{context}" == "installing-with-agent-based-installer"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,5 +73,7 @@ $ oc get machinesets
----
$ oc scale machineset <machineset_name> --replicas=<n>
----
* <n>: Where `<machineset_name>` is the name of the machine set and `<n>` is the number of compute nodes.
where:

`<machineset_name>`:: Specifies the name of the machine set.
`<n>`:: Specifies the number of compute nodes.
3 changes: 2 additions & 1 deletion modules/ipi-install-checking-ntp-sync.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@
[id="checking-ntp-sync_{context}"]
= Checking NTP server synchronization

[role="_abstract"]
The {product-title} installation program installs the `chrony` Network Time Protocol (NTP) service on the cluster nodes. To complete installation, each node must have access to an NTP time server. You can verify NTP server synchronization by using the `chrony` service.

For disconnected clusters, you must configure the NTP servers on the control plane nodes. For more information see the _Additional resources_ section.
For disconnected clusters, you must configure the NTP servers on the control plane nodes. For more information see "Configuring NTP for disconnected clusters".

.Prerequisites

Expand Down
22 changes: 12 additions & 10 deletions modules/ipi-install-config-local-arbiter-node.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,20 @@ compute:
name: worker
platform: {}
replicas: 0
arbiter: <1>
arbiter:
architecture: amd64
hyperthreading: Enabled
replicas: 1 <2>
name: arbiter <3>
replicas: 1
name: arbiter
platform:
baremetal: {}
controlPlane: <4>
controlPlane:
architecture: amd64
hyperthreading: Enabled
name: master
platform:
baremetal: {}
replicas: 2 <5>
replicas: 2
platform:
baremetal:
# ...
Expand All @@ -57,10 +57,12 @@ platform:
role: arbiter
# ...
----
<1> Defines the arbiter machine pool. You must configure this field to deploy a cluster with an arbiter node.
<2> Set the `replicas` field to `1` for the arbiter pool. You cannot set this field to a value that is greater than 1.
<3> Specifies a name for the arbiter machine pool.
<4> Defines the control plane machine pool.
<5> When an arbiter pool is defined, two control plane replicas are valid.
where:

`arbiter`:: Specifies the arbiter machine pool. You must configure this field to deploy a cluster with an arbiter node.
`arbiter.replicas`:: Specifies the value for the `arbiter.replicas` parameter. Set the `replicas` field to `1` for the arbiter pool. You cannot set this field to a value that is greater than 1.
`arbiter.name`:: Specifies a name for the arbiter machine pool.
`controlPlane`:: Specifies the control plane machine pool.
`controlPlane.replicas`:: Specifies the value for the `controlPlane.replicas` parameter. When an arbiter pool is defined, two control plane replicas are valid.

. Save the modified `install-config.yaml` file.
15 changes: 8 additions & 7 deletions modules/ipi-install-configuring-networking.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
[id="configuring-networking_{context}"]
= Configuring networking

Before installation, you must configure networking settings for the provisioner node. Installer-provisioned clusters deploy with a bare-metal bridge and network resources, and an optional provisioning bridge and network resources.
[role="_abstract"]
Before installation, you must configure networking settings for the provisioner node. Installer-provisioned clusters deploy with a bare metal bridge and network resources, and an optional provisioning bridge and network resources.

image::210_OpenShift_Baremetal_IPI_Deployment_updates_0122_1.png[Configure networking]

Expand Down Expand Up @@ -36,12 +37,12 @@ $ nmcli con delete "System <baremetal_nic_name>"
----
+
where:
+

`<baremetal_nic_name>`:: Replace `<baremetal_nic_name>` with the name of your network interface controller (NIC).
+
.. For a network that uses Dynamic Host Configuration Protocol (DHCP), create an NMState YAML file and specify the bare-metal bridge interface and any physical interfaces in the file:
.. For a network that uses Dynamic Host Configuration Protocol (DHCP), create an NMState YAML file and specify the bare metal bridge interface and any physical interfaces in the file:
+
.Example bare-metal bridge interface configuration that uses DHCP
.Example bare metal bridge interface configuration that uses DHCP
[source,yaml]
----
# ...
Expand All @@ -68,9 +69,9 @@ interfaces:
# ...
----
+
.. For a network using static IP addressing and no DHCP network, create an NMState YAML file and specify the bare-metal bridge interface details in the file:
.. For a network using static IP addressing and no DHCP network, create an NMState YAML file and specify the bare metal bridge interface details in the file:
+
.Example bare-metal bridge interface configuration that uses static IP addressing and no DHCP network
.Example bare metal bridge interface configuration that uses static IP addressing and no DHCP network
[source,yaml]
----
# ...
Expand Down Expand Up @@ -110,7 +111,7 @@ interfaces:
----
+
where:
+

`<dns-resolver>`:: Defines the DNS server for your bare-metal system.
`<server>`:: Replace `<dns_ip_address>` with the IP address for the DNS server.
`<type>`:: Defines the bridge interface and its static IP configuration.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,10 @@ storage:
# Serve time even if not synchronized to a time source.
local stratum 3 orphan
----
+

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lol I am confused by how these description lists still indent correctly and don't restart the number order without the first +, but I guess if it works it works

where:
+
--

`<cluster-name>`:: Specifies the name of the cluster.
`<domain>`:: Specifies the fully qualified domain name.
--

. Use Butane to generate a `MachineConfig` object file, `99-master-chrony-conf-override.yaml`, containing the configuration to be delivered to the control plane nodes:
+
Expand Down Expand Up @@ -135,13 +132,10 @@ storage:
logchange 0.5
logdir /var/log/chrony
----
+
where:
+
--

`<cluster-name>`:: Specifies the name of the cluster.
`<domain>`:: Specifies the fully qualified domain name.
--

. Use Butane to generate a `MachineConfig` object file, `99-worker-chrony-conf-override.yaml`, containing the configuration to be delivered to the worker nodes:
+
Expand Down
38 changes: 21 additions & 17 deletions modules/ipi-install-configuring-the-install-config-file.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
[id="configuring-the-install-config-file_{context}"]
= Configuring the install-config.yaml file

[role="_abstract"]
The `install-config.yaml` file requires some additional details.
Most of the information teaches the installation program and the resulting cluster enough about the available hardware that it is able to fully manage it.

Expand All @@ -14,6 +15,8 @@ Most of the information teaches the installation program and the resulting clust
The installation program no longer needs the `clusterOSImage` {op-system} image because the correct image is in the release payload.
====

.Procedure

. Configure `install-config.yaml`. Change the appropriate variables to match the environment, including `pullSecret` and `sshKey`:
+
[source,yaml]
Expand All @@ -28,34 +31,34 @@ networking:
networkType: OVNKubernetes
compute:
- name: worker
replicas: 2 <1>
replicas: 2
controlPlane:
name: master
replicas: 3
platform:
baremetal: {}
platform:
baremetal:
additionalNTPServers: <2>
additionalNTPServers:
- <ntp_domain_or_ip>
apiVIPs:
- <api_ip>
ingressVIPs:
- <wildcard_ip>
provisioningNetworkCIDR: <CIDR>
bootstrapExternalStaticIP: <bootstrap_static_ip_address> <3>
bootstrapExternalStaticGateway: <bootstrap_static_gateway> <4>
bootstrapExternalStaticDNS: <bootstrap_static_dns> <5>
bootstrapExternalStaticIP: <bootstrap_static_ip_address>
bootstrapExternalStaticGateway: <bootstrap_static_gateway>
bootstrapExternalStaticDNS: <bootstrap_static_dns>
hosts:
- name: openshift-master-0
role: master
bmc:
address: ipmi://<out_of_band_ip> <6>
address: ipmi://<out_of_band_ip>
username: <user>
password: <password>
bootMACAddress: <NIC1_mac_address>
rootDeviceHints:
deviceName: "<installation_disk_drive_path>" <7>
deviceName: "<installation_disk_drive_path>"
- name: <openshift_master_1>
role: master
bmc:
Expand Down Expand Up @@ -94,14 +97,15 @@ pullSecret: '<pull_secret>'
sshKey: '<ssh_pub_key>'
----
+
--
<1> Scale the compute machines based on the number of compute nodes that are part of the {product-title} cluster. Valid options for the `replicas` value are `0` and integers greater than or equal to `2`. Set the number of replicas to `0` to deploy a three-node cluster, which contains only three control plane machines. A three-node cluster is a smaller, more resource-efficient cluster that can be used for testing, development, and production. You cannot install the cluster with only one compute node.
<2> An optional list of additional NTP server domain names or IP addresses to add to each host configuration when the cluster host clocks are out of synchronization.
<3> When deploying a cluster with static IP addresses, you must set the `bootstrapExternalStaticIP` configuration setting to specify the static IP address of the bootstrap VM when there is no DHCP server on the bare metal network.
<4> When deploying a cluster with static IP addresses, you must set the `bootstrapExternalStaticGateway` configuration setting to specify the gateway IP address for the bootstrap VM when there is no DHCP server on the bare metal network.
<5> When deploying a cluster with static IP addresses, you must set the `bootstrapExternalStaticDNS` configuration setting to specify the DNS address for the bootstrap VM when there is no DHCP server on the bare metal network.
<6> See the BMC addressing sections for more options.
<7> To set the path to the installation disk drive, enter the kernel name of the disk. For example, `/dev/sda`.
where:

`compute.replicas`:: Specifies the value for the `compute.replicas` parameter. Scale the compute machines based on the number of compute nodes that are part of the {product-title} cluster. Valid options for the `replicas` value are `0` and integers greater than or equal to `2`. Set the number of replicas to `0` to deploy a three-node cluster, which contains only three control plane machines. A three-node cluster is a smaller, more resource-efficient cluster that can be used for testing, development, and production. You cannot install the cluster with only one compute node.
`platform.baremetal.additionalNTPServers`:: Specifies the optional list of additional NTP server domain names or IP addresses to add to each host configuration when the cluster host clocks are out of synchronization.
`platform.baremetal.bootstrapExternalStaticIP`:: Specifies the value for the `bootstrapExternalStaticIP` parameter. When deploying a cluster with static IP addresses, you must set the `bootstrapExternalStaticIP` configuration setting to specify the static IP address of the bootstrap VM when there is no DHCP server on the bare metal network.
Comment thread
rh-sgehlot marked this conversation as resolved.
`platform.baremetal.bootstrapExternalStaticGateway`:: Specifies the value for the `bootstrapExternalStaticGateway` parameter. When deploying a cluster with static IP addresses, you must set the `bootstrapExternalStaticGateway` configuration setting to specify the gateway IP address for the bootstrap VM when there is no DHCP server on the bare metal network.
Comment thread
rh-sgehlot marked this conversation as resolved.
`platform.baremetal.bootstrapExternalStaticDNS`:: Specifies the value for the `bootstrapExternalStaticDNS` parameter. When deploying a cluster with static IP addresses, you must set the `bootstrapExternalStaticDNS` configuration setting to specify the DNS address for the bootstrap VM when there is no DHCP server on the bare metal network.
Comment thread
rh-sgehlot marked this conversation as resolved.
`platform.baremetal.hosts.bmc.address`:: Specifies the value for the `platform.baremetal.hosts.bmc.address` parameter. See the BMC addressing sections for more options.
`platform.baremetal.hosts.rootDeviceHints.deviceName`:: Specifies the value for the `platform.baremetal.hosts.rootDeviceHints.deviceName` parameter. To set the path to the installation disk drive, enter the kernel name of the disk. For example, `/dev/sda`.
+
[IMPORTANT]
====
Expand All @@ -117,12 +121,12 @@ Failure to meet these requirements for the `rootDeviceHints` parameter might res
ironic-inspector inspection failed: No disks satisfied root device hints
----
====

+
[NOTE]
====
Before {product-title} 4.12, the cluster installation program only accepted an IPv4 address or an IPv6 address for the `apiVIP` and `ingressVIP` configuration settings. In {product-title} 4.12 and later, these configuration settings are deprecated. Instead, use a list format in the `apiVIPs` and `ingressVIPs` configuration settings to specify IPv4 addresses, IPv6 addresses, or both IP address formats.
====
--

. Create a directory to store the cluster configuration:
+
[source,terminal]
Expand Down
4 changes: 3 additions & 1 deletion modules/ipi-install-creating-a-disconnected-registry.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
[id="ipi-install-creating-a-disconnected-registry_{context}"]
= Creating a disconnected registry

[]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gotta fill this one out 😅

In some cases, you might want to install an {product-title} cluster using a local copy of the installation registry. This could be for enhancing network efficiency because the cluster nodes are on a network that does not have access to the internet.

A local, or mirrored, copy of the registry requires the following:
Expand All @@ -17,5 +18,6 @@ A local, or mirrored, copy of the registry requires the following:
[NOTE]
====
Creating a disconnected registry on a registry node is optional. If you need to create a disconnected registry on a registry node, you must complete all of the following sub-sections.
* Creating a disconnected registry on a registry node is optional. If you need to create a disconnected registry on a registry node, you must complete all of the following sub-sections.
* If you have already prepared a mirror registry for a disconnected installation by mirroring images, you can skip directly to "Modify the install-config.yaml file to use the disconnected registry" section. For more information about preparing a mirror registry for a disconnected installation by mirroring images see, "Mirroring images for a disconnected installation".

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah this is a smart way to deal with that "prereqs" section that didn't really seem to be written like a prereqs section

====
Loading