Deployment of RHOSP 16.1 with for Virtualized Controllers-Part2

In our first part we covered Red Hat® enterprise virtualization deployment, created 1 VM installed with RHEL 8.2 for undercloud deployment and Skelton for running 3 virtual controllers.

Let us start the deployment of Undercloud and overcloud nodes.

We create Undercloud.conf file and Instack.json files. The input like MAC address, Interface names comes from the Virtual machines we created in previous steps.

Our control plane interface is enp2s0, which came in existence when we created the virtual machine for Undercloud.

[stack@undercloud21 ~]$ mkdir ~/images
[stack@undercloud21 ~]$ mkdir ~/templates
[stack@undercloud21 ~]$ sudo subscription-manager list --available --all --matches="Red Hat OpenStack"
Available Subscriptions
SKU: SER0505
Contract: 12725478
Pool ID: 8a85f99f7a7d65ce017a8756847f3644
Provides Management: No
Available: Unlimited
Suggested: 1
Service Type: L1-L3
Roles:
Service Level: Standard
Usage:
Add-ons:
Subscription Type: Standard
Starts: 06/30/2021
Ends: 06/30/2022
Entitlement Type: Virtual
[stack@undercloud21 ~]$ sudo subscription-manager attach --pool=8a85f99f7a7d65ce017a8756847f3644
Successfully attached a subscription for: Red Hat OpenStack Platform, Standard Support (4 Sockets, NFR, Partner Only)
[stack@undercloud21 ~]$ sudo subscription-manager release --set=8.2
Release set to: 8.2
[stack@undercloud21 ~]$ sudo subscription-manager repos --disable=*
Repository 'advanced-virt-beta-for-rhel-8-x86_64-rpms' is disabled for this system.
Repository 'cert-1-for-rhel-8-x86_64-debug-rpms' is disabled for this system.
Repository 'satellite-tools-6.8-for-rhel-8-x86_64-rpms' is disabled for this system.
Repository 'ansible-2.8-for-rhel-8-x86_64-debug-rpms' is disabled for this system.[stack@undercloud21 ~]$ sudo subscription-manager repos --enable=rhel-8-for-x86_64-baseos-eus-rpms --enable=rhel-8-for-x86_64-appstream-eus-rpms --enable=rhel-8-for-x86_64-highavailability-eus-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms --enable=openstack-16.1-for-rhel-8-x86_64-rpms --enable=fast-datapath-for-rhel-8-x86_64-rpms --enable=advanced-virt-for-rhel-8-x86_64-rpms --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms
Repository 'rhel-8-for-x86_64-baseos-eus-rpms' is enabled for this system.
Repository 'rhel-8-for-x86_64-appstream-eus-rpms' is enabled for this system.
Repository 'rhel-8-for-x86_64-highavailability-eus-rpms' is enabled for this system.
Repository 'ansible-2.9-for-rhel-8-x86_64-rpms' is enabled for this system.
Repository 'openstack-16.1-for-rhel-8-x86_64-rpms' is enabled for this system.
Repository 'fast-datapath-for-rhel-8-x86_64-rpms' is enabled for this system.
Repository 'advanced-virt-for-rhel-8-x86_64-rpms' is enabled for this system.
Repository 'rhceph-4-tools-for-rhel-8-x86_64-rpms' is enabled for this system.
[stack@undercloud21 ~]$ sudo dnf update -y
Updating Subscription Management repositories.
Advanced Virtualization for RHEL 8 x86_64 (RPMs) 1.2 MB/s | 1.5 MB 00:01
Red Hat Enterprise Linux 8 for x86_64 - BaseOS - Extended Update Support (RPMs) 8.3 MB/s | 35 MB 00:04
Red Hat Enterprise Linux 8 for x86_64 - High Availability - Extended Update Support (RPMs) 1.4 MB/s | 2.4 MB 00:01
Red Hat Enterprise Linux 8 for x86_64 - AppStream - Extended Update Support (RPMs)
[stack@undercloud21 ~]$ ip -4 a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
inet 10.205.21.23/24 brd 10.205.21.255 scope global noprefixroute enp1s0
valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
[stack@undercloud21 ~]$ cd /sys/class/net/
[stack@undercloud21 net]$ ls
br-ctlplane br-int enp1s0 enp2s0 lo ovs-system
[stack@undercloud21 ~]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[stack@undercloud21 ~]$ hostname
undercloud21.itchundredlab.com

Below is my undercloud.conf and the parameters mentioned. Note that to deploy the controllers on Red Hat Virtualization VMs, we enabled support in Ironic with a new driver named staging-ovirt.

enabled_hardware_types = ipmi,redfish,ilo,idrac,staging-ovirt

(undercloud) [stack@undercloud21 deployment]$ openstack baremetal driver list
+---------------------+--------------------------------+
| Supported driver(s) | Active host(s) |
+---------------------+--------------------------------+
| idrac | undercloud21.itchundredlab.com |
| ilo | undercloud21.itchundredlab.com |
| ipmi | undercloud21.itchundredlab.com |
| redfish | undercloud21.itchundredlab.com |
| staging-ovirt | undercloud21.itchundredlab.com |
+---------------------+--------------------------------+
local_ip : This is UC’s Provisioning NIC. This is also the IP address the director uses for its DHCP and PXE boot services
network_gateway : The gateway for the overcloud instances. This is the undercloud host, which forwards traffic to the External network.
undercloud_public_vip : The IP address defined for the director’s Public API. Use an IP address on the Provisioning network that does not conflict with any other IP addresses or address ranges.
undercloud_admin_vip : The IP address defined for the director’s Admin API. Use an IP address on the Provisioning network that does not conflict with any other IP addresses or address ranges.
local_interface : The chosen interface for the director’s Provisioning NIC. This is also the device the director uses for its DHCP and PXE boot services. Change this value to your chosen device.
network_cidr : The network that the director uses to manage overcloud instances. This is the Provisioning network, which the undercloud’s neutron service manages.
masquerade_network : Defines the network that will masquerade for external access. This provides the Provisioning network with a degree of network address translation (NAT) so that it has external access through the director.
dhcp_start; dhcp_end : The start and end of the DHCP allocation range for overcloud nodes. Ensure this range contains enough IP addresses to allocate your nodes.
inspection_iprange : A range of IP address that the director’s introspection service uses during the PXE boot and provisioning process. Use comma-separated values to define the start and end of this range. Make sure this range contains enough IP addresses for your nodes and does not conflict with the range for dhcp_start and dhcp_end.

We note that the interface created for Undercloud VM through RHEVM ,will be the local interface in the undercloud.conf. enp2s0 is our local interface which communicates with the controller and compute nodes for the control plane activities. You can use CTL plane network for login on to controller and compute nodes or add another Management network. In our case we made it simple ,CTL plane also used as management plane. You can also login to these nodes using HP ILO or Dell IDRAC based on your physical hardware. For login to virtual nodes you can use SPICE console logins. They work perfect for administration.

Let us start by installing the directors packages.

[stack@undercloud21]$ sudo dnf install -y python3-tripleoclient

Updating Subscription Management repositories.

/usr/lib/python3.6/site-packages/dateutil/parser/_parser.py:70: UnicodeWarning: decode() called on unicode string, see https://bugzilla.redhat.com/show_bug.cgi?id=1693751

instream = instream.decode()

Last metadata expiration check: 2:17:52 ago on Mon 07 Feb 2022 01:48:53 PM IST.

Dependencies resolved.

=========================================================================================================================================================

Package Arch Version Repository Size

=========================================================================================================================================================

Installing:

python3-tripleoclient noarch 12.3.2-1.20210608013304.ae58329.el8ost openstack-16.1-for-rhel-8-x86_64-rpms 552 k

Installing dependencies:
ansible noarch 2.9.27-1.el8ae ansible-2.9-for-rhel-8-x86_64-rpms 17 M
ansible-config_template noarch 1.1.2-1.20210528042008.ea07ed0.el8ost openstack-16.1-for-rhel-8-x86_64-rpms 29 k
ansible-freeipa noarch 0.1.8-3.el8 rhel-8-for-x86_64-appstream-eus-rpms 182 k
ansible-pacemaker noarch 1.0.4-1.20210528053912.accaf26.el8ost openstack-16.1-for-rhel-8-x86_64-rpms 21 k
ansible-role-atos-hsm noarch 0.1.1-1.20210527235518.1269408.el8ost openstack-16.1-for-rhel-8-x86_64-rpms 17 k
ansible-role-chrony noarch 1.0.2-1.20210527222924.03e7fbe.el8ost openstack-16.1-for-rhel-8-x86_64-rpms 20 k

We prepare container images and add credentials to it

[stack@undercloud21]$ openstack tripleo container image prepare default --local-push-destination --output-env-file containers-prepare-parameter.yaml

parameter_defaults:
ContainerImagePrepare:
- push_destination: true
set:
ceph_alertmanager_image: ose-prometheus-alertmanager
ceph_alertmanager_namespace: registry.redhat.io/openshift4
ceph_alertmanager_tag: 4.1
ceph_grafana_image: rhceph-4-dashboard-rhel8
ceph_grafana_namespace: registry.redhat.io/rhceph
ceph_grafana_tag: 4
ceph_image: rhceph-4-rhel8
ceph_namespace: registry.redhat.io/rhceph
ceph_node_exporter_image: ose-prometheus-node-exporter
ceph_node_exporter_namespace: registry.redhat.io/openshift4
ceph_node_exporter_tag: v4.1
ceph_prometheus_image: ose-prometheus
ceph_prometheus_namespace: registry.redhat.io/openshift4
ceph_prometheus_tag: 4.1
ceph_tag: latest
name_prefix: openstack-
name_suffix: ''
namespace: registry.redhat.io/rhosp-rhel8
neutron_driver: ovn
rhel_containers: false
tag: '16.1'
tag_from_label: '{version}-{release}'
## Adding security Credentials, from document
ContainerImageRegistryCredentials:
registry.redhat.io:
ranjeet_badhe_texas: "xqwtyulx18"
stack@undercloud21 deployment]$ openstack undercloud install
Running: sudo --preserve-env openstack tripleo deploy --standalone --standalone-role Undercloud --stack undercloud --local-domain=itchundredlab.com --local-ip=10.205.5.7/24
2022-02-07 10:54:14Z [undercloud.AllNodesDeploySteps.UndercloudPostConfig]: CREATE_IN_PROGRESS state changed
2022-02-07 10:54:14Z [undercloud.AllNodesDeploySteps.UndercloudPostConfig]: CREATE_COMPLETE state changed
2022-02-07 10:54:14Z [undercloud.AllNodesDeploySteps]: CREATE_COMPLETE Stack CREATE completed successfully
2022-02-07 10:54:14Z [undercloud.AllNodesDeploySteps]: CREATE_COMPLETE state changed
022-02-07 10:54:14Z [undercloud]: CREATE_COMPLETE Stack CREATE completed successfully
Stack undercloud/0bdb2980-bbc6-4111-9c32-6793f3139c6b CREATE_COMPLETE
** Downloading undercloud ansible.. **
Generating default ansible config file /home/stack/ansible.cfg
Install artifact is located at /home/stack/undercloud-install-20220207113103.tar.bzip2
########################################################
Deployment successful!
########################################################
Writing the stack virtual update mark file /var/lib/tripleo-heat-installer/update_mark_undercloud
Erase is control-H (^H).
##########################################################
The Undercloud has been successfully installed.
Useful files:
Password file is at /home/stack/undercloud-passwords.conf
The stackrc file is at ~/stackrc
Use these files to interact with OpenStack services, and
ensure they are secured.
########################################################

[stack@undercloud21 deployment]$sudo dnf install rhosp-director-images rhosp-director-images-ipa-x86_64[stack@undercloud21 deployment]$ sudo mkdir /var/images
[stack@undercloud21 deployment]$ sudo chown stack:stack /var/images
[stack@undercloud21 deployment]$ cd /var/images
[stack@undercloud21 images]$ for i in /usr/share/rhosp-director-images/overcloud-full-latest-16.1.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-16.1.tar; do tar -xvf $i; done
overcloud-full.qcow2
overcloud-full.initrd
overcloud-full.vmlinuz
overcloud-full-rpm.manifest
overcloud-full-signature.manifest
ironic-python-agent.initramfs
ironic-python-agent.kernel
[stack@undercloud21 images]$ source ~/stackrc
(undercloud) [stack@undercloud21 images]$ openstack overcloud image upload --image-path /var/images
Image "overcloud-full-vmlinuz" was uploaded.
+--------------------------------------+------------------------+-------------+---------+--------+
| ID | Name | Disk Format | Size | Status |
+--------------------------------------+------------------------+-------------+---------+--------+
| 48341b04-f7cf-44b7-9e2a-d4dcdcec5e0c | overcloud-full-vmlinuz | aki | 8928624 | active |
+--------------------------------------+------------------------+-------------+---------+--------+
Image "overcloud-full-initrd" was uploaded.
+--------------------------------------+-----------------------+-------------+----------+--------+
| ID | Name | Disk Format | Size | Status |
+--------------------------------------+-----------------------+-------------+----------+--------+
| e9ba683d-1a1a-4e78-9c40-ce5ead76b7cd | overcloud-full-initrd | ari | 74461480 | active |
+--------------------------------------+-----------------------+-------------+----------+--------+
Image "overcloud-full" was uploaded.
+--------------------------------------+----------------+-------------+------------+--------+
| ID | Name | Disk Format | Size | Status |
+--------------------------------------+----------------+-------------+------------+--------+
| 07e828d9-0010-4c68-8fd8-340d958f27c0 | overcloud-full | qcow2 | 1128202240 | active |
+--------------------------------------+----------------+-------------+--------
(undercloud) [stack@undercloud21 images]$ openstack image list
+--------------------------------------+------------------------+--------+
| ID | Name | Status |
+--------------------------------------+------------------------+--------+
| 07e828d9-0010-4c68-8fd8-340d958f27c0 | overcloud-full | active |
| e9ba683d-1a1a-4e78-9c40-ce5ead76b7cd | overcloud-full-initrd | active |
| 48341b04-f7cf-44b7-9e2a-d4dcdcec5e0c | overcloud-full-vmlinuz | active |
+--------------------------------------+------------------------+--------+
(undercloud) [stack@undercloud21 images]$ openstack subnet list
+--------------------------------------+-----------------+---------------------
| ID | Name | Network | Subnet |
+--------------------------------------+-----------------+---------------------
| d8500944-242b-4473-a11d-7acd9b8dfb37 | ctlplane-subnet | 15e6213f-2277-4dca-a240-ce3cbb7989fd | 10.205.5.0/24 |

+--------------------------------------+-----------------+---------------------

(undercloud) [stack@undercloud21 images]$ openstack subnet show ctlplane-subnet

+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-------------------+-----------------------------------------------------------------------------------------------------------------------------------------
| allocation_pools | 10.205.5.20-10.205.5.45 |
| cidr | 10.205.5.0/24 |
| created_at | 2022-02-07T11:30:21Z |
| description | |
| dns_nameservers | 10.200.11.172 |
| enable_dhcp | True |
| gateway_ip | 10.205.5.254 |
| host_routes | |
| id | d8500944-242b-4473-a11d-7acd9b8dfb37 |
| ip_version | 4 |
| ipv6_address_mode | None |
| ipv6_ra_mode | None |
| location | cloud='', project.domain_id=, project.domain_name='Default', project.id='a6c8f588f962440ebf658e4fd416377b', project.name='admin', region_name='', zone= |
| name | ctlplane-subnet |
| network_id | 15e6213f-2277-4dca-a240-ce3cbb7989fd |
| prefix_length | None |
| project_id | a6c8f588f962440ebf658e4fd416377b |
| revision_number | 0 |
| segment_id | None |
| service_types | |
| subnetpool_id | None |
| tags | |
| updated_at | 2022-02-07T11:30:21Z |

+-------------------+-----------------------------------------------------------------------------------------------------------------------------------------

Our Undercloud is installed . We can verify the log available at /home/stack/ansible.cfg.

We now Import a node inventory file (instackenv.json) in JSON format to the director so that the director can communicate with the nodes. This inventory file contains hardware and power management details that the director can use to register nodes. Please note that we have controller nodes virtualized and so the power management “PM_TYPE” will be staging-ovirt and for the physical compute nodes the power management is “pxe_ipmitool” We import the instackenv.json inventory file into the director as mentioned below. Then trigger hardware introspection to retrieve the hardware attributes of each node

Our node Json file

(undercloud) [stack@undercloud21 deployment]$ cat instackenv.json
{
"nodes": [
{
"name":"controller1",
"pm_type":"staging-ovirt",
"mac":[
"56:6f:1a:42:00:02"
],
"cpu":"10",
"memory":"65536",
"disk":"100",
"arch":"x86_64",
"pm_user":"admin@internal",
"pm_password":"Techm@123",
"pm_addr":"rhevm.itchundredlab.com",
"pm_vm_name":"controller1",
"capabilities": "profile:control,boot_option:local"
},
{
"name":"controller2",
"pm_type":"staging-ovirt",
"mac":[
"56:6f:1a:42:00:08"
],
"cpu":"10",
"memory":"65536",
"disk":"100",
"arch":"x86_64",
"pm_user":"admin@internal",
"pm_password":"Techm@123",
"pm_addr":"rhevm.itchundredlab.com",
"pm_vm_name":"controller2",
"capabilities": "profile:control,boot_option:local"
},
{
"name":"controller3",
"pm_type":"staging-ovirt",
"mac":[
"56:6f:1a:42:00:0e"
],
"cpu":"10",
"memory":"65536",
"disk":"100",
"arch":"x86_64",
"pm_user":"admin@internal",
"pm_password":"Techm@123",
"pm_addr":"rhevm.itchundredlab.com",
"pm_vm_name":"controller3",
"capabilities": "profile:control,boot_option:local"
},
{
"name": "compute1",
"mac": [
"ec:f4:bb:d9:1a:b4"
],
"arch": "x86_64",
"pm_type": "pxe_ipmitool",
"pm_user": "root",
"pm_password": "Techm@123",
"pm_addr": "10.200.10.7",
"capabilities": "profile:compute,boot_option:local"
}
]
}
(undercloud) [stack@undercloud21 deployment]$ openstack overcloud node import ~/deployment/instackenv.json

Waiting for messages on queue 'tripleo' with no timeout.
4 node(s) successfully moved to the "manageable" state.
Successfully registered node UUID 3f91e3b5-7743-4255-bd3c-cef3ad36ebf6
Successfully registered node UUID dd8e0add-ce74-4505-95a4-4d5442f8ca23
Successfully registered node UUID df3b83b2-a941-4492-92a9-7489533f8a3c
Successfully registered node UUID 0fe4f3a8-854b-4d20-be44-e07b099cbd4f

Check listening ports:

Verify on Undercloud node whether BOOTP/DHCP request is reaching to Undercloud and Undercloud is fulfilling the request .

[stack@undercloud21 ~]$ sudo tcpdump --interface br-ctlplane port 67 and 68
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br-ctlplane, link-type EN10MB (Ethernet), capture size 262144 bytes
18:32:28.700468 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 56:6f:1a:42:00:02 (oui Unknown), length 276
18:32:28.703881 IP undercloud21.itchundredlab.com.bootps > 10.205.5.50.bootpc: BOOTP/DHCP, Reply, length 300
18:32:28.704795 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 56:6f:1a:42:00:02 (oui Unknown), length 288
18:32:28.707736 IP undercloud21.itchundredlab.com.bootps > 10.205.5.50.bootpc: BOOTP/DHCP, Reply, length 300
18:32:34.020261 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 56:6f:1a:42:00:08 (oui Unknown), length 276
18:32:34.022196 IP undercloud21.itchundredlab.com.bootps > 10.205.5.51.bootpc: BOOTP/DHCP, Reply, length 300
18:32:34.024627 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 56:6f:1a:42:00:08 (oui Unknown), length 288
18:32:34.027208 IP undercloud21.itchundredlab.com.bootps > 10.205.5.51.bootpc: BOOTP/DHCP, Reply, length 300

<Output truncated for brevity>

Some Troubleshooting steps , in case your introspection fails

Instance of dnsmasq from libvirtd was running in the undercloud, preventing the ironic instance to start.Check tripleo_ironic_inspector_dnsmasq.service. This service may be in failed state,

[stack@undercloud21 ~]$ sudo systemctl status tripleo_ironic_inspector_dnsmasq.service
● tripleo_ironic_inspector_dnsmasq.service - ironic_inspector_dnsmasq container
   Loaded: loaded (/etc/systemd/system/tripleo_ironic_inspector_dnsmasq.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2022-02-07 22:50:32 IST;; 26s ago
  Process: 9018 ExecStopPost=/usr/bin/podman stop -t 10 ironic_inspector_dnsmasq (code=exited, status=0/SUCCESS)
  Process: 8882 ExecStart=/usr/bin/podman start ironic_inspector_dnsmasq (code=exited, status=0/SUCCESS)
 Main PID: 8929 (code=exited, status=2)

To start this service ,first check the DNS port status, if its listening kill the process.

[stack@undercloud21 ~]$ sudo netstat -ntlp | grep :53
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      3144/dnsmasq

[stack@undercloud21 ~]$ sudo pkill dnsmasq

Then start the tripleo_ironic_inspector_dnsmasq.service.

[stack@undercloud21 ~]$ sudo systemctl startu tripleo_ironic_inspector_dnsmasq.service
● tripleo_ironic_inspector_dnsmasq.service - ironic_inspector_dnsmasq container
   Loaded: loaded (/etc/systemd/system/tripleo_ironic_inspector_dnsmasq.service; enabled; vendor preset: disabled)
 Active: active (running) since Thu 2022-02-07 22:51:32 IST; 15s ago
  Process: 17455 ExecStopPost=/usr/bin/podman stop -t 10 ironic_inspector_dnsmasq (code=exited, status=0/SUCCESS)
  Process: 18912 ExecStart=/usr/bin/podman start ironic_inspector_dnsmasq (code=exited, status=0/SUCCESS)
 Main PID: 19007 (conmon)
    Tasks: 1 (limit: 299564)
   Memory: 1.1M

 libvirtd service should be terminated as, during the introspection stage, it should not be running. You can refer the Red Hat solution at https://access.redhat.com/solutions/6269881 . I researched many openstack technical documents to fix this.

systemctl stop libvirtd && systemctl disable libvirtd
systemctl start tripleo_ironic_inspector_dnsmasq

Lets proceed with the deployment now. Verify the PXE boot by accessing IDRAC.

(undercloud) [stack@undercloud21 deployment]$ openstack overcloud node introspect --all-manageable –provide
(undercloud) [stack@undercloud21 ~]$ openstack baremetal node list
+--------------------------------------+-------------+---------------+-------------+----------
| UUID | Name | Instance UUID | Power State | Provisioning State | Maintenance |
+--------------------------------------+-------------+---------------+-------------+--------------------+-------------+
| 3f91e3b5-7743-4255-bd3c-cef3ad36ebf6 | controller1 | None | power off | manageable | False |
| dd8e0add-ce74-4505-95a4-4d5442f8ca23 | controller2 | None | power off | manageable | False |
| df3b83b2-a941-4492-92a9-7489533f8a3c | controller3 | None | power off | manageable | False |
| 0fe4f3a8-854b-4d20-be44-e07b099cbd4f | compute1 | None | power on | manageable | False |
+--------------------------------------+-------------+---------------+---------
(undercloud) [stack@undercloud21 ~]$ openstack baremetal introspection status 0fe4f3a8-854b-4d20-be44-e07b099cbd4f
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| error | None |
| finished | True |
| finished_at | 2022-02-07T13:18:50 |
| started_at | 2022-02-07T13:11:01 |
| state | finished |
| uuid | 0fe4f3a8-854b-4d20-be44-e07b099cbd4f |
+-------------+--------------------------------------+
(undercloud) [stack@undercloud21 ~]$ openstack baremetal introspection status 3f91e3b5-7743-4255-bd3c-cef3ad36ebf6
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| error | None |
| finished | True |
| finished_at | 2022-02-07T13:08:42 |
| started_at | 2022-02-07T13:04:53 |
| state | finished |
| uuid | 3f91e3b5-7743-4255-bd3c-cef3ad36ebf6 |
+-------------+--------------------------------------+
(undercloud) [stack@undercloud21 ~]$ openstack baremetal introspection status dd8e0add-ce74-4505-95a4-4d5442f8ca23
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| error | None |
| finished | True |
| finished_at | 2022-02-07T13:08:34 |
| started_at | 2022-02-07T13:04:52 |
| state | finished |
| uuid | dd8e0add-ce74-4505-95a4-4d5442f8ca23 |
+-------------+--------------------------------------+
(undercloud) [stack@undercloud21 ~]$ openstack baremetal introspection status df3b83b2-a941-4492-92a9-7489533f8a3c
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| error | None |
| finished | True |
| finished_at | 2022-02-07T13:08:48 |
| started_at | 2022-02-07T13:04:53 |
| state | finished |
| uuid | df3b83b2-a941-4492-92a9-7489533f8a3c |
+-------------+--------------------------------------+
(undercloud) [stack@undercloud21 ~]$ openstack baremetal node list
+--------------------------------------+-------------+---------------+-------------+--------------------+-------------+
| UUID | Name | Instance UUID | Power State | Provisioning State | Maintenance |
+--------------------------------------+-------------+---------------+-------------+--------------------+-------------+
| 3f91e3b5-7743-4255-bd3c-cef3ad36ebf6 | controller1 | None | power off | available | False |
| dd8e0add-ce74-4505-95a4-4d5442f8ca23 | controller2 | None | power off | available | False |
| df3b83b2-a941-4492-92a9-7489533f8a3c | controller3 | None | power off | available | False |
| 0fe4f3a8-854b-4d20-be44-e07b099cbd4f | compute1 | None | power off | available | False |
+--------------------------------------+-------------+---------------+---------
(undercloud) [stack@undercloud21 ~]$ openstack overcloud profiles list
+--------------------------------------+-------------+-----------------+-------
| Node UUID | Node Name | Provision State | Current Profile | Possible Profiles |
+--------------------------------------+-------------+-----------------+-------
| 3f91e3b5-7743-4255-bd3c-cef3ad36ebf6 | controller1 | available | control | |
| dd8e0add-ce74-4505-95a4-4d5442f8ca23 | controller2 | available | control | |
| df3b83b2-a941-4492-92a9-7489533f8a3c | controller3 | available | control | |
| 0fe4f3a8-854b-4d20-be44-e07b099cbd4f | compute1 | available | compute | |
+--------------------------------------+-------------+-----------------+-------

Registering the nodes

(undercloud) [stack@undercloud21 ~]$ openstack baremetal node set --property capabilities='profile:control,boot_option:local' 3f91e3b5-7743-4255-bd3c-cef3ad36ebf6
(undercloud) [stack@undercloud21 ~]$ openstack baremetal node set --property capabilities='profile:control,boot_option:local' dd8e0add-ce74-4505-95a4-4d5442f8ca23
(undercloud) [stack@undercloud21 ~]$ openstack baremetal node set --property capabilities='profile:control,boot_option:local' df3b83b2-a941-4492-92a9-7489533f8a3c
(undercloud) [stack@undercloud21 ~]$ openstack baremetal node set --property capabilities='profile:compute,boot_option:local' 0fe4f3a8-854b-4d20-be44-e07b099cbd4f
(undercloud) [stack@undercloud21 ~]$ openstack baremetal introspection data save 3f91e3b5-7743-4255-bd3c-cef3ad36ebf6 | jq . > /tmp/pp
(undercloud) [stack@undercloud21 ~]$ openstack baremetal introspection data save dd8e0add-ce74-4505-95a4-4d5442f8ca23 | jq . > /tmp/pp

(undercloud) [stack@undercloud21 ~]$ openstack baremetal introspection data save df3b83b2-a941-4492-92a9-7489533f8a3c | jq . > /tmp/pp

(undercloud) [stack@undercloud21 ~]$ openstack baremetal introspection data save 0fe4f3a8-854b-4d20-be44-e07b099cbd4f | jq . > /tmp/pp
(undercloud) [stack@undercloud21 ~]$ openstack baremetal introspection interface list 3f91e3b5-7743-4255-bd3c-cef3ad36ebf6

+-----------+-------------------+----------------------+-------------------+----------------+
| Interface | MAC Address | Switch Port VLAN IDs | Switch Chassis ID | Switch Port ID |
+-----------+-------------------+----------------------+-------------------+----------------+
| enp5s0 | 56:6f:1a:42:00:06 | [] | None | None |
| enp1s0 | 56:6f:1a:42:00:02 | [] | None | None |
| enp4s0 | 56:6f:1a:42:00:05 | [] | None | None |
| enp3s0 | 56:6f:1a:42:00:04 | [] | None | None |
| enp6s0 | 56:6f:1a:42:00:07 | [] | None | None |
| enp2s0 | 56:6f:1a:42:00:03 | [] | None | None |
+-----------+-------------------+----------------------+-------------------+---
(undercloud) [stack@undercloud21 ~]$ openstack baremetal introspection interface list 0fe4f3a8-854b-4d20-be44-e07b099cbd4f
+-----------+-------------------+----------------------+-------------------+---
| Interface | MAC Address | Switch Port VLAN IDs | Switch Chassis ID | Switch Port ID |
+-----------+-------------------+----------------------+-------------------+---
| eno4 | ec:f4:bb:d9:1a:b5 | [] | cc:4e:24:99:19:00 | cc:4e:24:99:19:3c |
| eno2 | ec:f4:bb:d9:1a:b2 | [] | None | None |
| eno3 | ec:f4:bb:d9:1a:b4 | [] | cc:4e:24:99:19:00 | cc:4e:24:99:19:31 |
| eno1 | ec:f4:bb:d9:1a:b0 | [] | None | None |
+-----------+-------------------+----------------------+-------------------+---
(undercloud) [stack@undercloud21 ~]$ openstack baremetal introspection interface list dd8e0add-ce74-4505-95a4-4d5442f8ca23

+-----------+-------------------+----------------------+-------------------+---
| Interface | MAC Address | Switch Port VLAN IDs | Switch Chassis ID | Switch Port ID |
+-----------+-------------------+----------------------+-------------------+---
| enp1s0 | 56:6f:1a:42:00:08 | [] | None | None |
| enp4s0 | 56:6f:1a:42:00:0b | [] | None | None |
| enp3s0 | 56:6f:1a:42:00:0a | [] | None | None |
| enp6s0 | 56:6f:1a:42:00:0d | [] | None | None |
| enp2s0 | 56:6f:1a:42:00:09 | [] | None | None |
| enp5s0 | 56:6f:1a:42:00:0c | [] | None | None |
+-----------+-------------------+----------------------+-------------------+---
(undercloud) [stack@undercloud21 ~]$ openstack baremetal introspection interface list df3b83b2-a941-4492-92a9-7489533f8a3c
+-----------+-------------------+----------------------+-------------------+---
| Interface | MAC Address | Switch Port VLAN IDs | Switch Chassis ID | Switch Port ID |
+-----------+-------------------+----------------------+-------------------+---
| enp3s0 | 56:6f:1a:42:00:10 | [] | None | None |
| enp6s0 | 56:6f:1a:42:00:13 | [] | None | None |
| enp2s0 | 56:6f:1a:42:00:0f | [] | None | None |
| enp5s0 | 56:6f:1a:42:00:12 | [] | None | None |
| enp1s0 | 56:6f:1a:42:00:0e | [] | None | None |
| enp4s0 | 56:6f:1a:42:00:11 | [] | None | None |
+-----------+-------------------+----------------------+-------------------+---

Perform the disk binding

(undercloud) [stack@undercloud21 ~]$ for NODE in `openstack overcloud profiles list | awk 'NR >3 {print $2}'`; do echo $NODE ; openstack baremetal introspection data save $NODE | jq ".inventory.disks" | egrep -A5 "sd" ;done
3f91e3b5-7743-4255-bd3c-cef3ad36ebf6
"name": "/dev/sda",
"model": "QEMU HARDDISK",
"size": 53687091200,
"rotational": true,
"wwn": null,
"serial": "1ad87a55-2150-4aa7-992d-dbdf33ef7a98",
dd8e0add-ce74-4505-95a4-4d5442f8ca23
"name": "/dev/sda",
"model": "QEMU HARDDISK",
"size": 53687091200,
"rotational": true,
"wwn": null,
"serial": "2eb901ef-95aa-45ac-8a91-f3fde390dc57",
df3b83b2-a941-4492-92a9-7489533f8a3c
"name": "/dev/sda",
"model": "QEMU HARDDISK",
"size": 53687091200,
"rotational": true,
"wwn": null,
"serial": "875bd51b-a397-4cd8-b0a2-ee9d6a9529a3",
0fe4f3a8-854b-4d20-be44-e07b099cbd4f
"name": "/dev/sda",
"model": "PERC H730 Mini",
"size": 499558383616,
"rotational": true,
"wwn": "0x614187702fa68100",
"serial": "614187702fa681002799533b17143f6b",
--
"name": "/dev/sdb",
"model": "PERC H730 Mini",
"size": 1497869844480,
"rotational": true,
"wwn": "0x614187702fa68100",
"serial": "614187702fa68100298a6c7a1c5eba7d",
(undercloud) [stack@undercloud21 ~]$ openstack baremetal node set 3f91e3b5-7743-4255-bd3c-cef3ad36ebf6 --property root_device='{ "serial" : "1ad87a55-2150-4aa7-992d-dbdf33ef7a98" }'

(undercloud) [stack@undercloud21 ~]$ openstack baremetal node set dd8e0add-ce74-4505-95a4-4d5442f8ca23 --property root_device='{ "serial" : "2eb901ef-95aa-45ac-8a91-f3fde390dc57" }'

(undercloud) [stack@undercloud21 ~]$ openstack baremetal node set df3b83b2-a941-4492-92a9-7489533f8a3c --property root_device='{ "serial" : "875bd51b-a397-4cd8-b0a2-ee9d6a9529a3" }'

(undercloud) [stack@undercloud21 ~]$ openstack baremetal node set 0fe4f3a8-854b-4d20-be44-e07b099cbd4f --property root_device='{ "serial" : "614187702fa681002799533b17143f6b" }'
(undercloud) [stack@undercloud21 ~]$ for NODE in `openstack baremetal node list -c UUID -f value`; do openstack baremetal node show $NODE -f json -c properties | jq -r .properties.capabilities;done
profile:control,boot_option:local
profile:control,boot_option:local
profile:control,boot_option:local
profile:compute,boot_option:local

for NODE in `openstack baremetal node list -c UUID -f value`; do openstack baremetal node show $NODE -f json -c properties | jq -r .properties.root_device;done
(undercloud) [stack@undercloud21 ~]$ for NODE in `openstack baremetal node list -c UUID -f value`; do openstack baremetal node validate $NODE -f json;done
[
{
"Interface": "bios",
"Result": false,
"Reason": "Driver staging-ovirt does not support bios (disabled or not implemented)."
},
{
"Interface": "boot",
"Result": false,
"Reason": "Cannot validate image information for node 3f91e3b5-7743-4255-bd3c-cef3ad36ebf6 because one or more parameters are missing from its instance_info and insufficent information is present to boot from a remote volume. Missing are: ['image_source', 'kernel', 'ramdisk']"
},
{
"Interface": "console",
"Result": false,
"Reason": "Driver staging-ovirt does not support console (disabled or not implemented)."
},
{

<Output truncated for brevity>

Download the images

[stack@undercloud ~]$ sudo dnf install rhosp-director-images rhosp-director-images-ipa -y

Updating Subscription Management repositories.

/usr/lib/python3.6/site-packages/dateutil/parser/_parser.py:70: UnicodeWarning: decode() called on unicode string, see https://bugzilla.redhat.com/show_bug.cgi?id=1693751
instream = instream.decode()
Error:
Problem 1: package rhosp-director-images-x86_64-16.1-20210430.3.el8ost.noarch requires rhosp-release > 16.1.2-1, but none of the providers can be installed
- package rhosp-director-images-16.1-20210430.3.el8ost.noarch requires rhosp-director-images-x86_64 = 16.1-20210430.3.el8ost, but none of the providers can be installed
- package rhosp-release-16.1.2-2.el8ost.noarch requires podman >= 1.6.4-15, but none of the providers can be installed

[stack@ undercloud ~]$ sudo subscription-manager release --set=8.2
[stack@ undercloud ~]$ sudo dnf module disable -y container-tools:rhel8
[stack@ undercloud ~]$ sudo dnf module enable -y container-tools:2.0
[stack@ undercloud ~]$ sudo dnf module disable -y virt:rhel
[stack@ undercloud ~]$ sudo dnf module enable -y virt:8.2

Render a copy of the openstack-tripleo-heat-templates collection using the process-templates.py script. I have created the “deployment” folder in home/stack for delivery of the templates.

./tools/process-templates.py -o ~/openstack-tripleo-heat-templates-rendered -n /home/stack/deployment/network_data.yaml -r /home/stack/deployment/roles_data.yaml

[stack@undercloud21 config]$ pwd
/home/stack/openstack-tripleo-heat-templates-rendered/network/config
[stack@undercloud21 config]$ ls
2-linux-bonds-vlans bond-with-vlans multiple-nics multiple-nics-vlans single-nic-linux-bridge-vlans single-nic-vlans
[stack@undercloud21 multiple-nics-vlans]$ pwd
/home/stack/openstack-tripleo-heat-templates-rendered/network/config/multiple-nics-vlans
[stack@undercloud21 multiple-nics-vlans]$ ls
compute-dvr.yaml compute.yaml controller.yaml README.md
[stack@undercloud21 multiple-nics-vlans]$

We pick up the rendered compute.yaml file which comes prepopulated with our VLAN information. We are using 2 interfaces en03 and en04 and we chose

Compute.yaml

                               eno3                                                                eno4

 

Lets look at the other files

[stack@undercloud21 deployment]$ ls -ltr

-rw-rw-r--. 1 stack stack 2103 Feb 9 15:23 instackenv.json

-rw-rw-r--. 1 stack stack 6516 Feb 9 15:23 network_data.yaml

-rw-rw-r--. 1 stack stack 9562 Feb 10 15:54 controller.yaml

-rwxrwxr-x. 1 stack stack 557 Feb 24 12:15 deploy.sh

-rw-rw-r--. 1 stack stack 391 Feb 24 14:40 node-info.yaml

-rw-rw-r--. 1 stack stack 1685 Feb 25 07:48 network-environment.yaml

-rw-rw-r--. 1 stack stack 466 Feb 25 12:33 predictable_ips.yaml

-rw-r--r--. 1 stack stack 11632 Feb 25 13:10 roles_data.yaml

-rw-rw-r--. 1 stack stack 7045 Feb 25 14:34 compute.yaml

-rw-rw-r--. 1 stack stack 415 Feb 25 16:08 tempest-deployer-input.conf

-rw-------. 1 stack stack 962 Feb 25 16:37 overcloud24rc

 

Node-info.yaml Node count as per each role and their flavors. We can accomplish this using a HostnameMap as shown below. Through this file we can set a specific format to be used for hostnames instead of the default. You may want to use a custom nova name for each node compute/controller node.

We can also set a specific format to be used for hostnames instead of the default through roles_data.yaml. Please note that node-info.yaml will take precedence.

I created a section in the file and parameter_defaults. use the following syntax to define the predictable IP address settings for each node for each network. Post deployment we will see that controller will get ip address from 10.205.5.81 to 10.205.5.83.

[stack@undercloud21 deployment]$ cat deploy.sh
#!/bin/bash
time openstack overcloud deploy --templates /usr/share/openstack-tripleo-heat-templates/ \
-r /home/stack/deployment/roles_data.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
-e /home/stack/network-environment.yaml \
-e /home/stack/containers-prepare-parameter.yaml \
-e /home/stack/deployment/node-info.yaml \
-e /home/stack/deployment/predictable_ips.yaml \
--stack overcloud24 \
--log-file /tmp/install_overcloud.log --timeout 90

Let’s go ahead and deploy the stack . It will take approximately 40 minutes to complete the deployment, depends on your hardware.

[stack@undercloud21 deployment]$ sh deploy.sh
tripleo-bootstrap : Deploy required packages to bootstrap TripleO ----- 118.66s │··························
<Output truncated for brevity>
Wait for containers to start for step 4 using paunch ------------------ 118.63s │··························
tripleo-container-tag : Pull undercloud21.ctlplane.itchundredlab.com:8787/rhosp-rhel8/openstack-ovn-northd:16.1 image - 116.41│··························
s │··························
tripleo-container-tag : Pull undercloud21.ctlplane.itchundredlab.com:8787/rhosp-rhel8/openstack-cinder-volume:16.1 image - 114│··························
.64s │··························
Wait for containers to start for step 5 using paunch ------------------ 102.68s │··························
Wait for puppet host configuration to finish --------------------------- 68.79s │··························
Run tripleo-container-image-prepare logged to: /var/log/tripleo-container-image-prepare.log -- 59.93s │··························
Wait for puppet host configuration to finish --------------------------- 46.08s │··························
tripleo-container-tag : Pull undercloud21.ctlplane.itchundredlab.com:8787/rhosp-rhel8/openstack-haproxy:16.1 image -- 43.35s │··························
Run puppet on the host to apply IPtables rules ------------------------- 43.17s │··························
Wait for puppet host configuration to finish --------------------------- 42.60s │··························
tripleo-network-config : Run NetworkConfig script ---------------------- 39.15s │··························
Wait for puppet host configuration to finish --------------------------- 39.15s │··························
Wait for puppet host configuration to finish --------------------------- 33.62s │··························
Wait for container-puppet tasks (bootstrap tasks) for step 4 to finish -- 24.48s │··························
│··························
Ansible passed. │··························
Overcloud configuration completed. │··························
Host 10.205.8.175 not found in /home/stack/.ssh/known_hosts │··························
Overcloud Endpoint: http://10.205.8.175:5000 │··························
Overcloud Horizon Dashboard URL: http://10.205.8.175:80/dashboard │··························
Overcloud rc file: /home/stack/deployment/overcloud24rc │··························
Overcloud Deployed without error │··························
│··························
real 89m25.329s │··························
user 0m18.789s │··························
sys 0m2.541s │··························

We have deployed RHOSP 16.1 successfully. I next part we will perform platform verification and do some VNF onboarding

Leave a Reply

Your email address will not be published.