:_mod-docs-content-type: ASSEMBLY
[id="installing-openstack-user"]
= Installing a cluster on OpenStack on your own infrastructure
include::_attributes/common-attributes.adoc[]
:context: installing-openstack-user

toc::[]

In {product-title} version {product-version}, you can install a cluster on
{rh-openstack-first} that runs on user-provisioned infrastructure.

Using your own infrastructure allows you to integrate your cluster with existing infrastructure and modifications. The process requires more labor on your part than installer-provisioned installations, because you must create all {rh-openstack} resources, like Nova servers, Neutron ports, and security groups. However, Red Hat provides Ansible playbooks to help you in the deployment process.

== Prerequisites

* You reviewed details about the xref:../../architecture/architecture-installation.adoc#architecture-installation[{product-title} installation and update] processes.
* You read the documentation on xref:../../installing/installing-preparing.adoc#installing-preparing[selecting a cluster installation method and preparing it for users].
* You verified that {product-title} {product-version} is compatible with your {rh-openstack} version by using the xref:../../architecture/architecture-installation.adoc#supported-platforms-for-openshift-clusters_architecture-installation[Supported platforms for OpenShift clusters] section. You can also compare platform support across different versions by viewing the link:https://access.redhat.com/articles/4679401[{product-title} on {rh-openstack} support matrix].
* You have an {rh-openstack} account where you want to install {product-title}.
* You understand performance and scalability practices for cluster scaling, control plane sizing, and etcd. For more information, see xref:../../scalability_and_performance/recommended-performance-scale-practices/recommended-control-plane-practices.adoc#recommended-host-practices[Recommended practices for scaling the cluster].
* On the machine from which you run the installation program, you have:
** A single directory in which you can keep the files you create during the installation process
** Python 3

include::modules/cluster-entitlements.adoc[leveloffset=+1]
include::modules/installation-osp-default-deployment.adoc[leveloffset=+1]
include::modules/installation-osp-control-compute-machines.adoc[leveloffset=+2]
include::modules/installation-osp-bootstrap-machine.adoc[leveloffset=+2]
include::modules/installation-osp-downloading-modules.adoc[leveloffset=+1]
include::modules/installation-osp-downloading-playbooks.adoc[leveloffset=+1]
include::modules/installation-obtaining-installer.adoc[leveloffset=+1]
include::modules/ssh-agent-using.adoc[leveloffset=+1]
// include::modules/installation-osp-enabling-swift.adoc[leveloffset=+1]
include::modules/installation-osp-creating-image.adoc[leveloffset=+1]
include::modules/installation-osp-verifying-external-network.adoc[leveloffset=+1]
include::modules/installation-osp-accessing-api.adoc[leveloffset=+1]
include::modules/installation-osp-accessing-api-floating.adoc[leveloffset=+2]
include::modules/installation-osp-accessing-api-no-floating.adoc[leveloffset=+2]
include::modules/installation-osp-describing-cloud-parameters.adoc[leveloffset=+1]
include::modules/installation-osp-creating-network-resources.adoc[leveloffset=+1]
include::modules/installation-initializing.adoc[leveloffset=+1]

[role="_additional-resources"]
.Additional resources
* xref:../../installing/installing_openstack/installation-config-parameters-openstack.adoc#installation-config-parameters-openstack[Installation configuration parameters for OpenStack]

include::modules/installation-osp-custom-subnet.adoc[leveloffset=+2]
include::modules/installation-osp-config-yaml.adoc[leveloffset=+2]
include::modules/installation-osp-fixing-subnet.adoc[leveloffset=+2]
include::modules/installation-osp-emptying-worker-pools.adoc[leveloffset=+2]
include::modules/installation-osp-provider-networks.adoc[leveloffset=+2]
include::modules/installation-osp-provider-network-preparation.adoc[leveloffset=+3]
include::modules/installation-osp-deploying-provider-networks-installer.adoc[leveloffset=+3]

[TIP]
====
You can add additional networks, including provider networks, to the `platform.openstack.additionalNetworkIDs` list.

After you deploy your cluster, you can attach pods to additional networks. For more information, see xref:../../networking/multiple_networks/understanding-multiple-networks.adoc#understanding-multiple-networks[Understanding multiple networks].
====

include::modules/installation-user-infra-generate-k8s-manifest-ignition.adoc[leveloffset=+1]
include::modules/installation-osp-converting-ignition-resources.adoc[leveloffset=+1]
include::modules/installation-osp-creating-control-plane-ignition.adoc[leveloffset=+1]
include::modules/installation-osp-updating-network-resources.adoc[leveloffset=+1]

include::modules/installation-osp-deploying-bare-metal-machines.adoc[leveloffset=+2]

include::modules/installation-osp-creating-bootstrap-machine.adoc[leveloffset=+1]
include::modules/installation-osp-creating-control-plane.adoc[leveloffset=+1]
include::modules/cli-logging-in-kubeadmin.adoc[leveloffset=+1]
include::modules/installation-osp-deleting-bootstrap-resources.adoc[leveloffset=+1]
include::modules/installation-osp-creating-compute-machines.adoc[leveloffset=+1]
include::modules/installation-approve-csrs.adoc[leveloffset=+1]
include::modules/installation-osp-verifying-installation.adoc[leveloffset=+1]

include::modules/cluster-telemetry.adoc[leveloffset=+1]

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

* See xref:../../support/remote_health_monitoring/about-remote-health-monitoring.adoc#about-remote-health-monitoring[About remote health monitoring] for more information about the Telemetry service

== Next steps

* xref:../../post_installation_configuration/cluster-tasks.adoc#available_cluster_customizations[Customize your cluster].
* If necessary, you can
xref:../../support/remote_health_monitoring/opting-out-of-remote-health-reporting.adoc#opting-out-remote-health-reporting_opting-out-remote-health-reporting[opt out of remote health reporting].
* If you need to enable external access to node ports, xref:../../networking/configuring_ingress_cluster_traffic/configuring-ingress-cluster-traffic-nodeport.adoc#nw-using-nodeport_configuring-ingress-cluster-traffic-nodeport[configure ingress cluster traffic by using a node port].
* If you did not configure {rh-openstack} to accept application traffic over floating IP addresses, xref:../../post_installation_configuration/network-configuration.adoc#installation-osp-configuring-api-floating-ip_post-install-network-configuration[configure {rh-openstack} access with floating IP addresses].
