// Module included in the following assemblies:
//
// * installing/installing_openstack/installing-openstack-user.adoc

:_mod-docs-content-type: PROCEDURE
[id="installation-osp-updating-network-resources_{context}"]
= Updating network resources on {rh-openstack}

[role="_abstract"]
Update the network resources that an {product-title} on {rh-openstack-first} installation on your own infrastructure requires.

.Prerequisites

* Python 3 is installed on your machine.
* You downloaded the modules in "Downloading playbook dependencies".
* You downloaded the playbooks in "Downloading the installation playbooks".

.Procedure

. Optional: Add an external network value to the `inventory.yaml` playbook:
+
.Example external network value in the `inventory.yaml` Ansible Playbook
[source,yaml]
----
...
      # The public network providing connectivity to the cluster. If not
      # provided, the cluster external connectivity must be provided in another
      # way.

      # Required for os_api_fip, os_ingress_fip, os_bootstrap_fip.
      os_external_network: 'external'
...
----
+
[IMPORTANT]
====
If you did not provide a value for `os_external_network` in the `inventory.yaml` file, you must ensure that VMs can access Glance and an external connection yourself.
====

. Optional: Add external network and floating IP (FIP) address values to the `inventory.yaml` playbook:
+
.Example FIP values in the `inventory.yaml` Ansible Playbook
[source,yaml]
----
...
      # OpenShift API floating IP address. If this value is non-empty, the
      # corresponding floating IP will be attached to the Control Plane to
      # serve the OpenShift API.
      os_api_fip: '203.0.113.23'

      # OpenShift Ingress floating IP address. If this value is non-empty, the
      # corresponding floating IP will be attached to the worker nodes to serve
      # the applications.
      os_ingress_fip: '203.0.113.19'

      # If this value is non-empty, the corresponding floating IP will be
      # attached to the bootstrap machine. This is needed for collecting logs
      # in case of install failure.
      os_bootstrap_fip: '203.0.113.20'
----
+
[IMPORTANT]
====
If you do not define values for `os_api_fip` and `os_ingress_fip`, you must perform postinstallation network configuration.

If you do not define a value for `os_bootstrap_fip`, the installation program cannot download debugging information from failed installations.

See "Enabling access to the environment" for more information.
====

. On a command line, create security groups by running the `security-groups.yaml` playbook:
+
[source,terminal]
----
$ ansible-playbook -i inventory.yaml security-groups.yaml
----

. On a command line, update the network resources by running the `update-network-resources.yaml` playbook:
+
[source,terminal]
----
$ ansible-playbook -i inventory.yaml update-network-resources.yaml
----
** The playbook adds tags to the network, subnets, ports, and router. The playbook also attaches floating IP addresses to the API and Ingress ports and sets the security groups for those ports.

. Optional: If you want to control the default resolvers that Nova servers use, run the {rh-openstack} CLI command:
+
[source,terminal]
----
$ openstack subnet set --dns-nameserver <server_1> --dns-nameserver <server_2> "$INFRA_ID-nodes"
----

. Optional: You can use the `inventory.yaml` file that you created to customize your installation. For example, you can deploy a cluster that uses bare-metal machines.
