Ce contenu n'est pas disponible dans la langue sélectionnée.

Chapter 2. Managing project networks


Project networks help you to isolate network traffic for cloud computing. You can create IPv4 or IPv6 networks and subnets, and use routers to connect them.

This section contains the following topics:

2.1. Creating a network

Create a network so that instances in your Red Hat OpenStack Services on OpenShift (RHOSO) can communicate with each other and receive IP addresses using DHCP. For more information about external network connections, see Bridging the physical network in Configuring networking services.

Prerequisites

  • The administrator has created a project for you and has provided you with a clouds.yaml file for you to access the cloud.
  • The python-openstackclient package resides on your workstation.

    $ dnf list installed python-openstackclient

Procedure

  1. Confirm that the system OS_CLOUD variable is set for your cloud:

    $ echo $OS_CLOUD
    my_cloud

    Reset the variable if necessary:

    $ export OS_CLOUD=my_other_cloud

    As an alternative, you can specify the cloud name by adding the --os-cloud <cloud_name> option each time you run an openstack command.

  2. Create a network.

    Example
    $ openstack network create my_network
    Tip
    • If you do not intend to enter the network into production immediately, you can add the --disable option to the create network command.
    • Consider naming your network for the role that the network provides. One example: webservers_122 is a network that host web servers and the VLAN ID is 122.

Verification

  • Confirm that the network was added:

    $ openstack network list -c Name
    Sample output
    +-------------+
    | Name        |
    +-------------+
    | my_network  |
    | private     |
    | public      |
    | lb-mgmt-net |
    +-------------+

Next steps

2.2. Creating a subnet

Red Hat OpenStack Services on OpenShift (RHOSO) environments rely on subnets to logically divide a network as a means to provide efficiency and isolation.

VM instances using the same subnet can communicate without passing data traffic through a router. Locating systems that require a high volume of traffic between them in the same subnet, avoids the subsequent latency and load.

By using different subnets for different purposes, you can isolate data traffic. For example, web server traffic might use one subnet, and database traffic might use another subnet. Instances that want to communicate with instances in another subnet must direct their data traffic through a router.

Prerequisites

  • The administrator has created a project for you and has provided you with a clouds.yaml file for you to access the cloud.
  • The python-openstackclient package resides on your workstation.

    $ dnf list installed python-openstackclient

Procedure

  1. Confirm that the system OS_CLOUD variable is set for your cloud:

    $ echo $OS_CLOUD
    my_cloud

    Reset the variable if necessary:

    $ export OS_CLOUD=my_other_cloud

    As an alternative, you can specify the cloud name by adding the --os-cloud <cloud_name> option each time you run an openstack command.

  2. Obtain the name of the network to which you want to add a subnet:

    $ openstack network list
  3. Create a subnet.

    $ openstack subnet create <subnet-name> --subnet-range <CIDR> --network <name>
    • Replace <subnet-name> with the name of the subnet you are creating.
    • Replace <CIDR> with the IP address range and subnet mask in CIDR format.

      To determine the CIDR address, calculate the number of bits masked in the subnet mask and append that value to the IP address range. For example, the subnet mask 255.255.255.0 has 24 masked bits. To use this mask with the IPv4 address range 192.168.122.0, specify the address 192.168.122.0/24.

    • Replace <name> with the name of the network to which you are adding the subnet.

      Tip

      DHCP services automate the distribution of IP settings to your instances and is enabled by default. Specify --no-dhcp to diable DHCP.

Verification

  • Confirm that the subnet was added:

    $ openstack subnet list -c Name -c Network -c Subnet --max-width=72
    Sample output
    +----------------------+-------------------------+---------------------+
    | Name                 | Network                 | Subnet              |
    +----------------------+-------------------------+---------------------+
    | private_subnet24     | 317be3d3-5265-43f7-b52b | 10.0.24.0/24        |
    |                      | -930e3fd19b8b           |                     |
    | lb-mgmt-subnet       | c4588d49-9151-414b-8832 | 172.24.0.0/16       |
    |                      | -37313e3b4c57           |                     |
    | external_subnet      | bcdb3cc0-8c0b-4d2d-813c | 10.0.0.0/24         |
    |                      | -e141bb97aa8f           |                     |
    | external_ipv6_subnet | bcdb3cc0-8c0b-4d2d-813c | 2620:52:0:13b8::/64 |
    |                      | -e141bb97aa8f           |                     |
    | private_subnet       | 317be3d3-5265-43f7-b52b | 10.0.1.0/24         |
    |                      | -930e3fd19b8b           |                     |
    +----------------------+-------------------------+---------------------+

    When you create instances, you can configure them now to use its subnet, and they receive any specified DHCP options.

Next steps

  • If you need to modify the subnet, use the openstack subnet set command.

2.3. IPv6 subnet options

In Red Hat OpenStack Services on OpenShift (RHOSO) environments, when you create IPv6 subnets in a project network you can specify address mode and router advertisement mode to obtain a particular result as described in the following table.

Note

RHOSO does not support IPv6 prefix delegation from an external entity. You must obtain the Global Unicast Address (GUA) prefix from your external prefix delegation router and set it by using the subnet-range argument during creation of a IPv6 subnet.

Example
$ openstack subnet create --ip-version 6\
--subnet-range 2002:c000:200::64 \
--no-dhcp \
--gateway 2002:c000:2fe:: \
--dns-nameserver 2002:c000:2fe:: \
--network provider \
provider-subnet-2002:c000:200::
Sample output
+----------------------+--------------------------------------+
| Field                | Value                                |
+----------------------+--------------------------------------+
| allocation_pools     | 2002:c000:200::64-2002:c000:200::64  |
| cidr                 | 2002:c000:200::64/128                |
| created_at           | 2024-09-24T19:30:07Z                 |
| description          |                                      |
| dns_nameservers      | 2002:c000:2fe::                      |
| dns_publish_fixed_ip | None                                 |
| enable_dhcp          | False                                |
| gateway_ip           | 2002:c000:200::64                    |
| host_routes          |                                      |
| id                   | 49dda67d-814e-457b-b14b-77ef32935c0f |
| ip_version           | 6                                    |
| ipv6_address_mode    | None                                 |
| ipv6_ra_mode         | None                                 |
| name                 | provider-subnet-2002:c000:200::      |
| network_id           | bcdb3cc0-8c0b-4d2d-813c-e141bb97aa8f |
| prefix_length        | None                                 |
| project_id           | 24089d2fe1a94dd29ca2f665794fbe92     |
| revision_number      | 0                                    |
| segment_id           | None                                 |
| service_types        | None                                 |
| subnetpool_id        | None                                 |
| tags                 |                                      |
| updated_at           | 2024-09-24T19:30:07Z                 |
+----------------------+--------------------------------------+
Expand
RA ModeAddress ModeResult

ipv6_ra_mode=not set

ipv6-address-mode=slaac

The instance receives an IPv6 address from the external router (not managed by OpenStack Networking) using stateless address autoconfiguration (SLAAC).

Note

The RHOSO Networking service (neutron) supports only EUI-64 IPv6 address assignment for SLAAC. This allows for simplified IPv6 networking, as hosts self-assign addresses based on the base 64-bits plus the MAC address. You cannot create subnets with a different netmask and address_assign_type of SLAAC.

ipv6_ra_mode=not set

ipv6-address-mode=dhcpv6-stateful

The instance receives an IPv6 address and optional information from the Networking service (dnsmasq) using DHCPv6 stateful.

ipv6_ra_mode=not set

ipv6-address-mode=dhcpv6-stateless

The instance receives an IPv6 address from the external router using SLAAC, and optional information from the Networking service (dnsmasq) using DHCPv6 stateless.

ipv6_ra_mode=slaac

ipv6-address-mode=not-set

The instance uses SLAAC to receive an IPv6 address from the Networking service (radvd).

ipv6_ra_mode=dhcpv6-stateful

ipv6-address-mode=not-set

The instance receives an IPv6 address and optional information from an external DHCPv6 server using DHCPv6 stateful.

ipv6_ra_mode=dhcpv6-stateless

ipv6-address-mode=not-set

The instance receives an IPv6 address from the Networking service (radvd) using SLAAC, and optional information from an external DHCPv6 server using DHCPv6 stateless.

ipv6_ra_mode=slaac

ipv6-address-mode=slaac

The instance receives an IPv6 address from the Networking service (radvd) using SLAAC.

ipv6_ra_mode=dhcpv6-stateful

ipv6-address-mode=dhcpv6-stateful

The instance receives an IPv6 address from OpenStack Networking (dnsmasq) using DHCPv6 stateful, and optional information from OpenStack Networking (dnsmasq) using DHCPv6 stateful.

ipv6_ra_mode=dhcpv6-stateless

ipv6-address-mode=dhcpv6-stateless

The instance receives an IPv6 address from OpenStack Networking (radvd) using SLAAC, and optional information from OpenStack Networking (dnsmasq) using DHCPv6 stateless.

2.4. Create an IPv6 subnet using Stateful DHCPv6

In Red Hat OpenStack Services on OpenShift (RHOSO) environments, you can create an IPv6 subnet in a Red Hat OpenStack (RHOSP) project network.

Prerequisites

  • The administrator has created a project for you and has provided you with a clouds.yaml file for you to access the cloud.
  • The python-openstackclient package resides on your workstation.

    $ dnf list installed python-openstackclient

Procedure

  1. Confirm that the system OS_CLOUD variable is set for your cloud:

    $ echo $OS_CLOUD
    my_cloud

    Reset the variable if necessary:

    $ export OS_CLOUD=my_other_cloud

    As an alternative, you can specify the cloud name by adding the --os-cloud <cloud_name> option each time you run an openstack command.

  2. Obtain the project ID of the project where you want to create the IPv6 subnet.

    Retain this ID, because you will need it later:

    $ openstack project list
    Sample output
    +----------------------------------+----------+
    | ID                               | Name     |
    +----------------------------------+----------+
    | 25837c567ed5458fbb441d39862e1399 |    QA    |
    | f59f631a77264a8eb0defc898cb836af |  admin   |
    | 4e2e1951e70643b5af7ed52f3ff36539 |   demo   |
    | 8561dff8310e4cd8be4b6fd03dc8acf5 | services |
    +----------------------------------+----------+
  3. Obtain the name of the network where you want to host the IPv6 subnet.

    Retain this name, because you will need it later:

    $ openstack network list -c Name -c Subnets --max-width=72
    Sample output
    +-------------+--------------------------------------------------------+
    | Name        | Subnets                                                |
    +-------------+--------------------------------------------------------+
    | private     | 47d34cf0-0dd2-49bd-a985-67311d80c5c4,                  |
    |             | 82014d36-9e60-43eb-92fc-74674573f4e8,                  |
    |             | d7535565-113f-4192-baa6-da21f301f141                   |
    | private2    | 7ee56cef-83c0-40d1-b4e7-5287dae1c23c                   |
    | public      | 6745edd4-d15f-4971-89bf-70307b0ad2f1,                  |
    |             | cc3f81bb-4d55-4ead-aad4-5362a7ca5b04                   |
    | lb-mgmt-net | 5ca08724-568c-4030-93eb-f2e286570a25                   |
    +-------------+--------------------------------------------------------+
  4. Using the project ID and network name, create an IPv6 subnet:

    Example
    $ openstack subnet create --ip-version 6 --ipv6-address-mode \
    dhcpv6-stateful --project 25837c567ed5458fbb441d39862e1399 \
    --network private2 --subnet-range fdf8:f53b:82e4::53/125 \
    subnet_name
    Sample output
    +-------------------+--------------------------------------------------------------+
    | Field             | Value                                                        |
    +-------------------+--------------------------------------------------------------+
    | allocation_pools  | {"start": "fdf8:f53b:82e4::52", "end": "fdf8:f53b:82e4::56"} |
    | cidr              | fdf8:f53b:82e4::53/125                                       |
    | dns_nameservers   |                                                              |
    | enable_dhcp       | True                                                         |
    | gateway_ip        | fdf8:f53b:82e4::51                                           |
    | host_routes       |                                                              |
    | id                | cdfc3398-997b-46eb-9db1-ebbd88f7de05                         |
    | ip_version        | 6                                                            |
    | ipv6_address_mode | dhcpv6-stateful                                              |
    | ipv6_ra_mode      |                                                              |
    | name              |                                                              |
    | network_id        | 6aff6826-4278-4a35-b74d-b0ca0cbba340                         |
    | tenant_id         | 25837c567ed5458fbb441d39862e1399                             |
    +-------------------+--------------------------------------------------------------+

Verification

  1. Validate this configuration by reviewing the network list.

    $ openstack network list -c Name -c Subnets --max-width=72
    Sample output

    Note that the entry for private2 now reflects the newly created IPv6 subnet:

    ---------------------------------------------------------------------+
    | Name        | Subnets                                                |
    ---------------------------------------------------------------------+
    | private     | 47d34cf0-0dd2-49bd-a985-67311d80c5c4,                  |
    |             | 82014d36-9e60-43eb-92fc-74674573f4e8,                  |
    |             | d7535565-113f-4192-baa6-da21f301f141                   |
    | private2    | 7ee56cef-83c0-40d1-b4e7-5287dae1c23c,                  |
    |             | cdfc3398-997b-46eb-9db1-ebbd88f7de05                   |
    | public      | 6745edd4-d15f-4971-89bf-70307b0ad2f1,                  |
    |             | cc3f81bb-4d55-4ead-aad4-5362a7ca5b04                   |
    | lb-mgmt-net | 5ca08724-568c-4030-93eb-f2e286570a25                   |
    ---------------------------------------------------------------------+
  2. Create an instance, and confirm that the instance is associated with a DHCP IPv6 address when added to the private2 subnet:

    $ openstack server list -c Name -c Status -c Networks
    Sample output
    +---------+--------+-----------------------------+
    | Name    | Status | Networks                    |
    +---------+--------+-----------------------------+
    | server1 | ACTIVE | private2=fdf8:f53b:82e4::52 |
    +---------+--------+-----------------------------+

2.5. DVR overview

In Red Hat OpenStack Services on OpenShift (RHOSO) environments, distributed virtual routing (DVR) isolates the failure domain of the control plane and optimizes network traffic by using layer 3 high availability (L3 HA) and scheduling routers on every Compute node. DVR has these characteristics:

  • East-West traffic is routed directly on the Compute nodes in a distributed fashion.
  • North-South traffic that uses floating IP addresses is distributed and routed on the Compute nodes. This requires the external network to be connected to every Compute node.
  • North-South traffic without floating IP addresses (SNAT traffic) is not distributed.
  • The OVN metadata agent is distributed and deployed on all Compute nodes. The metadata proxy service is hosted on all the distributed routers.

2.6. Adding a router

In Red Hat OpenStack Services on OpenShift (RHOSO) environments, the Networking service (neutron) provides routing services using an SDN-based virtual router. Routers are a requirement for your instances to communicate with external subnets, including those in the physical network. Routers and subnets connect using interfaces, with each subnet requiring its own interface to the router.

The default gateway of a router defines the next hop for any traffic received by the router. Its network is typically configured to route traffic to the external physical network using a virtual bridge.

Prerequisites

  • The administrator has created a project for you and has provided you with a clouds.yaml file for you to access the cloud.
  • The python-openstackclient package resides on your workstation.

    $ dnf list installed python-openstackclient

Procedure

  1. Confirm that the system OS_CLOUD variable is set for your cloud:

    $ echo $OS_CLOUD
    my_cloud

    Reset the variable if necessary:

    $ export OS_CLOUD=my_other_cloud

    As an alternative, you can specify the cloud name by adding the --os-cloud <cloud_name> option each time you run an openstack command.

  2. Create a router.

    $ openstack router create <router-name> --external-gateway <network> \
    --project <name>
    • Replace <router-name> with the name of the router you are creating.
    • Replace <network> with the name of an external network.
    • Replace <name> with the name of your project.

      Tip

      If you want to create a router in an availability zone (AZ) add the --availability-zone-hint <availability-zone> option. Repeat the option to set multiple AZs.

Verification

  • Confirm that the router was created:

    $ openstack router list -c Name -c Status -c State -c Project
    Sample output
    +---------+--------+-------+----------------------------------+
    | Name    | Status | State | Project                          |
    +---------+--------+-------+----------------------------------+
    | router1 | ACTIVE | UP    | 24089d2fe1a94dd29ca2f665794fbe92 |
    | router2 | ACTIVE | UP    | ecf285621c509223ade3358691bbde59 |
    +---------+--------+-------+----------------------------------+

Next steps

2.7. Adding a subnet to a router

In Red Hat OpenStack Services on OpenShift (RHOSO) environments, to allow traffic to be routed to and from your network, you must add an interface to the subnet to an existing virtual router.

Prerequisites

  • The administrator has created a project for you and has provided you with a clouds.yaml file for you to access the cloud.
  • The python-openstackclient package resides on your workstation.

    $ dnf list installed python-openstackclient
  • You have access to a virtual router.

Procedure

  1. Confirm that the system OS_CLOUD variable is set for your cloud:

    $ echo $OS_CLOUD
    my_cloud

    Reset the variable if necessary:

    $ export OS_CLOUD=my_other_cloud

    As an alternative, you can specify the cloud name by adding the --os-cloud <cloud_name> option each time you run an openstack command.

  2. Obtain the virtual router name that you are using to route traffic to and from your network.

    Retain this name, because you will need it later:

    $ openstack router list
    Sample output
    +---------+--------+-------+----------------------------------+
    | Name    | Status | State | Project                          |
    +---------+--------+-------+----------------------------------+
    | router1 | ACTIVE | UP    | 24089d2fe1a94dd29ca2f665794fbe92 |
    | router2 | ACTIVE | UP    | ecf285621c509223ade3358691bbde59 |
    +---------+--------+-------+----------------------------------+
  3. Obtain the name of the subnet for which you want to add an interface for your router.

    Retain this name, because you will need it later:

    $ openstack subnet list -c Name -c Network -c Subnet --max-width=72
    Sample output
    +----------------------+-------------------------+---------------------+
    | Name                 | Network                 | Subnet              |
    +----------------------+-------------------------+---------------------+
    | private_subnet24     | 317be3d3-5265-43f7-b52b | 10.0.24.0/24        |
    |                      | -930e3fd19b8b           |                     |
    | lb-mgmt-subnet       | c4588d49-9151-414b-8832 | 172.24.0.0/16       |
    |                      | -37313e3b4c57           |                     |
    | external_subnet      | bcdb3cc0-8c0b-4d2d-813c | 10.0.0.0/24         |
    |                      | -e141bb97aa8f           |                     |
    | external_ipv6_subnet | bcdb3cc0-8c0b-4d2d-813c | 2620:52:0:13b8::/64 |
    |                      | -e141bb97aa8f           |                     |
    | private_subnet       | 317be3d3-5265-43f7-b52b | 10.0.1.0/24         |
    |                      | -930e3fd19b8b           |                     |
    +----------------------+-------------------------+---------------------+
  4. Using the router and subnet names, add an interface to your router for the subnet.

    Example

    In this example, private_subnet is added as an interface on router2:

    $ openstack router add subnet router2 private_subnet

Verification

  • Confirm that the router lists the interface that was added:

    Example
    $ openstack router show router2 --max-width=72
    Sample output
    ---------------------------------------------------------------------+
    | Field                   | Value                                      |
    ---------------------------------------------------------------------+
    | admin_state_up          | UP                                         |
    | availability_zone_hints |                                            |
    | availability_zones      |                                            |
    | created_at              | 2024-09-09T06:27:48Z                       |
    | description             |                                            |
    | external_gateway_info   | {"network_id":                             |
    |                         | "bcdb3cc0-8c0b-4d2d-813c-e141bb97aa8f",    |
    |                         | "external_fixed_ips": [{"subnet_id":       |
    |                         | "6745edd4-d15f-4971-89bf-70307b0ad2f1",    |
    |                         | "ip_address": "10.0.0.167"}, {"subnet_id": |
    |                         | "cc3f81bb-4d55-4ead-aad4-5362a7ca5b04",    |
    |                         | "ip_address": "2620:52:0:13b8::1000:85"}], |
    |                         | "enable_snat": true}                       |
    | flavor_id               | None                                       |
    | id                      | 9119eade-cf28-42d7-a33d-eb589469bf62       |
    | interfaces_info         | [{"port_id":                               |
    |                         | "5a40b083-27d0-4691-8208-99c507181a33",    |
    |                         | "ip_address": "10.0.24.1", "subnet_id":    |
    |                         | "47d34cf0-0dd2-49bd-a985-67311d80c5c4"},   |
    |                         | {"port_id":                                |
    |                         | "642e522e-2cbd-47b5-8f8b-88c1b5d5e535",    |
    |                         | "ip_address": "10.1.2.1", "subnet_id":     |
    |                         | "7ee56cef-83c0-40d1-b4e7-5287dae1c23c"},   |
    |                         | {"port_id":                                |
    |                         | "9f695259-680c-40a8-bbed-9ca84dd77c33",    |
    |                         | "ip_address": "10.0.1.1", "subnet_id":     |
    |                         | "d7535565-113f-4192-baa6-da21f301f141"},   |
    |                         | {"port_id":                                |
    |                         | "f43a55a7-2e91-4cb7-a6b2-b3b686fc2ebd",    |
    |                         | "ip_address": "10.0.2.1", "subnet_id":     |
    |                         | "317be3d3-5265-43f7-b52b-930e3fd19b8b"}]   |
    | name                    | router2                                    |
    | project_id              | ecf285621c509223ade3358691bbde59           |
    | revision_number         | 7                                          |
    | routes                  |                                            |
    | status                  | ACTIVE                                     |
    | tags                    |                                            |
    | updated_at              | 2024-09-09T09:28:40Z                       |
    ---------------------------------------------------------------------+

2.8. Removing a subnet from a router

In Red Hat OpenStack Services on OpenShift (RHOSO) environments, if you no longer require a router to direct network traffic to a subnet, you can remove the corresponding interface from the router.

Prerequisites

  • The administrator has created a project for you and has provided you with a clouds.yaml file for you to access the cloud.
  • The python-openstackclient package resides on your workstation.

    $ dnf list installed python-openstackclient
  • You have access to a virtual router.

Procedure

  1. Confirm that the system OS_CLOUD variable is set for your cloud:

    $ echo $OS_CLOUD
    my_cloud

    Reset the variable if necessary:

    $ export OS_CLOUD=my_other_cloud

    As an alternative, you can specify the cloud name by adding the --os-cloud <cloud_name> option each time you run an openstack command.

  2. Obtain the virtual router name that contains the interface to a subnet that you want to remove.

    Retain this name, because you will need it later:

    $ openstack router list
    Sample output
    +---------+--------+-------+----------------------------------+
    | Name    | Status | State | Project                          |
    +---------+--------+-------+----------------------------------+
    | router1 | ACTIVE | UP    | 24089d2fe1a94dd29ca2f665794fbe92 |
    | router2 | ACTIVE | UP    | ecf285621c509223ade3358691bbde59 |
    +---------+--------+-------+----------------------------------+
  3. Obtain the name of the subnet that you are using as the interface for your router.

    Retain this name, because you will need it later:

    $ openstack subnet list -c Name -c Network -c Subnet --max-width=72
    Sample output
    +----------------------+-------------------------+---------------------+
    | Name                 | Network                 | Subnet              |
    +----------------------+-------------------------+---------------------+
    | private_subnet24     | 317be3d3-5265-43f7-b52b | 10.0.24.0/24        |
    |                      | -930e3fd19b8b           |                     |
    | lb-mgmt-subnet       | c4588d49-9151-414b-8832 | 172.24.0.0/16       |
    |                      | -37313e3b4c57           |                     |
    | external_subnet      | bcdb3cc0-8c0b-4d2d-813c | 10.0.0.0/24         |
    |                      | -e141bb97aa8f           |                     |
    | external_ipv6_subnet | bcdb3cc0-8c0b-4d2d-813c | 2620:52:0:13b8::/64 |
    |                      | -e141bb97aa8f           |                     |
    | private_subnet       | 317be3d3-5265-43f7-b52b | 10.0.1.0/24         |
    |                      | -930e3fd19b8b           |                     |
    +----------------------+-------------------------+---------------------+
  4. Using the router and subnet names, remove the interface from your router.

    Example

    In this example, private_subnet is removed as an interface on router2:

    $ openstack router remove subnet router2 private_subnet

Verification

  • Confirm that the subnet has been removed from the router:

    Example
    $ openstack router show router2 --max-width=72
    Sample output
    ---------------------------------------------------------------------+
    | Field                   | Value                                      |
    ---------------------------------------------------------------------+
    | admin_state_up          | UP                                         |
    | availability_zone_hints |                                            |
    | availability_zones      |                                            |
    | created_at              | 2024-09-09T06:27:48Z                       |
    | description             |                                            |
    | external_gateway_info   | {"network_id":                             |
    |                         | "bcdb3cc0-8c0b-4d2d-813c-e141bb97aa8f",    |
    |                         | "external_fixed_ips": [{"subnet_id":       |
    |                         | "6745edd4-d15f-4971-89bf-70307b0ad2f1",    |
    |                         | "ip_address": "10.0.0.167"}, {"subnet_id": |
    |                         | "cc3f81bb-4d55-4ead-aad4-5362a7ca5b04",    |
    |                         | "ip_address": "2620:52:0:13b8::1000:85"}], |
    |                         | "enable_snat": true}                       |
    | flavor_id               | None                                       |
    | id                      | 9119eade-cf28-42d7-a33d-eb589469bf62       |
    | interfaces_info         | [{"port_id":                               |
    |                         | "5a40b083-27d0-4691-8208-99c507181a33",    |
    |                         | "ip_address": "10.0.24.1", "subnet_id":    |
    |                         | "47d34cf0-0dd2-49bd-a985-67311d80c5c4"},   |
    |                         | {"port_id":                                |
    |                         | "642e522e-2cbd-47b5-8f8b-88c1b5d5e535",    |
    |                         | "ip_address": "10.1.2.1", "subnet_id":     |
    |                         | "7ee56cef-83c0-40d1-b4e7-5287dae1c23c"},   |
    |                         | {"port_id":                                |
    |                         | "9f695259-680c-40a8-bbed-9ca84dd77c33",    |
    |                         | "ip_address": "10.0.1.1", "subnet_id":     |
    |                         | "d7535565-113f-4192-baa6-da21f301f141"},   |
    | name                    | router2                                    |
    | project_id              | ecf285621c509223ade3358691bbde59           |
    | revision_number         | 7                                          |
    | routes                  |                                            |
    | status                  | ACTIVE                                     |
    | tags                    |                                            |
    | updated_at              | 2024-09-09T11:14:33Z                       |
    ---------------------------------------------------------------------+

2.9. Purging all resources and deleting a project

In Red Hat OpenStack Services on OpenShift (RHOSO) environments, you can delete all resources that belong to a particular project as well as deleting the project, too.

Prerequisites

  • The administrator has created a project for you and has provided you with a clouds.yaml file for you to access the cloud.
  • The python-openstackclient package resides on your workstation.

    $ dnf list installed python-openstackclient

Procedure

  1. Confirm that the system OS_CLOUD variable is set for your cloud:

    $ echo $OS_CLOUD
    my_cloud

    Reset the variable if necessary:

    $ export OS_CLOUD=my_other_cloud

    As an alternative, you can specify the cloud name by adding the --os-cloud <cloud_name> option each time you run an openstack command.

  2. Using the project name, delete the project and all of the resources associated with the project:

    Example

    In this example, test-project is deleted:

    $ openstack project purge --project test-project

Verification

  • Confirm that the project has been deleted:

    $ openstack project list
    Sample output
    +----------------------------------+--------------+
    | ID                               | Name         |
    +----------------------------------+--------------+
    | 519e6344f82e4c079c8e2eabb690023b | services     |
    | 80bf5732752a41128e612fe615c886c6 | demo         |
    | 98a2f53c20ce4d50a40dac4a38016c69 | admin        |
    +----------------------------------+--------------+

2.10. Deleting a router

In Red Hat OpenStack Services on OpenShift (RHOSO) environments, you can delete a router if it has no connected interfaces.

Prerequisites

  • The administrator has created a project for you and has provided you with a clouds.yaml file for you to access the cloud.
  • The python-openstackclient package resides on your workstation.

    $ dnf list installed python-openstackclient
  • No interfaces are connected to the router that you want to delete.

Procedure

  1. Confirm that the system OS_CLOUD variable is set for your cloud:

    $ echo $OS_CLOUD
    my_cloud

    Reset the variable if necessary:

    $ export OS_CLOUD=my_other_cloud

    As an alternative, you can specify the cloud name by adding the --os-cloud <cloud_name> option each time you run an openstack command.

  2. Obtain the name of the router that you want to delete.

    Retain this name, because you will need it later.

    $ openstack router list -c Name -c Status -c State -c Project
    Sample output
    +---------+--------+-------+----------------------------------+
    | Name    | Status | State | Project                          |
    +---------+--------+-------+----------------------------------+
    | router1 | ACTIVE | UP    | 24089d2fe1a94dd29ca2f665794fbe92 |
    | router2 | ACTIVE | UP    | ecf285621c509223ade3358691bbde59 |
    +---------+--------+-------+----------------------------------+
  3. Using the router name, delete the router.

    Example

    In this example, router2 is deleted:

    $ openstack router delete router2

Verification

  • Confirm that the router was deleted:

    $ openstack router list -c Name -c Status -c State -c Project
    Sample output
    +---------+--------+-------+----------------------------------+
    | Name    | Status | State | Project                          |
    +---------+--------+-------+----------------------------------+
    | router1 | ACTIVE | UP    | 24089d2fe1a94dd29ca2f665794fbe92 |
    +---------+--------+-------+----------------------------------+

2.11. Deleting a subnet

In Red Hat OpenStack Services on OpenShift (RHOSO) environments, you can delete a subnet if it is no longer in use.

Prerequisites

  • The administrator has created a project for you and has provided you with a clouds.yaml file for you to access the cloud.
  • The python-openstackclient package resides on your workstation.

    $ dnf list installed python-openstackclient
  • No instances are configured to use the subnet that you want to delete.

Procedure

  1. Confirm that the system OS_CLOUD variable is set for your cloud:

    $ echo $OS_CLOUD
    my_cloud

    Reset the variable if necessary:

    $ export OS_CLOUD=my_other_cloud

    As an alternative, you can specify the cloud name by adding the --os-cloud <cloud_name> option each time you run an openstack command.

  2. Obtain the name of the subnet that you want to delete.

    Retain this name, because you will need it later.

    $ openstack subnet list
    Sample output
    +----------------------+-------------------------+---------------------+
    | Name                 | Network                 | Subnet              |
    +----------------------+-------------------------+---------------------+
    | private_subnet24     | 317be3d3-5265-43f7-b52b | 10.0.24.0/24        |
    |                      | -930e3fd19b8b           |                     |
    | lb-mgmt-subnet       | c4588d49-9151-414b-8832 | 172.24.0.0/16       |
    |                      | -37313e3b4c57           |                     |
    | external_subnet      | bcdb3cc0-8c0b-4d2d-813c | 10.0.0.0/24         |
    |                      | -e141bb97aa8f           |                     |
    | private2_subnet      | 56e73380-a771-408f-bdc0 | 10.1.2.0/24         |
    |                      | -1e97f79677c6           |                     |
    | private_subnet2      | 317be3d3-5265-43f7-b52b | 10.0.2.0/24         |
    |                      | -930e3fd19b8b           |                     |
    | external_ipv6_subnet | bcdb3cc0-8c0b-4d2d-813c | 2620:52:0:13b8::/64 |
    |                      | -e141bb97aa8f           |                     |
    | private_subnet       | 317be3d3-5265-43f7-b52b | 10.0.1.0/24         |
    |                      | -930e3fd19b8b           |                     |
    +----------------------+-------------------------+---------------------+
  3. Using the subnet name, delete the subnet.

    Example

    In this example, private_subnet24 is deleted:

    $ openstack subnet delete private_subnet24

Verification

  • Confirm that the subnet was deleted:

    $ openstack subnet list -c Name -c Network -c Subnet --max-width=72
    Sample output
    +----------------------+-------------------------+---------------------+
    | Name                 | Network                 | Subnet              |
    +----------------------+-------------------------+---------------------+
    | lb-mgmt-subnet       | c4588d49-9151-414b-8832 | 172.24.0.0/16       |
    |                      | -37313e3b4c57           |                     |
    | external_subnet      | bcdb3cc0-8c0b-4d2d-813c | 10.0.0.0/24         |
    |                      | -e141bb97aa8f           |                     |
    | private2_subnet      | 56e73380-a771-408f-bdc0 | 10.1.2.0/24         |
    |                      | -1e97f79677c6           |                     |
    | private_subnet2      | 317be3d3-5265-43f7-b52b | 10.0.2.0/24         |
    |                      | -930e3fd19b8b           |                     |
    | external_ipv6_subnet | bcdb3cc0-8c0b-4d2d-813c | 2620:52:0:13b8::/64 |
    |                      | -e141bb97aa8f           |                     |
    | private_subnet       | 317be3d3-5265-43f7-b52b | 10.0.1.0/24         |
    |                      | -930e3fd19b8b           |                     |
    +----------------------+-------------------------+---------------------+

2.12. Deleting a network

In Red Hat OpenStack Services on OpenShift (RHOSO) environments, there are occasions where it becomes necessary to delete a network that was previously created, perhaps as housekeeping or as part of a decommissioning process.

Prerequisites

  • The administrator has created a project for you and has provided you with a clouds.yaml file for you to access the cloud.
  • The python-openstackclient package resides on your workstation.

    $ dnf list installed python-openstackclient
  • No interfaces are connected to the network that you want to delete.

Procedure

  1. Confirm that the system OS_CLOUD variable is set for your cloud:

    $ echo $OS_CLOUD
    my_cloud

    Reset the variable if necessary:

    $ export OS_CLOUD=my_other_cloud

    As an alternative, you can specify the cloud name by adding the --os-cloud <cloud_name> option each time you run an openstack command.

  2. Obtain the name of the network that you want to delete.

    Retain this name, because you will need it later.

    $ openstack network list -c Name
    Sample output
    +-------------+
    | Name        |
    +-------------+
    | my_network  |
    | private     |
    | public      |
    | lb-mgmt-net |
    +-------------+
  3. Using the network name, delete the network.

    Example

    In this example, my_network is deleted:

    $ openstack network delete my_network

Verification

  • Confirm that the network was deleted:

    $ openstack network list -c Name
    Sample output
    +-------------+
    | Name        |
    +-------------+
    | private     |
    | public      |
    | lb-mgmt-net |
    +-------------+
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2026 Red Hat
Retour au début