In-place Upgrades

In-place upgrades from Red Hat OSP13 to OSP16 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 (13 TO 16.2) Red Hat guide.

Each of procedures discussed in this chapter are mandatory and required for the upgrade. The associated procedure from the FRAMEWORK FOR UPGRADES (13 TO 16.2) guide is indicated.

Removing Custom ACI Repository

Use this procedure to remove the custom ACI repository.

Before you begin

Follow the steps documented in the FRAMEWORK FOR UPGRADES (13 TO 16.2) Red Hat guide, up until the Updating composable services and parameters section.

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 (13 TO 16.2) 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


Run the playbook using the following command.

ansible-playbook -i ~/inventory.yaml /opt/ciscoaci-tripleo-heat-templates/tools/generate_ciscoaci_role_data.yaml

This creates a new custom_roles_data.yaml file in the /home/stack/templates directory.

If you are using a custom roles file, then, instead of the step indicated above, you must add the services to the Controller and Compute roles.

Add the following services for the Controller role:


OS::TripleO::Services::CiscoAciAIM
OS::TripleO::Services::CiscoAciLldp
OS::TripleO::Services::CiscoAciOpflexAgent

Add the following services for the Compute role:


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

Open vSwitch Compatibility

Skip the Maintaining Open vSwitch compatibility during the upgrade section in the FRAMEWORK FOR UPGRADES (13 TO 16.2) Red Hat guide. Following is an example of Cisco-specific configuration environment yaml file (ciscoaci-config.yaml):


# A Heat environment file which can be used to enable a
# a Neutron Cisco Aci backend on the controller, configured via puppet
resource_registry:

  #controller
  OS::TripleO::ControllerExtraConfigPre: /opt/ciscoaci-tripleo-heat-templates//nodepre.yaml
  OS::TripleO::Services::NeutronOvsAgent: /opt/ciscoaci-tripleo-heat-templates/deployment/neutron_opflex/neutron-opflex-agent-container-puppet.yaml
  OS::TripleO::Docker::NeutronMl2PluginBase: /opt/ciscoaci-tripleo-heat-templates/deployment/neutron/neutron-ml2-ciscoaci.yaml
  OS::TripleO::Services::CiscoAciAIM: /opt/ciscoaci-tripleo-heat-templates/deployment/aciaim/cisco-aciaim-container-puppet.yaml
  OS::TripleO::Services::NeutronMetadataAgent: /usr/share/openstack-tripleo-heat-templates/deployment/neutron/neutron-metadata-container-puppet.yaml
  OS::TripleO::Services::NeutronDhcpAgent: /usr/share/openstack-tripleo-heat-templates/deployment/neutron/neutron-dhcp-container-puppet.yaml
  #compute
  OS::TripleO::ComputeExtraConfigPre: /opt/ciscoaci-tripleo-heat-templates//nodepre.yaml
  OS::TripleO::Services::ComputeNeutronOvsAgent: /opt/ciscoaci-tripleo-heat-templates/deployment/neutron_opflex/neutron-opflex-agent-container-puppet.yaml
  OS::TripleO::Services::ComputeNeutronMetadataAgent: /opt/ciscoaci-tripleo-heat-templates/deployment/compute_neutron_metadata/compute-neutron-metadata.yaml

  OS::TripleO::Services::CiscoAciOpflexAgent: /opt/ciscoaci-tripleo-heat-templates/deployment/opflex/opflex-agent-container-puppet.yaml
  OS::TripleO::Services::CiscoAciLldp: /opt/ciscoaci-tripleo-heat-templates/deployment/lldp/cisco_lldp.yaml

  OS::TripleO::Services::OVNDBs: OS::Heat::None
  OS::TripleO::Services::OVNController: OS::Heat::None
  OS::TripleO::Services::OVNMetadataAgent: OS::Heat::None
  OS::TripleO::Services::ComputeNeutronL3Agent: OS::Heat::None
  OS::TripleO::Services::NeutronL3Agent: OS::Heat::None

parameter_defaults:

  EC2MetadataIp: 1.100.1.1
  ControlPlaneDefaultRoute: 1.100.1.1
  OvercloudControllerFlavor: control
  OvercloudComputeFlavor: compute

  DockerInsecureRegistryAddress: ["ostack-pt-1-s1-ucloud-13.ctlplane.localdomain:8787", "1.100.1.1:8787"]

  NeutronCorePlugin: 'ml2plus'
  NeutronServicePlugins: 'group_policy,ncp,apic_aim_l3'
  NeutronEnableIsolatedMetadata: true
  NeutronEnableForceMetadata: true
  NeutronPhysicalDevMappings: physnet1:eth1,physnet2:eth2
  EnablePackageInstall: true
  ACIScopeNames: true
  ACIApicHosts: 10.30.120.190
  ACIApicUsername: admin
  ACIApicPassword: noir0123
  ACIApicSystemId: ostack-pt-1-s1
  ACIMechanismDrivers: 'apic_aim'
  ACIApicEntityProfile: sauto_ostack-pt-1-s1_aep
  ACIApicInfraVlan: 3701
  ACIApicInfraSubnetGateway: 10.0.0.30
  ACIApicInfraAnycastAddr: 10.0.0.32
  ACIOpflexUplinkInterface: bond1
  ACIYumRepo: http://1.100.1.1:8787/v2/__acirepo

  ACIOpflexEncapMode: vxlan
  NeutronNetworkVLANRanges: physnet1:1751:1800
  ACIOpflexVlanRange: 751:800
  HeatEnginePluginDirs: /usr/lib64/heat,/usr/lib/heat,/usr/local/lib/heat,/usr/local/lib64/heat,/usr/lib/python2.7/site-packages/gbpautomation/heat
  ACIVpcPairs: 101:102
  NeutronPluginMl2PuppetTags: 'neutron_plugin_ml2,neutron_plugin_cisco_aci'
  AciVmmMcastRanges: 225.2.1.1:225.2.255.255
  AciVmmMulticastAddress: 225.2.10.3

#Below parameters are only needed when installing Openshift on Openstack
  ACIOpflexInterfaceType: 'ovs'
  ACIOpflexInterfaceMTU: 8000

Building Cisco Containers

Use this procedure for building Cisco containers.

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

Procedure


Step 1

Delete the OSP13 Cisco tripleo package from the undercloud, and install the new OSP16 RPM.

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


sudo yum remove tripleo-ciscoaci
sudo yum install ./tripleo-ciscoaci-16.2-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.redhat.io

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-16.2-1006.tar.gz

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.

Step 4

After building the containers for OSP16, build the transitional (Stein) containers, using the following command:

sudo /opt/ciscoaci-tripleo-heat-templates/tools/build_transitional_aci_containers.py -z openstack-ciscorpms-repo-15.0-995.tar.gz --force

This script builds the ACI transitional containers for OSP15, and provides a mapping of the Cisco-specific services to their container images in the /home/stack/templates/ciscoaci_containers_stein.yaml file.


Upgrade Prepare

In the Running the overcloud upgrade preparation section of the FRAMEWORK FOR UPGRADES (13 TO 16.2) Red Hat guide, ensure to include files specific for Cisco ACI integration. They are:

  • Custom roles file

  • Cisco ACI OSP16 containers mapping Heat environment file

  • Cisco ACI OSP15 containers mapping Heat environment file

  • Cisco ACI specific configuration environment file

Following is an example of the upgrade prepare command with Cisco specific templates:


source ~/stackrc 
openstack overcloud upgrade prepare \
            --templates /home/stack/tripleo-heat-templates \
            -r /home/stack/templates/custom_roles_data.yaml \
            -e /home/stack/tripleo-heat-templates/environments/network-isolation.yaml \
            -e /home/stack/templates/containers-prepare-parameter.yaml \
            -e /home/stack/templates/network-environment.yaml \
            -e /home/stack/templates/ciscoaci_containers.yaml \
            -e /home/stack/templates/ciscoaci_containers_stein.yaml \
            -e /home/stack/templates/ciscoaci-config.yaml \
            -e /home/stack/templates/rhsm.yaml \
            -e /home/stack/templates/upgrades-environment.yaml -y

Upgrade Converge

In the Synchronizing the overcloud stack section of the FRAMEWORK FOR UPGRADES (13 TO 16.2) Red Hat guide, ensure to include files specific for Cisco ACI integration. They are:

  • Custom roles file

  • Cisco ACI OSP16 containers mapping Heat environment file

  • Cisco ACI OSP15 containers mapping Heat environment file

  • Cisco ACI specific configuration environment file

Following is an example of the upgrade converge command with Cisco specific yaml files:


source ~/stackrc 
openstack overcloud upgrade converge \
            --templates /home/stack/tripleo-heat-templates \
            -r /home/stack/templates/custom_roles_data.yaml \
            -e /home/stack/tripleo-heat-templates/environments/network-isolation.yaml \
            -e /home/stack/templates/containers-prepare-parameter.yaml \
            -e /home/stack/templates/network-environment.yaml \
            -e /home/stack/templates/ciscoaci_containers.yaml \
            -e /home/stack/templates/ciscoaci_containers_stein.yaml \
            -e /home/stack/templates/ciscoaci-config.yaml \
            -e /home/stack/templates/rhsm.yaml \
            -e /home/stack/templates/upgrades-environment.yaml -y