considerations for reboostrapping<\/a>.<\/p>\n\n\n\nThus, our command will look like;<\/p>\n\n\n\n
kolla-ansible -i multinode bootstrap-servers --limit compute02<\/code><\/pre>\n\n\n\nIf you are adding multiple compute nodes;<\/p>\n\n\n\n
kolla-ansible -i multinode bootstrap-servers --limit compute02,compute03,compute0N<\/code><\/pre>\n\n\n\nSample output;<\/p>\n\n\n\n
Bootstrapping servers : ansible-playbook -e @\/etc\/kolla\/globals.yml -e @\/etc\/kolla\/passwords.yml -e CONFIG_DIR=\/etc\/kolla --limit compute02 -e kolla_action=bootstrap-servers \/home\/kifarunix\/kolla-ansible\/share\/kolla-ansible\/ansible\/kolla-host.yml --inventory multinode\n[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details\n\nPLAY [Gather facts for all hosts] *******************************************************************************************************************************************\n\nTASK [Gather facts] *********************************************************************************************************************************************************\nok: [compute02]\n\nTASK [Gather package facts] *************************************************************************************************************************************************\nskipping: [compute02]\n\nTASK [Group hosts to determine when using --limit] **************************************************************************************************************************\nok: [compute02]\n\nPLAY [Gather facts for all hosts (if using --limit)] ************************************************************************************************************************\n\nTASK [Gather facts] *********************************************************************************************************************************************************\nskipping: [compute02] => (item=compute02) \nok: [compute02 -> controller01] => (item=controller01)\nok: [compute02 -> compute01] => (item=compute01)\nok: [compute02 -> storage01] => (item=storage01)\nok: [compute02 -> localhost] => (item=localhost)\n\nTASK [Gather package facts] *************************************************************************************************************************************************\nskipping: [compute02] => (item=compute02) \nskipping: [compute02] => (item=controller01) \nskipping: [compute02] => (item=compute01) \nskipping: [compute02] => (item=storage01) \nskipping: [compute02] => (item=localhost) \nskipping: [compute02]\n\nPLAY [Apply role baremetal] *************************************************************************************************************************************************\n\nTASK [openstack.kolla.etc_hosts : Include etc-hosts.yml] ********************************************************************************************************************\nincluded: \/home\/kifarunix\/.ansible\/collections\/ansible_collections\/openstack\/kolla\/roles\/etc_hosts\/tasks\/etc-hosts.yml for compute02\n\nTASK [openstack.kolla.etc_hosts : Ensure localhost in \/etc\/hosts] ***********************************************************************************************************\nok: [compute02]\n\nTASK [openstack.kolla.etc_hosts : Ensure hostname does not point to 127.0.1.1 in \/etc\/hosts] ********************************************************************************\nok: [compute02]\n\nTASK [openstack.kolla.etc_hosts : Generate \/etc\/hosts for all of the nodes] *************************************************************************************************\n[WARNING]: Module remote_tmp \/root\/.ansible\/tmp did not exist and was created with a mode of 0700, this may cause issues when running as another user. To avoid this, create\nthe remote_tmp dir with the correct permissions manually\nchanged: [compute02]\n\nTASK [openstack.kolla.etc_hosts : Check whether \/etc\/cloud\/cloud.cfg exists] ************************************************************************************************\nok: [compute02]\n\nTASK [openstack.kolla.etc_hosts : Disable cloud-init manage_etc_hosts] ******************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.baremetal : Ensure unprivileged users can use ping] ***************************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.baremetal : Set firewall default policy] **************************************************************************************************************\nok: [compute02]\n\nTASK [openstack.kolla.baremetal : Check if firewalld is installed] **********************************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.baremetal : Disable firewalld] ************************************************************************************************************************\nskipping: [compute02] => (item=firewalld) \nskipping: [compute02]\n\nTASK [openstack.kolla.packages : Install packages] **************************************************************************************************************************\nok: [compute02]\n\nTASK [openstack.kolla.packages : Remove packages] ***************************************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : include_tasks] *******************************************************************************************************************************\nincluded: \/home\/kifarunix\/.ansible\/collections\/ansible_collections\/openstack\/kolla\/roles\/docker\/tasks\/repo-Debian.yml for compute02\n\nTASK [openstack.kolla.docker : Install CA certificates and gnupg packages] **************************************************************************************************\nok: [compute02]\n\nTASK [openstack.kolla.docker : Ensure apt sources list directory exists] ****************************************************************************************************\nok: [compute02]\n\nTASK [openstack.kolla.docker : Ensure apt keyrings directory exists] ********************************************************************************************************\nok: [compute02]\n\nTASK [openstack.kolla.docker : Install docker apt gpg key] ******************************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : Install docker apt pin] **********************************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : Enable docker apt repository] ****************************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : Check which containers are running] **********************************************************************************************************\nok: [compute02]\n\nTASK [openstack.kolla.docker : Check if docker systemd unit exists] *********************************************************************************************************\nok: [compute02]\n\nTASK [openstack.kolla.docker : Mask the docker systemd unit on Debian\/Ubuntu] ***********************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : Install packages] ****************************************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : Start docker] ********************************************************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.docker : Wait for Docker to start] ********************************************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.docker : Ensure containers are running after Docker upgrade] ******************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.docker : Ensure docker config directory exists] *******************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : Write docker config] *************************************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : Remove old docker options file] **************************************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.docker : Ensure docker service directory exists] ******************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : Configure docker service] ********************************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : Ensure the path for CA file for private registry exists] *************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.docker : Ensure the CA file for private registry exists] **********************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.docker : Flush handlers] ******************************************************************************************************************************\n\nRUNNING HANDLER [openstack.kolla.docker : Reload docker service file] *******************************************************************************************************\nok: [compute02]\n\nRUNNING HANDLER [openstack.kolla.docker : Restart docker] *******************************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : Start and enable docker] *********************************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : include_tasks] *******************************************************************************************************************************\nincluded: \/home\/kifarunix\/.ansible\/collections\/ansible_collections\/openstack\/kolla\/roles\/docker\/tasks\/configure-containerd-for-zun.yml for compute02\n\nTASK [openstack.kolla.docker : Ensuring CNI config directory exist] *********************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : Copying CNI config file] *********************************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : Ensuring CNI bin directory exist] ************************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : Copy zun-cni script] *************************************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker : Copying over containerd config] **************************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.kolla_user : Ensure groups are present] ***************************************************************************************************************\nskipping: [compute02] => (item=docker) \nskipping: [compute02] => (item=sudo) \nskipping: [compute02] => (item=kolla) \nskipping: [compute02]\n\nTASK [openstack.kolla.kolla_user : Create kolla user] ***********************************************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.kolla_user : Add public key to kolla user authorized keys] ********************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.kolla_user : Grant kolla user passwordless sudo] ******************************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.docker_sdk : Install packages] ************************************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.docker_sdk : Install latest pip in the virtualenv] ****************************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.docker_sdk : Install docker SDK for python] ***********************************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.baremetal : Ensure node_config_directory directory exists] ********************************************************************************************\nchanged: [compute02]\n\nTASK [openstack.kolla.apparmor_libvirt : include_tasks] *********************************************************************************************************************\nincluded: \/home\/kifarunix\/.ansible\/collections\/ansible_collections\/openstack\/kolla\/roles\/apparmor_libvirt\/tasks\/remove-profile.yml for compute02\n\nTASK [openstack.kolla.apparmor_libvirt : Get stat of libvirtd apparmor profile] *********************************************************************************************\nok: [compute02]\n\nTASK [openstack.kolla.apparmor_libvirt : Get stat of libvirtd apparmor disable profile] *************************************************************************************\nok: [compute02]\n\nTASK [openstack.kolla.apparmor_libvirt : Remove apparmor profile for libvirt] ***********************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.baremetal : Change state of selinux] ******************************************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.baremetal : Set https proxy for git] ******************************************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.baremetal : Set http proxy for git] *******************************************************************************************************************\nskipping: [compute02]\n\nTASK [openstack.kolla.baremetal : Configure ceph for zun] *******************************************************************************************************************\nskipping: [compute02]\n\nRUNNING HANDLER [openstack.kolla.docker : Restart containerd] ***************************************************************************************************************\nchanged: [compute02]\n\nPLAY RECAP ******************************************************************************************************************************************************************\ncompute02 : ok=43 changed=23 unreachable=0 failed=0 skipped=21 rescued=0 ignored=0\n<\/code><\/pre>\n\n\n\nRun Pre-Deployment Checks on the Host<\/h3>\n\n\n\n Next, run pre-deployment checks for node;<\/p>\n\n\n\n
kolla-ansible -i multinode prechecks --limit compute02<\/code><\/pre>\n\n\n\nSample output;<\/p>\n\n\n\n
Pre-deployment checking : ansible-playbook -e @\/etc\/kolla\/globals.yml -e @\/etc\/kolla\/passwords.yml -e CONFIG_DIR=\/etc\/kolla --limit compute02 -e kolla_action=precheck \/home\/kifarunix\/kolla-ansible\/share\/kolla-ansible\/ansible\/site.yml --inventory multinode\n[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details\n\nPLAY [Gather facts for all hosts] *******************************************************************************************************************************************\n\nTASK [Gather facts] *********************************************************************************************************************************************************\nok: [compute02]\n\nTASK [Gather package facts] *************************************************************************************************************************************************\nok: [compute02]\n\nTASK [Group hosts to determine when using --limit] **************************************************************************************************************************\nok: [compute02]\n\nPLAY [Gather facts for all hosts (if using --limit)] ************************************************************************************************************************\n\nTASK [Gather facts] *********************************************************************************************************************************************************\nskipping: [compute02] => (item=compute02) \nok: [compute02 -> controller01] => (item=controller01)\nok: [compute02 -> compute01] => (item=compute01)\nok: [compute02 -> storage01] => (item=storage01)\nok: [compute02 -> localhost] => (item=localhost)\n\nTASK [Gather package facts] *************************************************************************************************************************************************\nskipping: [compute02] => (item=compute02) \nok: [compute02 -> controller01] => (item=controller01)\nok: [compute02 -> compute01] => (item=compute01)\nok: [compute02 -> storage01] => (item=storage01)\nok: [compute02 -> localhost] => (item=localhost)\n\nPLAY [Group hosts based on configuration] ***********************************************************************************************************************************\n\nTASK [Group hosts based on Kolla action] ************************************************************************************************************************************\nok: [compute02]\n\nTASK [Group hosts based on enabled services] ********************************************************************************************************************************\nok: [compute02] => (item=enable_aodh_True)\nok: [compute02] => (item=enable_barbican_False)\nok: [compute02] => (item=enable_blazar_False)\nok: [compute02] => (item=enable_ceilometer_True)\nok: [compute02] => (item=enable_ceph_rgw_False)\nok: [compute02] => (item=enable_cinder_True)\nok: [compute02] => (item=enable_cloudkitty_False)\nok: [compute02] => (item=enable_collectd_False)\nok: [compute02] => (item=enable_cyborg_False)\nok: [compute02] => (item=enable_designate_False)\nok: [compute02] => (item=enable_etcd_True)\nok: [compute02] => (item=enable_freezer_False)\nok: [compute02] => (item=enable_glance_True)\nok: [compute02] => (item=enable_gnocchi_True)\nok: [compute02] => (item=enable_grafana_True)\nok: [compute02] => (item=enable_hacluster_False)\nok: [compute02] => (item=enable_heat_True)\nok: [compute02] => (item=enable_horizon_True)\nok: [compute02] => (item=enable_influxdb_False)\nok: [compute02] => (item=enable_ironic_False)\nok: [compute02] => (item=enable_iscsid_True)\nok: [compute02] => (item=enable_keystone_True)\nok: [compute02] => (item=enable_kuryr_True)\nok: [compute02] => (item=enable_loadbalancer_True)\nok: [compute02] => (item=enable_magnum_False)\nok: [compute02] => (item=enable_manila_False)\nok: [compute02] => (item=enable_mariadb_True)\nok: [compute02] => (item=enable_masakari_False)\nok: [compute02] => (item=enable_memcached_True)\nok: [compute02] => (item=enable_mistral_False)\nok: [compute02] => (item=enable_multipathd_False)\nok: [compute02] => (item=enable_murano_False)\nok: [compute02] => (item=enable_neutron_True)\nok: [compute02] => (item=enable_nova_True)\nok: [compute02] => (item=enable_octavia_False)\nok: [compute02] => (item=enable_opensearch_False)\nok: [compute02] => (item=enable_opensearch_dashboards_False)\nok: [compute02] => (item=enable_openvswitch_True_enable_ovs_dpdk_False)\nok: [compute02] => (item=enable_outward_rabbitmq_False)\nok: [compute02] => (item=enable_ovn_False)\nok: [compute02] => (item=enable_placement_True)\nok: [compute02] => (item=enable_prometheus_True)\nok: [compute02] => (item=enable_rabbitmq_True)\nok: [compute02] => (item=enable_redis_False)\nok: [compute02] => (item=enable_sahara_False)\nok: [compute02] => (item=enable_senlin_False)\nok: [compute02] => (item=enable_skyline_False)\nok: [compute02] => (item=enable_solum_False)\nok: [compute02] => (item=enable_swift_False)\nok: [compute02] => (item=enable_tacker_False)\nok: [compute02] => (item=enable_telegraf_False)\nok: [compute02] => (item=enable_trove_False)\nok: [compute02] => (item=enable_venus_False)\nok: [compute02] => (item=enable_vitrage_False)\nok: [compute02] => (item=enable_watcher_False)\nok: [compute02] => (item=enable_zun_True)\n\nPLAY [Apply role prechecks] *************************************************************************************************************************************************\n\nTASK [prechecks : Checking loadbalancer group] ******************************************************************************************************************************\nok: [compute02] => {\n \"changed\": false,\n \"msg\": \"All assertions passed\"\n}\n\nTASK [prechecks : include_tasks] ********************************************************************************************************************************************\nincluded: \/home\/kifarunix\/kolla-ansible\/share\/kolla-ansible\/ansible\/roles\/prechecks\/tasks\/host_os_checks.yml for compute02\n\nTASK [prechecks : Checking host OS distribution] ****************************************************************************************************************************\nok: [compute02] => {\n \"changed\": false,\n \"msg\": \"All assertions passed\"\n}\n\nTASK [prechecks : Checking host OS release or version] **********************************************************************************************************************\nok: [compute02] => {\n \"changed\": false,\n \"msg\": \"All assertions passed\"\n}\n\nTASK [prechecks : Checking if CentOS is Stream] *****************************************************************************************************************************\nskipping: [compute02]\n\nTASK [prechecks : Fail if not running on CentOS Stream] *********************************************************************************************************************\nskipping: [compute02]\n\nTASK [prechecks : include_tasks] ********************************************************************************************************************************************\nincluded: \/home\/kifarunix\/kolla-ansible\/share\/kolla-ansible\/ansible\/roles\/prechecks\/tasks\/timesync_checks.yml for compute02\n\nTASK [prechecks : Check for a running host NTP daemon] **********************************************************************************************************************\nok: [compute02]\n\nTASK [prechecks : Fail if a host NTP daemon is not running] *****************************************************************************************************************\nskipping: [compute02]\n\nTASK [prechecks : Checking timedatectl status] ******************************************************************************************************************************\nok: [compute02]\n\nTASK [prechecks : Fail if the clock is not synchronized] ********************************************************************************************************************\nskipping: [compute02]\n\nTASK [prechecks : Ensure \/etc\/localtime exist] ******************************************************************************************************************************\nok: [compute02]\n\nTASK [prechecks : Fail if \/etc\/localtime is absent] *************************************************************************************************************************\nskipping: [compute02]\n\nTASK [prechecks : Ensure \/etc\/timezone exist] *******************************************************************************************************************************\nok: [compute02]\n\nTASK [prechecks : Fail if \/etc\/timezone is absent] **************************************************************************************************************************\nskipping: [compute02]\n\nTASK [prechecks : include_tasks] ********************************************************************************************************************************************\nincluded: \/home\/kifarunix\/kolla-ansible\/share\/kolla-ansible\/ansible\/roles\/prechecks\/tasks\/port_checks.yml for compute02\n\nTASK [prechecks : Checking the api_interface is present] ********************************************************************************************************************\nskipping: [compute02]\n\nTASK [prechecks : Checking the api_interface is active] *********************************************************************************************************************\nskipping: [compute02]\n\nTASK [prechecks : Checking the api_interface ip address configuration] ******************************************************************************************************\nskipping: [compute02]\n\nTASK [prechecks : Checking if system uses systemd] **************************************************************************************************************************\nok: [compute02] => {\n \"changed\": false,\n \"msg\": \"All assertions passed\"\n}\n\nTASK [prechecks : Checking Docker version] **********************************************************************************************************************************\nok: [compute02]\n\nTASK [prechecks : Checking empty passwords in passwords.yml. Run kolla-genpwd if this task fails] ***************************************************************************\nok: [compute02 -> localhost]\n\nTASK [prechecks : Check if nscd is running] *********************************************************************************************************************************\nok: [compute02]\n\nTASK [prechecks : Fail if nscd is running] **********************************************************************************************************************************\nskipping: [compute02]\n\nTASK [prechecks : Validate that internal and external vip address are different when TLS is enabled only on either the internal and external network] ***********************\nskipping: [compute02]\n\nTASK [prechecks : Validate that enable_ceph is disabled] ********************************************************************************************************************\nskipping: [compute02]\n\nTASK [prechecks : Checking docker SDK version] ******************************************************************************************************************************\nok: [compute02]\n\nTASK [prechecks : Checking dbus-python package] *****************************************************************************************************************************\nok: [compute02]\n\nTASK [prechecks : Checking Ansible version] *********************************************************************************************************************************\nok: [compute02] => {\n \"changed\": false,\n \"msg\": \"All assertions passed\"\n}\n\nTASK [prechecks : Check if config_owner_user existed] ***********************************************************************************************************************\nok: [compute02]\n\nTASK [prechecks : Check if config_owner_group existed] **********************************************************************************************************************\nok: [compute02]\n\nTASK [prechecks : Check if ansible user can do passwordless sudo] ***********************************************************************************************************\nok: [compute02]\n\nTASK [prechecks : Check if external mariadb hosts are reachable from the load balancer] *************************************************************************************\nskipping: [compute02] => (item=controller01) \nskipping: [compute02]\n\nTASK [prechecks : Check if external database address is reachable from all hosts] *******************************************************************************************\nskipping: [compute02]\n\nPLAY [Apply role common] ****************************************************************************************************************************************************\n\nTASK [common : include_tasks] ***********************************************************************************************************************************************\nincluded: \/home\/kifarunix\/kolla-ansible\/share\/kolla-ansible\/ansible\/roles\/common\/tasks\/precheck.yml for compute02\n\nTASK [service-precheck : common | Validate inventory groups] ****************************************************************************************************************\nskipping: [compute02] => (item=fluentd) \nskipping: [compute02] => (item=kolla-toolbox) \nskipping: [compute02] => (item=cron) \nskipping: [compute02]\n\nPLAY [Apply role loadbalancer] **********************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_collectd_True\n\nPLAY [Apply role collectd] **************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_influxdb_True\n\nPLAY [Apply role influxdb] **************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_telegraf_True\n\nPLAY [Apply role telegraf] **************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_redis_True\n\nPLAY [Apply role redis] *****************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role mariadb] ***************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: mariadb_restart\n\nPLAY [Restart mariadb services] *********************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: mariadb_start\n\nPLAY [Start mariadb services] ***********************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: mariadb_bootstrap_restart\n\nPLAY [Restart bootstrap mariadb service] ************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply mariadb post-configuration] *************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role memcached] *************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role prometheus] ************************************************************************************************************************************************\n\nTASK [prometheus : include_tasks] *******************************************************************************************************************************************\nincluded: \/home\/kifarunix\/kolla-ansible\/share\/kolla-ansible\/ansible\/roles\/prometheus\/tasks\/precheck.yml for compute02\n\nTASK [service-precheck : prometheus | Validate inventory groups] ************************************************************************************************************\nskipping: [compute02] => (item=prometheus-server) \nskipping: [compute02] => (item=prometheus-node-exporter) \nskipping: [compute02] => (item=prometheus-mysqld-exporter) \nskipping: [compute02] => (item=prometheus-haproxy-exporter) \nskipping: [compute02] => (item=prometheus-memcached-exporter) \nskipping: [compute02] => (item=prometheus-cadvisor) \nskipping: [compute02] => (item=prometheus-alertmanager) \nskipping: [compute02] => (item=prometheus-openstack-exporter) \nskipping: [compute02] => (item=prometheus-elasticsearch-exporter) \nskipping: [compute02] => (item=prometheus-blackbox-exporter) \nskipping: [compute02] => (item=prometheus-libvirt-exporter) \nskipping: [compute02] => (item=prometheus-msteams) \nskipping: [compute02]\n\nTASK [prometheus : Get container facts] *************************************************************************************************************************************\nok: [compute02]\n\nTASK [prometheus : Checking free port for Prometheus server] ****************************************************************************************************************\nskipping: [compute02]\n\nTASK [prometheus : Checking free port for Prometheus node_exporter] *********************************************************************************************************\nok: [compute02]\n\nTASK [prometheus : Checking free port for Prometheus mysqld_exporter] *******************************************************************************************************\nskipping: [compute02]\n\nTASK [prometheus : Checking free port for Prometheus haproxy_exporter] ******************************************************************************************************\nskipping: [compute02]\n\nTASK [prometheus : Checking free port for Prometheus memcached_exporter] ****************************************************************************************************\nskipping: [compute02]\n\nTASK [prometheus : Checking free port for Prometheus cAdvisor] **************************************************************************************************************\nok: [compute02]\n\nTASK [prometheus : Checking free ports for Prometheus Alertmanager] *********************************************************************************************************\nskipping: [compute02] => (item=9093) \nskipping: [compute02] => (item=9094) \nskipping: [compute02]\n\nTASK [prometheus : Checking free ports for Prometheus openstack-exporter] ***************************************************************************************************\nskipping: [compute02] => (item=9198) \nskipping: [compute02]\n\nTASK [prometheus : Checking free ports for Prometheus elasticsearch-exporter] ***********************************************************************************************\nskipping: [compute02] => (item=9108) \nskipping: [compute02]\n\nTASK [prometheus : Checking free ports for Prometheus blackbox-exporter] ****************************************************************************************************\nskipping: [compute02] => (item=9115) \nskipping: [compute02]\n\nTASK [prometheus : Checking free ports for Prometheus libvirt-exporter] *****************************************************************************************************\nok: [compute02] => (item=9177)\n\nTASK [prometheus : Checking free ports for Prometheus msteams] **************************************************************************************************************\nskipping: [compute02] => (item=9095) \nskipping: [compute02]\n\nPLAY [Apply role iscsi] *****************************************************************************************************************************************************\n\nTASK [iscsi : include_tasks] ************************************************************************************************************************************************\nincluded: \/home\/kifarunix\/kolla-ansible\/share\/kolla-ansible\/ansible\/roles\/iscsi\/tasks\/precheck.yml for compute02\n\nTASK [service-precheck : iscsi | Validate inventory groups] *****************************************************************************************************************\nskipping: [compute02] => (item=iscsid) \nskipping: [compute02] => (item=tgtd) \nskipping: [compute02]\n\nTASK [iscsi : Get container facts] ******************************************************************************************************************************************\nok: [compute02]\n\nTASK [iscsi : Checking free port for iscsi] *********************************************************************************************************************************\nok: [compute02]\n\nTASK [iscsi : Check supported platforms for tgtd] ***************************************************************************************************************************\nok: [compute02] => {\n \"changed\": false,\n \"msg\": \"All assertions passed\"\n}\n[WARNING]: Could not match supplied host pattern, ignoring: enable_multipathd_True\n\nPLAY [Apply role multipathd] ************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role rabbitmq] **************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: rabbitmq_restart\n\nPLAY [Restart rabbitmq services] ********************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply rabbitmq post-configuration] ************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_outward_rabbitmq_True\n\nPLAY [Apply role rabbitmq (outward)] ****************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: outward_rabbitmq_restart\n\nPLAY [Restart rabbitmq (outward) services] **********************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply rabbitmq (outward) post-configuration] **************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role etcd] ******************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role keystone] **************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_opensearch_True\n\nPLAY [Apply role opensearch] ************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_swift_True\n\nPLAY [Apply role swift] *****************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_ceph_rgw_True\n\nPLAY [Apply role ceph-rgw] **************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role glance] ****************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_ironic_True\n\nPLAY [Apply role ironic] ****************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role cinder] ****************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role placement] *************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Bootstrap nova API databases] *****************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Bootstrap nova cell databases] ****************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role nova] ******************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role nova-cell] *************************************************************************************************************************************************\n\nTASK [nova-cell : include_tasks] ********************************************************************************************************************************************\nincluded: \/home\/kifarunix\/kolla-ansible\/share\/kolla-ansible\/ansible\/roles\/nova-cell\/tasks\/precheck.yml for compute02\n\nTASK [service-precheck : nova | Validate inventory groups] ******************************************************************************************************************\nskipping: [compute02] => (item=nova-libvirt) \nskipping: [compute02] => (item=nova-ssh) \nskipping: [compute02] => (item=nova-novncproxy) \nskipping: [compute02] => (item=nova-spicehtml5proxy) \nskipping: [compute02] => (item=nova-serialproxy) \nskipping: [compute02] => (item=nova-conductor) \nskipping: [compute02] => (item=nova-compute) \nskipping: [compute02] => (item=nova-compute-ironic) \nskipping: [compute02]\n\nTASK [nova-cell : Get container facts] **************************************************************************************************************************************\nok: [compute02]\n\nTASK [nova-cell : Checking available compute nodes in inventory] ************************************************************************************************************\nskipping: [compute02]\n\nTASK [nova-cell : Checking free port for Nova NoVNC Proxy] ******************************************************************************************************************\nskipping: [compute02]\n\nTASK [nova-cell : Checking free port for Nova Serial Proxy] *****************************************************************************************************************\nskipping: [compute02]\n\nTASK [nova-cell : Checking free port for Nova Spice HTML5 Proxy] ************************************************************************************************************\nskipping: [compute02]\n\nTASK [nova-cell : Checking free port for Nova SSH (API interface)] **********************************************************************************************************\nok: [compute02]\n\nTASK [nova-cell : Checking free port for Nova SSH (migration interface)] ****************************************************************************************************\nskipping: [compute02]\n\nTASK [nova-cell : Checking free port for Nova Libvirt] **********************************************************************************************************************\nok: [compute02]\n\nTASK [nova-cell : Checking that host libvirt is not running] ****************************************************************************************************************\nok: [compute02]\n\nTASK [nova-cell : Checking that nova_libvirt container is not running] ******************************************************************************************************\nskipping: [compute02]\n\nPLAY [Refresh nova scheduler cell cache] ************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Reload global Nova super conductor services] **************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Reload Nova cell services] ********************************************************************************************************************************************\n\nTASK [nova-cell : Reload nova cell services to remove RPC version cap] ******************************************************************************************************\nskipping: [compute02] => (item=nova-conductor) \nskipping: [compute02] => (item=nova-compute) \nskipping: [compute02] => (item=nova-compute-ironic) \nskipping: [compute02] => (item=nova-novncproxy) \nskipping: [compute02] => (item=nova-serialproxy) \nskipping: [compute02] => (item=nova-spicehtml5proxy) \nskipping: [compute02]\n\nPLAY [Reload global Nova API services] **************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Run Nova API online data migrations] **********************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Run Nova cell online data migrations] *********************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role openvswitch] ***********************************************************************************************************************************************\n\nTASK [openvswitch : include_tasks] ******************************************************************************************************************************************\nincluded: \/home\/kifarunix\/kolla-ansible\/share\/kolla-ansible\/ansible\/roles\/openvswitch\/tasks\/precheck.yml for compute02\n\nTASK [service-precheck : openvswitch | Validate inventory groups] ***********************************************************************************************************\nskipping: [compute02] => (item=openvswitch-db-server) \nskipping: [compute02] => (item=openvswitch-vswitchd) \nskipping: [compute02]\n\nTASK [openvswitch : Get container facts] ************************************************************************************************************************************\nok: [compute02]\n\nTASK [openvswitch : Checking free port for OVSDB] ***************************************************************************************************************************\nok: [compute02]\n[WARNING]: Could not match supplied host pattern, ignoring: enable_openvswitch_True_enable_ovs_dpdk_True\n\nPLAY [Apply role ovs-dpdk] **************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_ovn_True\n\nPLAY [Apply role ovn-controller] ********************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role ovn-db] ****************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role neutron] ***************************************************************************************************************************************************\n\nTASK [neutron : include_tasks] **********************************************************************************************************************************************\nincluded: \/home\/kifarunix\/kolla-ansible\/share\/kolla-ansible\/ansible\/roles\/neutron\/tasks\/precheck.yml for compute02\n\nTASK [service-precheck : neutron | Validate inventory groups] ***************************************************************************************************************\nskipping: [compute02] => (item=neutron-server) \nskipping: [compute02] => (item=neutron-openvswitch-agent) \nskipping: [compute02] => (item=neutron-linuxbridge-agent) \nskipping: [compute02] => (item=neutron-dhcp-agent) \nskipping: [compute02] => (item=neutron-l3-agent) \nskipping: [compute02] => (item=neutron-sriov-agent) \nskipping: [compute02] => (item=neutron-mlnx-agent) \nskipping: [compute02] => (item=neutron-eswitchd) \nskipping: [compute02] => (item=neutron-metadata-agent) \nskipping: [compute02] => (item=neutron-ovn-metadata-agent) \nskipping: [compute02] => (item=neutron-bgp-dragent) \nskipping: [compute02] => (item=neutron-infoblox-ipam-agent) \nskipping: [compute02] => (item=neutron-metering-agent) \nskipping: [compute02] => (item=ironic-neutron-agent) \nskipping: [compute02] => (item=neutron-tls-proxy) \nskipping: [compute02] => (item=neutron-ovn-agent) \nskipping: [compute02]\n\nTASK [neutron : Get container facts] ****************************************************************************************************************************************\nok: [compute02]\n\nTASK [neutron : Checking free port for Neutron Server] **********************************************************************************************************************\nskipping: [compute02]\n\nTASK [neutron : Checking number of network agents] **************************************************************************************************************************\nskipping: [compute02]\n\nTASK [neutron : Checking tenant network types] ******************************************************************************************************************************\nok: [compute02] => (item=vxlan) => {\n \"ansible_loop_var\": \"item\",\n \"changed\": false,\n \"item\": \"vxlan\",\n \"msg\": \"All assertions passed\"\n}\n\nTASK [neutron : Checking whether Ironic enabled] ****************************************************************************************************************************\nskipping: [compute02]\n\nTASK [neutron : Get container facts] ****************************************************************************************************************************************\nok: [compute02]\n\nTASK [neutron : Get container volume facts] *********************************************************************************************************************************\nok: [compute02]\n\nTASK [neutron : Check for ML2\/OVN presence] *********************************************************************************************************************************\nskipping: [compute02]\n\nTASK [neutron : Check for ML2\/OVS presence] *********************************************************************************************************************************\nskipping: [compute02]\n\nPLAY [Apply role kuryr] *****************************************************************************************************************************************************\n\nTASK [kuryr : include_tasks] ************************************************************************************************************************************************\nincluded: \/home\/kifarunix\/kolla-ansible\/share\/kolla-ansible\/ansible\/roles\/kuryr\/tasks\/precheck.yml for compute02\n\nTASK [service-precheck : kuryr | Validate inventory groups] *****************************************************************************************************************\nskipping: [compute02] => (item=kuryr) \nskipping: [compute02]\n\nTASK [kuryr : Get container facts] ******************************************************************************************************************************************\nok: [compute02]\n\nTASK [kuryr : Checking free port for Kuryr] *********************************************************************************************************************************\nok: [compute02]\n[WARNING]: Could not match supplied host pattern, ignoring: enable_hacluster_True\n\nPLAY [Apply role hacluster] *************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role heat] ******************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role horizon] ***************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_murano_True\n\nPLAY [Apply role murano] ****************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_solum_True\n\nPLAY [Apply role solum] *****************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_magnum_True\n\nPLAY [Apply role magnum] ****************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_mistral_True\n\nPLAY [Apply role mistral] ***************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_sahara_True\n\nPLAY [Apply role sahara] ****************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_manila_True\n\nPLAY [Apply role manila] ****************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role gnocchi] ***************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role ceilometer] ************************************************************************************************************************************************\n\nTASK [ceilometer : include_tasks] *******************************************************************************************************************************************\nincluded: \/home\/kifarunix\/kolla-ansible\/share\/kolla-ansible\/ansible\/roles\/ceilometer\/tasks\/precheck.yml for compute02\n\nTASK [service-precheck : ceilometer | Validate inventory groups] ************************************************************************************************************\nskipping: [compute02] => (item=ceilometer-notification) \nskipping: [compute02] => (item=ceilometer-central) \nskipping: [compute02] => (item=ceilometer-compute) \nskipping: [compute02] => (item=ceilometer-ipmi) \nskipping: [compute02]\n\nTASK [ceilometer : Checking gnocchi backend for ceilometer] *****************************************************************************************************************\nskipping: [compute02]\n\nPLAY [Apply role aodh] ******************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_barbican_True\n\nPLAY [Apply role barbican] **************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_cyborg_True\n\nPLAY [Apply role cyborg] ****************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_designate_True\n\nPLAY [Apply role designate] *************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_trove_True\n\nPLAY [Apply role trove] *****************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_watcher_True\n\nPLAY [Apply role watcher] ***************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role grafana] ***************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_cloudkitty_True\n\nPLAY [Apply role cloudkitty] ************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_freezer_True\n\nPLAY [Apply role freezer] ***************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_senlin_True\n\nPLAY [Apply role senlin] ****************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_tacker_True\n\nPLAY [Apply role tacker] ****************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_octavia_True\n\nPLAY [Apply role octavia] ***************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY [Apply role zun] *******************************************************************************************************************************************************\n\nTASK [zun : include_tasks] **************************************************************************************************************************************************\nincluded: \/home\/kifarunix\/kolla-ansible\/share\/kolla-ansible\/ansible\/roles\/zun\/tasks\/precheck.yml for compute02\n\nTASK [service-precheck : zun | Validate inventory groups] *******************************************************************************************************************\nskipping: [compute02] => (item=zun-api) \nskipping: [compute02] => (item=zun-wsproxy) \nskipping: [compute02] => (item=zun-compute) \nskipping: [compute02] => (item=zun-cni-daemon) \nskipping: [compute02]\n\nTASK [zun : Get container facts] ********************************************************************************************************************************************\nok: [compute02]\n\nTASK [zun : Checking free port for Zun API] *********************************************************************************************************************************\nskipping: [compute02]\n\nTASK [zun : Checking free port for Zun WSproxy] *****************************************************************************************************************************\nskipping: [compute02]\n\nTASK [zun : Checking free port for zun-cni-daemon] **************************************************************************************************************************\nok: [compute02]\n\nTASK [zun : Ensure kuryr enabled for zun] ***********************************************************************************************************************************\nok: [compute02] => {\n \"changed\": false,\n \"msg\": \"All assertions passed\"\n}\n[WARNING]: Could not match supplied host pattern, ignoring: enable_vitrage_True\n\nPLAY [Apply role vitrage] ***************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_blazar_True\n\nPLAY [Apply role blazar] ****************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_masakari_True\n\nPLAY [Apply role masakari] **************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_venus_True\n\nPLAY [Apply role venus] *****************************************************************************************************************************************************\nskipping: no hosts matched\n[WARNING]: Could not match supplied host pattern, ignoring: enable_skyline_True\n\nPLAY [Apply role skyline] ***************************************************************************************************************************************************\nskipping: no hosts matched\n\nPLAY RECAP ******************************************************************************************************************************************************************\ncompute02 : ok=58 changed=0 unreachable=0 failed=0 skipped=47 rescued=0 ignored=0\n<\/code><\/pre>\n\n\n\nDeploy Docker Containers for Required Services on the new Node<\/h3>\n\n\n\n Next, deploy Docker containers for the required services on the new hosts.<\/p>\n\n\n\n
To begin with, download the container images into the host<\/p>\n\n\n\n
kolla-ansible -i multinode pull --limit compute02<\/code><\/pre>\n\n\n\nWhen the command completes, you can list the container images on the node.<\/p>\n\n\n\n
You can login to the node and check list images;<\/p>\n\n\n\n
docker images<\/code><\/pre>\n\n\n\nor just list them using ansible from the control node;<\/p>\n\n\n\n
ansible -i multinode -m raw -a \"docker images\" compute02<\/code><\/pre>\n\n\n\nSample output;<\/p>\n\n\n\n
compute02 | CHANGED | rc=0 >>\nREPOSITORY TAG IMAGE ID CREATED SIZE\nquay.io\/openstack.kolla\/nova-compute 2023.1-ubuntu-jammy 2db6f9a37454 12 hours ago 1.47GB\nquay.io\/openstack.kolla\/zun-compute 2023.1-ubuntu-jammy 430fc0a3c19a 12 hours ago 1.18GB\nquay.io\/openstack.kolla\/zun-cni-daemon 2023.1-ubuntu-jammy ca8af14052bb 12 hours ago 1.03GB\nquay.io\/openstack.kolla\/neutron-openvswitch-agent 2023.1-ubuntu-jammy af133962e664 12 hours ago 1.04GB\nquay.io\/openstack.kolla\/nova-ssh 2023.1-ubuntu-jammy 82fc2363a0de 12 hours ago 1.11GB\nquay.io\/openstack.kolla\/ceilometer-compute 2023.1-ubuntu-jammy 3abd229b37d0 12 hours ago 902MB\nquay.io\/openstack.kolla\/kuryr-libnetwork 2023.1-ubuntu-jammy 338e95d01488 12 hours ago 933MB\nquay.io\/openstack.kolla\/prometheus-libvirt-exporter 2023.1-ubuntu-jammy 36f33bbe9afb 12 hours ago 999MB\nquay.io\/openstack.kolla\/kolla-toolbox 2023.1-ubuntu-jammy 6ea36670c23a 12 hours ago 817MB\nquay.io\/openstack.kolla\/openvswitch-vswitchd 2023.1-ubuntu-jammy 182b7e1ae59c 12 hours ago 273MB\nquay.io\/openstack.kolla\/prometheus-cadvisor 2023.1-ubuntu-jammy 7d405d5952e0 12 hours ago 293MB\nquay.io\/openstack.kolla\/openvswitch-db-server 2023.1-ubuntu-jammy 95806e1d30c6 12 hours ago 273MB\nquay.io\/openstack.kolla\/prometheus-node-exporter 2023.1-ubuntu-jammy ce3c047a3119 12 hours ago 275MB\nquay.io\/openstack.kolla\/nova-libvirt 2023.1-ubuntu-jammy 4ada490f2236 12 hours ago 997MB\nquay.io\/openstack.kolla\/fluentd 2023.1-ubuntu-jammy f0478768afd5 12 hours ago 527MB\nquay.io\/openstack.kolla\/cron 2023.1-ubuntu-jammy 13984cac2ba7 12 hours ago 257MB\nquay.io\/openstack.kolla\/iscsid 2023.1-ubuntu-jammy bd501a059b27 12 hours ago 266MB\nShared connection to compute02 closed.\n<\/code><\/pre>\n\n\n\nDeploy containers on the new node.<\/p>\n\n\n\n
kolla-ansible -i multinode deploy --limit compute02<\/code><\/pre>\n\n\n\nEnsure there is no error. if any fix it and proceed.<\/p>\n\n\n\n
Verify New Node Addition to OpenStack<\/h3>\n\n\n\n You can now verify if the new compute node has been successfully added into OpenStack.<\/p>\n\n\n\n
To begin with, you can list Docker containers running on the node (the command below is executed from the control node);<\/p>\n\n\n\n
ansible -i multinode -m raw -a \"docker ps\" compute02<\/code><\/pre>\n\n\n\nsample output;<\/p>\n\n\n\n
compute02 | CHANGED | rc=0 >>\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nefe871ef9fbf quay.io\/openstack.kolla\/zun-cni-daemon:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 7 minutes ago Up 7 minutes (healthy) zun_cni_daemon\nf6155141547b quay.io\/openstack.kolla\/zun-compute:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 7 minutes ago Up 7 minutes (healthy) zun_compute\n143e53a3b9de quay.io\/openstack.kolla\/ceilometer-compute:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 8 minutes ago Up 8 minutes (unhealthy) ceilometer_compute\nda3bb6f8f71b quay.io\/openstack.kolla\/kuryr-libnetwork:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 8 minutes ago Up 8 minutes (healthy) kuryr\n7fa1016b0acf quay.io\/openstack.kolla\/neutron-openvswitch-agent:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 9 minutes ago Up 8 minutes (healthy) neutron_openvswitch_agent\n98016d47c4d6 quay.io\/openstack.kolla\/openvswitch-vswitchd:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 10 minutes ago Up 9 minutes (healthy) openvswitch_vswitchd\n2676319cfbdc quay.io\/openstack.kolla\/openvswitch-db-server:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 10 minutes ago Up 10 minutes (healthy) openvswitch_db\n8b750f8dc593 quay.io\/openstack.kolla\/nova-compute:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 10 minutes ago Up 10 minutes (healthy) nova_compute\n84397013842c quay.io\/openstack.kolla\/nova-libvirt:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 11 minutes ago Up 10 minutes (healthy) nova_libvirt\n3768d9da5ab7 quay.io\/openstack.kolla\/nova-ssh:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 11 minutes ago Up 11 minutes (healthy) nova_ssh\nec5a5dd65cb4 quay.io\/openstack.kolla\/iscsid:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 11 minutes ago Up 11 minutes iscsid\nf4185c0884ae quay.io\/openstack.kolla\/prometheus-libvirt-exporter:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 11 minutes ago Up 11 minutes prometheus_libvirt_exporter\nd9942be630fa quay.io\/openstack.kolla\/prometheus-cadvisor:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 11 minutes ago Up 11 minutes prometheus_cadvisor\n04fec61c5671 quay.io\/openstack.kolla\/prometheus-node-exporter:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 11 minutes ago Up 11 minutes prometheus_node_exporter\n221098bf97e7 quay.io\/openstack.kolla\/cron:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 11 minutes ago Up 11 minutes cron\n36fc2702d398 quay.io\/openstack.kolla\/kolla-toolbox:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 11 minutes ago Up 11 minutes kolla_toolbox\n80f42d83c6f7 quay.io\/openstack.kolla\/fluentd:2023.1-ubuntu-jammy \"dumb-init --single-\u2026\" 11 minutes ago Up 11 minutes fluentd\n<\/code><\/pre>\n\n\n\nNext, list OpenStack hypervisors;<\/p>\n\n\n\n
Load the credentials;<\/p>\n\n\n\n
source $HOME\/kolla-ansible\/bin\/activate<\/code><\/pre>\n\n\n\nsource \/etc\/kolla\/admin-openrc.sh<\/code><\/pre>\n\n\n\nopenstack hypervisor list<\/code><\/pre>\n\n\n\nOutput;<\/p>\n\n\n\n
+--------------------------------------+---------------------+-----------------+-----------------+-------+\n| ID | Hypervisor Hostname | Hypervisor Type | Host IP | State |\n+--------------------------------------+---------------------+-----------------+-----------------+-------+\n| 6aa76044-d456-4c3b-8f28-fcfc7e79b658 | compute01 | QEMU | 192.168.200.202 | up |\n| 7365f5eb-62e1-477e-bf45-8f77ea98802a | compute02 | QEMU | 192.168.200.203 | up |\n+--------------------------------------+---------------------+-----------------+-----------------+-------+\n<\/code><\/pre>\n\n\n\nThe node is up!<\/p>\n\n\n\n
You can also confirm from the horizon under Admin > Hypervisors<\/strong>.<\/p>\n\n\n\n <\/figure>\n\n\n\nConfirm OpenStack services running on the new node;<\/p>\n\n\n\n
openstack compute service list --host compute02<\/code><\/pre>\n\n\n\n+--------------------------------------+--------------+-----------+------+---------+-------+----------------------------+\n| ID | Binary | Host | Zone | Status | State | Updated At |\n+--------------------------------------+--------------+-----------+------+---------+-------+----------------------------+\n| 464698d3-0da5-44cb-ba91-7d6782b2cff9 | nova-compute | compute02 | nova | enabled | up | 2023-11-05T17:02:23.000000 |\n+--------------------------------------+--------------+-----------+------+---------+-------+----------------------------+\n<\/code><\/pre>\n\n\n\nNova-compute service is running.<\/p>\n\n\n\n
Launch An Instance to Check if it boots on New Compute Node<\/h3>\n\n\n\n You can launch an instance just to check if it is going to boot from the new compute node. As you can see above, the new node has no instances running on it at them moment.<\/p>\n\n\n\n
Kindly note that compute nodes use the nova-scheduler<\/strong><\/code> service to determine how to dispatch compute requests. For example, the nova-scheduler<\/code> service determines on which host or node a VM should launch. So sometimes, unless you specify the respective node you want to boot an instance from, the vm will be booted from the random nodes as long as they have resources to support those instances.<\/p>\n\n\n\nSo, let’s try to randomly boot an instance from the command line;<\/p>\n\n\n\n
source $HOME\/kolla-ansible\/bin\/activate<\/code><\/pre>\n\n\n\nsource \/etc\/kolla\/admin-openrc.sh<\/code><\/pre>\n\n\n\nGet the images;<\/p>\n\n\n\n
openstack image list<\/code><\/pre>\n\n\n\n+--------------------------------------+------------------+--------+\n| ID | Name | Status |\n+--------------------------------------+------------------+--------+\n| 25dead1a-874c-4f19-b0b5-8ea739a15796 | | active |\n| 14f3410f-a63c-4b99-8941-c44f4b40bb90 | jammy | active |\n| 88e386fa-29f9-4fb1-868b-6723cc804b14 | ubuntu22-minimal | active |\n+--------------------------------------+------------------+--------+\n<\/code><\/pre>\n\n\n\nCheck flavors;<\/p>\n\n\n\n
openstack flavor list<\/code><\/pre>\n\n\n\n+--------------------------------------+---------+------+------+-----------+-------+-----------+\n| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |\n+--------------------------------------+---------+------+------+-----------+-------+-----------+\n| 60a3dea9-81a5-4e83-9164-08ee992862de | custom1 | 1024 | 3 | 0 | 1 | True |\n| b2f23a43-de35-4971-97de-36fc53adb9a2 | custom2 | 1024 | 10 | 0 | 1 | True |\n| c92170b6-95a0-4fdf-9f61-dc002a87c9ae | mini | 1024 | 5 | 0 | 1 | True |\n+--------------------------------------+---------+------+------+-----------+-------+-----------+\n<\/code><\/pre>\n\n\n\nList the networks available;<\/p>\n\n\n\n
openstack network list<\/code><\/pre>\n\n\n\n+--------------------------------------+----------+--------------------------------------+\n| ID | Name | Subnets |\n+--------------------------------------+----------+--------------------------------------+\n| 58cd571f-4b2e-41ca-a836-8708c19a6d47 | DEMO_NET | 568de42e-89ab-40df-86f4-5b99fd95014a |\n| 6c6bc33b-73ba-4d6f-af80-e8ae6bafcb41 | EXT_NET | f28bf31f-65d4-4ba0-b933-aa6e48366fb0 |\n+--------------------------------------+----------+--------------------------------------+\n<\/code><\/pre>\n\n\n\nLaunch an instance (You can also launch an instance from horizon if you prefer<\/em><\/strong>);<\/p>\n\n\n\nopenstack server create \\\n\t--image jammy \\\n\t--flavor mini \\\n\t--availability-zone nova \\\n\t--nic net-id=`openstack network list | grep -i demo_net | awk '{print $2}'` \\\n\t--wait \\\n\tcurious_lewin\n<\/code><\/pre>\n\n\n\nThis command creates a new server with the specified image, hardware configuration, availability zone, network interface, and name. It waits for the server creation process to finish before returning control to the user.<\/p>\n\n\n\n
Here’s a breakdown of the command and what it does:<\/p>\n\n\n\n
\n--image jammy<\/code>: Specifies the image (virtual machine template) to be used for the new server. In this case, it’s using an image named “jammy.”<\/li>\n\n\n\n--flavor mini<\/code>: Specifies the flavor (hardware configuration) for the new server. The “mini” flavor likely represents a predefined set of CPU, memory, and storage resources.<\/li>\n\n\n\n--availability-zone nova<\/code>: Explicitly specifies the availability zone in which the new server will be placed. The availability zone is named “nova” in this case. If you dont specify, nova<\/strong>, which is always the default will be used.<\/li>\n\n\n\n--nic net-id=<network-id><\/code>: Configures the network interface of the new server. It connects the server to a specific network identified by its network ID. The net-id<\/code> parameter is obtained using a combination of commands, where openstack network list<\/code> lists the available networks, grep -i demo_net<\/code> searches for a network named “demo_net,” and awk '{print $2}'<\/code> extracts the network ID.<\/li>\n\n\n\n--wait<\/code>: Instructs OpenStack to wait for the server creation process to complete and the server to be in a running state before returning.<\/li>\n\n\n\ncurious_lewin<\/code>: Specifies the name to assign to the new server. In this case, the server is given the name “curious_lewin.”<\/li>\n<\/ul>\n\n\n\nSample output of the command;<\/p>\n\n\n\n
+-------------------------------------+----------------------------------------------------------+\n| Field | Value |\n+-------------------------------------+----------------------------------------------------------+\n| OS-DCF:diskConfig | MANUAL |\n| OS-EXT-AZ:availability_zone | nova |\n| OS-EXT-SRV-ATTR:host | compute02 |\n| OS-EXT-SRV-ATTR:hypervisor_hostname | compute02<\/strong> |\n| OS-EXT-SRV-ATTR:instance_name | instance-0000000a |\n| OS-EXT-STS:power_state | Running |\n| OS-EXT-STS:task_state | None |\n| OS-EXT-STS:vm_state | active |\n| OS-SRV-USG:launched_at | 2023-11-05T16:53:04.000000 |\n| OS-SRV-USG:terminated_at | None |\n| accessIPv4 | |\n| accessIPv6 | |\n| addresses | DEMO_NET=192.168.50.186 |\n| adminPass | gJw4aJV8WcXG |\n| config_drive | |\n| created | 2023-11-05T16:52:22Z |\n| flavor | mini (c92170b6-95a0-4fdf-9f61-dc002a87c9ae) |\n| hostId | 8eaf83b82aa79e3c66d64ed2b68b44bb11b94115a54a436acc1b6d22 |\n| id | 24d7504b-c4a3-49d3-bea3-704707e55e1e |\n| image | jammy (14f3410f-a63c-4b99-8941-c44f4b40bb90) |\n| key_name | None |\n| name | curious_lewin |\n| progress | 0 |\n| project_id | b06556ca186746ff97b6b51faf83129b |\n| properties | |\n| security_groups | name='default' |\n| status | ACTIVE |\n| updated | 2023-11-05T16:53:04Z |\n| user_id | 4aa2123561a740f398310d048dbb6301 |\n| volumes_attached | |\n+-------------------------------------+----------------------------------------------------------+\n<\/code><\/pre>\n\n\n\nPerfect! it is booted on new compute node;<\/p>\n\n\n\n
| OS-EXT-SRV-ATTR:host | compute02 |\n| OS-EXT-SRV-ATTR:hypervisor_hostname | compute02<\/code><\/pre>\n\n\n\nCheck from horizon;<\/p>\n\n\n\n <\/figure>\n\n\n\nhost details (host is compute02);<\/p>\n\n\n\n <\/figure>\n\n\n\nAnd that is it!<\/p>\n\n\n\n
Want to remove a compute node from openstack?<\/p>\n\n\n\n
Safely Remove <\/a> Compute<\/a> Node from OpenStack Deployment<\/a><\/p>\n\n\n\nYou have successfully added a new compute node into OpenStack cloud!<\/p>\n\n\n\n
That brings us to the close of our tutorial on how to use Kolla-Ansible to add compute nodes into OpenStack.<\/p>\n","protected":false},"excerpt":{"rendered":"
Is it possible to add compute nodes into OpenStack using Kolla-Ansible? Yes, definitely. In this step-by-step guide, you will learn how to add compute nodes<\/p>\n","protected":false},"author":10,"featured_media":19132,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[121,1885,1886],"tags":[7281,7282,7283],"class_list":["post-19120","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","category-cloud-compute","category-openstack","tag-add-openstack-compute-nodes","tag-kolla-ansible-add-compute-nodes","tag-openstack-compute-nodes","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/19120"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=19120"}],"version-history":[{"count":13,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/19120\/revisions"}],"predecessor-version":[{"id":20889,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/19120\/revisions\/20889"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/19132"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=19120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=19120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=19120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}