Home > Storage > PowerFlex > White Papers > Red Hat OpenStack Platform 16.1 with Dell EMC PowerFlex family > Director (undercloud) installation
The first step to create the RHOSP environment is to install the director on the undercloud VM. This section describes the prerequisite steps to enable the necessary subscriptions, repositories, and configurations.
Before proceeding for director installation complete the below configuration:
[root@director ~]# useradd stack
[root@director ~]# passwd stack
[root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack
[root@director [root@director ~]# chmod 0440 /etc/sudoers.d/stack
[root@director ~]# su – stack
[stack@director ~]$ mkdir ~/images
[stack@director ~]$ mkdir ~/templates
[stack@director ~]$ sudo hostnamectl set-hostname <undercloud.example.com>
[stack@director ~]$ sudo hostnamectl set-hostname –transient <undercloud.example.com>
10.X.X.X undercloud.example.com undercloud
stack@director ~]$ sudo subscription-manager register
Note: A username and password plus a valid Red Hat subscription is required to register node with Red Hat.
[stack@director ~]$ sudo subscription-manager list --available --all --matches="Red Hat openstack"
[stack@director ~]$ sudo subscription-manager attach --pool=<Entitlement Pool ID>
[stack@director ~]$ sudo subscription-manager release --set=8.2
[stack@director ~]$ sudo subscription-manager repos --disable=*
[stack@director ~]$ 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
[stack@director ~]$ sudo dnf module disable -y container-tools:rhel8
[stack@director ~]$ sudo dnf module enable -y container-tools:2.0
[stack@director ~]$ sudo dnf module disable -y virt:rhel
[stack@director ~]$ sudo dnf module enable -y virt:8.2
[stack@director ~]$ sudo dnf update -y
[stack@director ~]$ sudo reboot
[stack@director ~]$ sudo dnf install -y python-tripleoclient.
[stack@director ~]$ openstack tripleo container image prepare default \
--local-push-destination \
--output-env-file containers-prepare-parameter.yaml
This command includes the following additional options:
local-push-destination sets the registry on the undercloud as the location for container images. To pull container images directly from the Red Hat Container Catalog, omit this option.
output-env-file specifies an environment file that includes include the parameters for preparing your container images.
Customize this environment file as per environment requirements .For more information, see Preparing container images.
The director installation process requires certain settings to determine your network configurations. The settings are stored in a template located in the stack user’s home directory as undercloud.conf.
[stack@director ~]$ cp /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf
For more information, see Director configuration parameters.
Note: Make sure staging-ovirt and idrac driver is enabled in undercloud.conf under enabled_hardware_types parameter.
[stack@director ~]$ openstack undercloud install
After successful deployment of the director, it generates two important files:
undercloud-passwords.conf - A list of all passwords for the director’s services.
stackrc - A set of initialization variables to access the director’s command line tools.
[stack@director ~]$ sudo podman ps
[stack@director ~]$ source ~/stackrc
(undercloud) [stack@director ~]$
(undercloud) [stack@director ~]$ openstack subnet set --dns-nameserver [nameserver1-ip] --dns-nameserver [nameserver2-ip] ctlplane-subnet
(undercloud) [stack@director ~]$openstack subnet show ctlplane-subnet
As mentioned earlier, an overcloud is an operating environment available to run guest VMs and workloads.
Overcloud controller VMs:
Overcloud compute node:
Some of the network configuration steps should be performed on the bare metal nodes (overcloud nodes) before proceeding with below sections. For more information about the network and design, see Network planning.
i Mac address of the provision network. Later, it will be updated in json file to register VM.
ii Logical network interface name of respective network for controller yaml which will be used during overcloud deployment.
The director requires several disk images for provisioning of the overcloud nodes. The following images are downloaded by the director:
Procedure:
[stack@director ~]$ source ~/stackrc
(undercloud) [stack@director ~]$ sudo dnf install rhosp-director-images rhosp-directorimages-ipa
(undercloud) [stack@director ~]$ mkdir ~/images
(undercloud) [stack@director ~]$ cd ~/images
(undercloud) [stack@director images]$ for i in /usr/share/rhosp-director-images/overcloudfull-latest-16.1.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-16.1.tar; do tar -xvf $i; done
(undercloud) [stack@director images]$ openstack overcloud image upload --image-path /home/stack/images/
(undercloud) [stack@director images]$ openstack image list
For more information about configuring multiple CPU architecture, see Multiple CPU architecture overclouds.
For more details to create json file, see baremetal node json and virtualized controller json.
(undercloud) [stack@director ~]$ openstack overcloud node import --validate-only ~/<filename>.json
(undercloud) [stack@director ~]$ openstack overcloud node import ~/<filename>.json
(undercloud) [stack@director ~]$ openstack baremetal node list
(undercloud) [stack@director ~]$ openstack tripleo validator run --group pre-introspection
(undercloud) [stack@director ~]$ openstack tripleo validator show run <UUID>
(undercloud) [stack@director ~]$ openstack overcloud node introspect --all-manageable -–provide
where
all-manageable option introspects only nodes in a managed state.
provide option resets all nodes to an available state after introspection
i Move the node into manage state.
(undercloud) [stack@director ~]$ openstack baremetal node manage [NODE UUID]
where, node UUID can be recorded using OpenStack baremetal node list command.
ii Run the introspection process on the specific node.
(undercloud) [stack@director ~]$ openstack overcloud node introspect [NODE UUID] --provide
(undercloud) [stack@director ~]$ sudo tail -f /var/log/containers/ironic-inspector/ironic-inspector.log
(undercloud) [stack@director ~]$ openstack baremetal introspection data save <UUID> | jq . > <filename>
(undercloud) [stack@director ~]$ openstack baremetal introspection interface list [NODE UUID]
(undercloud) [stack@director ~]$ openstack baremetal introspection interface show [NODE UUID] [INTERFACE]
(undercloud) [stack@director ~]$ openstack baremetal introspection data save UUID | jq .numa_topology
(undercloud) [stack@director ~]$ openstack baremetal node set --property capabilities='profile:control,boot_option:local' <UUID of the node>
(undercloud) [stack@director ~]$ openstack baremetal node set --property capabilities='profile:compute,boot_option:local' <UUID of the node>
i Make sure to set following parameters in your undercloud.conf.
ipxe_enabled = True
inspection_enable_uefi = True
Note: For any changes in undercloud.conf, re-run undercloud installation
ii Make changes to the node capabilities or properties.
undercloud) [stack@director ~]$ NODE=<NODE NAME OR ID> ; openstack baremetal node set --property capabilities="boot_mode:uefi,$(openstack baremetal node show $NODE -f json -c properties | jq -r .properties.capabilities | sed "s/boot_mode:[^,],//g")" $NODE*
iii Make changes to each flavor.
openstack flavor set --property capabilities:boot_mode='uefi' control
(undercloud) [stack@director ~]$ openstack overcloud profiles list
For example:
-----BEGIN CERTIFICATE----- MIIDlTCCAn2gAwIBAgIJAOnPtx2hHEhrMA0GCSqGSIb3DQEBCwUAMGExCzAJBgNV BAYTAlVTMQswCQYDVQQIDAJOQzEQMA4GA1UEBwwHUmFsZWlnaDEQMA4GA1UECgwH UmVkIEhhdDELMAkGA1UECwwCUUUxFDASBgNVBAMMCzE5Mi4xNjguMC4yMB4XDTE3 -----END CERTIFICATE-----
Note: For more details about configuring Certificates for OpenStack environment, see SSL/TLS Certificate Configuration. Self-signed certificate is available here: /home/stack/ca.crt.pem.
(undercloud) [stack@director ~]$ cd /usr/share/openstack-tripleo-heat-templates
(undercloud) [stack@director ~]$./tools/process-templates.py -o ~/openstack-tripleo-heat-templates-rendered
All the files are converted into yaml format and saved as OpenStack-tripleo-heat-templates-rendered.
(undercloud) [stack@director ~]$ ./tools/process-templates.py -o ~/openstack-tripleo-heat-templates-rendered -n /home/stack/network_data.yaml
Example:
(undercloud) [stack@director ~]$ cp -r ~/openstack-tripleo-heat-templates-rendered/network/config/single-nics-vlans/ ~/templates/custom-nics/
(undercloud) [stack@director ~]$ cp /openstack-tripleo-heat-templates-rendered/network/scripts/run-os-net-config.sh /templates/custom-nics/
These customized yaml files will override parameters and resources in the core heat template collection.
You can include as many environment files as necessary. However, the order of the environment files is important, as the parameters and resources that are defined in subsequent environment files take precedence.
Use the following list as an example of the environment file order:
For information about the list of networks used in this solution, refer to the section on Network planning. Refer to the customized network environment files under the sample section Custom yamls for OpenStack overcloud deployment.
For more information about cinder configuration file with respect to PowerFlex, see Dell EMC PowerFlex Backend Deployment Guide.
All the yaml files are stored in the template folder under ‘stack’ user. Refer to appendix for Custom yamls for OpenStack overcloud deployment.
Note: Based on your setup, if you need more detailed information, see Advance overcloud customization and Configuring the backend storage.
Deployment uses a collection of environment files and templates, resulting in the overcloud setup. Before performing the overcloud creation, validate all the heat templates and environment files for any errors. Any environment files added to the overcloud using the -e option become part of overcloud stack definition.
(undercloud) [stack@undercloud ~]$ openstack overcloud deploy --templates \
-e /home/stack/templates/node-info.yaml \
-e /home/stack/containers-prepare-parameter.yaml \
-e /home/stack/templates/inject-trust-anchor-hiera.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml \
-e /home/stack/templates/custom-network-environment.yaml \
-n /home/stack/templates/custom-network_data.yaml \
-e /home/stack/templates/cinder-config.yaml \
-e /home/stack/templates/volume-mapping.yaml \
--ntp-server <NTP-IP>
--update-plan-only
(undercloud) [stack@undercloud ~]$ openstack tripleo validator run --group pre-deployment
(undercloud) [stack@undercloud ~]$ openstack tripleo validator run --group pre-deployment \
--plan myovercloud
(undercloud) [stack@undercloud ~]$ openstack tripleo validator show run <UUID>
openstack overcloud deploy --templates \
-e /home/stack/templates/node-info.yaml \
-e /home/stack/containers-prepare-parameter.yaml \
-e /home/stack/templates/inject-trust-anchor-hiera.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml \
-e /home/stack/templates/custom-network-environment.yaml \
-n /home/stack/templates/custom-network_data.yaml \
-e /home/stack/templates/cinder-config.yaml \
-e /home/stack/templates/volume-mapping.yaml \
--ntp-server <NTP-IP>
Note: Deployment process takes some time to complete.
(undercloud) [stack@director ~]$ source ~/stackrc
(undercloud) [stack@director ~]$ openstack stack list
(undercloud) [stack@director ~]$ openstack overcloud status
(undercloud) [stack@director ~]$ sudo tail -f /var/lib/mistral/overcloud/ansible.log
Ansible passed.
Overcloud configuration completed.
Overcloud Endpoint: http://<IP_address>:5000
Overcloud Horizon Dashboard URL:
http://<IP_address>:/dashboard
Overcloud rc file: /home/stack/overcloudrc
Overcloud Deployed