In-place Upgrades

In-place upgrades from Red Hat OSP16.2 to OSP17.1 are supported starting from Cisco ACI OpenStack Plug-in 5.2(1). The upgrade process is related to, and largely based on the procedures discussed in the FRAMEWORK FOR UPGRADES (16.2 to 17.1) Red Hat guide.

Each procedure discussed in this chapter is mandatory and required for the upgrade. The associated procedure from the FRAMEWORK FOR UPGRADES (16.2 to 17.1) guide is indicated.

Removing Custom ACI Repository

Use this procedure to remove the custom ACI repository.

Procedure


Step 1

Create the following ansible playbook to remove the ACI repo from the current yum repos on overcloud nodes.

---
- name: Remove ACI Repo
  hosts: overcloud
  become: yes
  tasks:
    - name: remove_acirepo
      ansible.builtin.file:
        path: /etc/yum.repos.d/ciscoaci.repo
        state: absent

Step 2

Run the playbook from the undercloud.

ansible-playbook -i ~/inventory.yaml <name of playbook file> 

Customizing Roles

Use this procedure for customizing roles.

In the Updating composable services in custom roles_data files section in the FRAMEWORK FOR UPGRADES (16.2 to 17.1) guide, use a custom roles template to add the Cisco composable services. An ansible playbook is provided that modifies the upstream /usr/share/openstack-tripleo-heat-templates/roles_data.yaml file to add these roles.

Procedure


Step 1

Copy the /usr/share/openstack-tripleo-heat-templates/roles_data.yaml file to a private location.

Example:

cp /usr/share/openstack-tripleo-heat-templates/roles_data.yaml /home/stack/templates/custom_roles_data.yaml

Step 2

Edit the local copy of roles_data.yaml(custom_roles_data.yaml) to add CiscoAciAIM and CiscoAciLldp service to the controller role and CiscoAciLldp service to the compute role.

  1. Under the controller role, add the following lines:

    
    - OS::TripleO::Services::CiscoAciAIM
    - OS::TripleO::Services::CiscoAciLldp
    - OS::TripleO::Services::CiscoAciOpflexAgent
  2. Under the compute role, add the following line:

    
    - OS::TripleO::Services::CiscoAciLldp
    - OS::TripleO::Services::CiscoAciOpflexAgent

    Note

     

    RedHat may also instruct to add/change some roles like OS::TripleO::Services::NovaLibvirt for OpenStack upgrade. The above changes are in addition to all other changes that are required for FFU.

An ansible playbook is provided, that modifies the upstream /usr/share/openstack-tripleo-heat-templates/roles_data.yaml file to add these roles. You can skip the above step and run the playbook instead using the sudo ansible-playbook -i ~/inventory.yaml /opt/ciscoaci-tripleo-heat-templates/tools/generate_ciscoaci_role_data.yaml command.


Building Cisco Containers

Use this procedure for building Cisco containers.

Before proceeding to the Upgrading a standard overcloud section of the FRAMEWORK FOR UPGRADES (16.2 to 17.1) Red Hat guide , you need to build Cisco-specific containers.

Procedure


Step 1

Delete the earlier Cisco tripleo package from the undercloud, and install the new OSP17.1 RPM.

Example: For installing tripleo-ciscoaci-17.1-1054.noarch.rpm, use the following commands:


sudo yum remove tripleo-ciscoaci
sudo yum install ./tripleo-ciscoaci-17.1-1054.noarch.rpm

Step 2

Log in to an upstream container registry. For example, if you are using the upstream container registry from Red Hat, run the following command:

sudo podman login registry.connect.redhat.com

Step 3

After logging in to the upstream container registry, run the ACI containers build script for OSP16 using:

sudo /opt/ciscoaci-tripleo-heat-templates/tools/build_openstack_aci_containers.py -z openstack-ciscorpms-repo-17.1-1006.tar.gz --image-tag 17.1 --pull

This script creates the /home/stack/templates/ciscoaci_containers.yaml file, which provides the mapping for the Cisco-specific or modified upstream services to their container images.


Preparing Upstream Containers

It is mandatory to create the container-prepare-parameter.yaml file for Overcloud adoption. For creating the container-prepare-parameter.yaml file, you will need multiple strategies listing for pulling containers for different openstack services during the upgrade process.

Cisco ACI neutron plugin provides the neutron-api, horizon and heat containers and it is necessary to make sure that these containers are excluded from all pull strategies, so the upgrade process does not pull the upstream versions of these containers. Ensure these containers are excluded from all pull strategies in the container-prepare-parameter.yaml file. Here is an example of the file:


parameter_defaults:
  ContainerImageRegistryCredentials:
    registry.redhat.io:
      mcohen2@cisco.com: 'XXXXXXXX'
  ContainerImagePrepare:
  - tag_from_label: '{version}-{release}'
    set:
      namespace: registry.redhat.io/rhosp-rhel9
      name_prefix: openstack-
      name_suffix: ''
      tag: '17.1'
      rhel_containers: false
      neutron_driver: ovn
      ceph_namespace: registry.redhat.io/rhceph
      ceph_image: rhceph-6-rhel9
      ceph_tag: latest
      ceph_prometheus_namespace: registry.redhat.io/openshift4
      ceph_prometheus_image: ose-prometheus
      ceph_prometheus_tag: v4.6
      ceph_alertmanager_namespace: registry.redhat.io/openshift4
      ceph_alertmanager_image: ose-prometheus-alertmanager
      ceph_alertmanager_tag: v4.6
      ceph_node_exporter_namespace: registry.redhat.io/openshift4
      ceph_node_exporter_image: ose-prometheus-node-exporter
      ceph_node_exporter_tag: v4.6
      ceph_grafana_namespace: registry.redhat.io/rhceph
      ceph_grafana_image: rhceph-6-dashboard-rhel9
      ceph_grafana_tag: latest
    push_destination: true
  MultiRhelRoleContainerImagePrepare: &id001
  - tag_from_label: '{version}-{release}'
    set:
      namespace: registry.redhat.io/rhosp-rhel9
      name_prefix: openstack-
      name_suffix: ''
      tag: '17.1'
      rhel_containers: false
      neutron_driver: ovn
      ceph_namespace: registry.redhat.io/rhceph
      ceph_image: rhceph-6-rhel9
      ceph_tag: latest
      ceph_prometheus_namespace: registry.redhat.io/openshift4
      ceph_prometheus_image: ose-prometheus
      ceph_prometheus_tag: v4.6
      ceph_alertmanager_namespace: registry.redhat.io/openshift4
      ceph_alertmanager_image: ose-prometheus-alertmanager
      ceph_alertmanager_tag: v4.6
      ceph_node_exporter_namespace: registry.redhat.io/openshift4
      ceph_node_exporter_image: ose-prometheus-node-exporter
      ceph_node_exporter_tag: v4.6
      ceph_grafana_namespace: registry.redhat.io/rhceph
      ceph_grafana_image: rhceph-6-dashboard-rhel9
      ceph_grafana_tag: latest
    push_destination: true
    excludes:
    - collectd
    - nova-libvirt
    - horizon
    - heat-engine
    - neutron-server
  - tag_from_label: '{version}-{release}'
    set:
      namespace: registry.redhat.io/rhosp-rhel8
      name_prefix: openstack-
      name_suffix: ''
      tag: '17.1'
      rhel_containers: false
      neutron_driver: ovn
      ceph_namespace: registry.redhat.io/rhceph
      ceph_image: rhceph-6-rhel9
      ceph_tag: latest
      ceph_prometheus_namespace: registry.redhat.io/openshift4
      ceph_prometheus_image: ose-prometheus
      ceph_prometheus_tag: v4.6
      ceph_alertmanager_namespace: registry.redhat.io/openshift4
      ceph_alertmanager_image: ose-prometheus-alertmanager
      ceph_alertmanager_tag: v4.6
      ceph_node_exporter_namespace: registry.redhat.io/openshift4
      ceph_node_exporter_image: ose-prometheus-node-exporter
      ceph_node_exporter_tag: v4.6
      ceph_grafana_namespace: registry.redhat.io/rhceph
      ceph_grafana_image: rhceph-6-dashboard-rhel9
      ceph_grafana_tag: latest
    push_destination: true
    includes:
    - collectd
    - nova-libvirt
  ComputeContainerImagePrepare: *id001
  ControllerContainerImagePrepare: *id001


Cisco ACI containers are compatible with both UBI8 and UBI9 and the same version can be deployed in multi-RHELenvironment(s).

For more details, see the Red Hat 16.2-17.1 FFU Guide.

OpenStack Upgrade

Upgrade the undercloud as described in the FRAMEWORK FOR UPGRADES (16.2 TO 17.1) Red Hat guide. Follow the Overcloud upgrade instructions till Chapter 5, in the above-mentioned guide.

For creating the overcloud_upgrade_prepare.sh file, ensure to include the following files, which are specific for Cisco ACI integration.

  • Custom roles file as stated in the Customizing Roles section.

  • Cisco ACI OSP17.1 containers mapping environment file /home/stack/templates/ciscoaci_containers.yaml

  • Cisco ACI specific configuration environment file ciscoaci-config.yaml. Use compatible resources as discussed in the Install Overcloud procedure (step 4).

Following is an example of the overcloud_upgrade_prepare.sh file with Cisco specific templates:


openstack overcloud upgrade prepare --yes \
  --timeout 460 \
  --templates /usr/share/openstack-tripleo-heat-templates \
  --ntp-server 172.28.184.8 \
  --stack overcloud \
  -r /home/stack/templates/custom_roles_data.yaml \
  -e /home/stack/templates/upgrades-environment.yaml \
  -e /home/stack/templates/ciscoaci_containers.yaml \
  -e /home/stack/templates/ciscoaci-config.yaml \
  -e /home/stack/overcloud-deploy/overcloud/overcloud-network-environment.yaml \
  -e /home/stack/overcloud_adopt/baremetal-deployment.yaml \
  -e /home/stack/overcloud_adopt/generated-networks-deployed.yaml \
  -e /home/stack/overcloud_adopt/generated-vip-deployed.yaml \
  -e /usr/share/openstack-tripleo-heat-templates/environments/nova-hw-machine-type-upgrade.yaml \
  -e /home/stack/skip_rhel_release.yaml \
  -e ~/containers-prepare-parameter.yaml

Proceed with the openstack upgrade process as in FRAMEWORK FOR UPGRADES (16.2 TO 17.1) Red Hat guide.

OS Upgrade

For an OS upgrade to RHEL-9, follow the instructions for OS upgrade as detailed in the FRAMEWORK FOR UPGRADES (16.2 TO 17.1) Red Hat guide. When creating the overcloud_upgrade_prepare.sh file for overcloud OS upgrade, ensure to include the ACI specific templates as discussed above.

  • Custom roles file

  • Cisco ACI OSP17.1 containers mapping environment file /home/stack/templates/ciscoaci_containers.yaml

  • Cisco ACI specific configuration environment file ciscoaci-config.yaml

  • container-prepare-parameter.yaml file

    The preparation of the container-prepare-parameter.yaml is similar to the one in the Openstack upgrade process. Ensure to exclude neutron-api, horizon and heat containers from all pull strategies in the container-prepare-parameter.yaml file. Here is an example of the file used during LEAPP upgrade:

    
    parameter_defaults:
      ContainerImageRegistryCredentials:
        registry.redhat.io:
          mcohen2@cisco.com: 'enter password'
      ContainerImagePrepare:
      - tag_from_label: '{version}-{release}'
        set:
          namespace: registry.redhat.io/rhosp-rhel9
          name_prefix: openstack-
          name_suffix: ''
          tag: '17.1'
          rhel_containers: false
          neutron_driver: ovn
          ceph_namespace: registry.redhat.io/rhceph
          ceph_image: rhceph-6-rhel9
          ceph_tag: latest
          ceph_prometheus_namespace: registry.redhat.io/openshift4
          ceph_prometheus_image: ose-prometheus
          ceph_prometheus_tag: v4.6
          ceph_alertmanager_namespace: registry.redhat.io/openshift4
          ceph_alertmanager_image: ose-prometheus-alertmanager
          ceph_alertmanager_tag: v4.6
          ceph_node_exporter_namespace: registry.redhat.io/openshift4
          ceph_node_exporter_image: ose-prometheus-node-exporter
          ceph_node_exporter_tag: v4.6
          ceph_grafana_namespace: registry.redhat.io/rhceph
          ceph_grafana_image: rhceph-6-dashboard-rhel9
          ceph_grafana_tag: latest
        push_destination: true
        excludes:
        - horizon
        - heat-engine
        - neutron-server