=============== tripleo-upgrade =============== This role aims to provide a unified tool for upgrading TripleO based deploments. Requirements ------------ This role requires: * An ansible inventory file containing reacheable undercloud and overcloud nodes * Nodes in the inventory file are placed in groups based on their roles (e.g compute nodes are part of the 'compute' group) * Repositories containing packages to be upgraded are already installed on undercloud and overcloud nodes (or, for overcloud, define an upgrade_init_command variable) * The initial overcloud deploy command is placed in a script file located in the path set by the overcloud_deploy_script var. Each option/environment file should be placed on a separate new line, e.g:: source ~/stackrc export THT=/usr/share/openstack-tripleo-heat-templates/ openstack overcloud deploy --templates $THT \ -r ~/openstack_deployment/roles/roles_data.yaml \ -e $THT/environments/network-isolation.yaml \ -e $THT/environments/network-management.yaml \ -e $THT/environments/storage-environment.yaml \ -e ~/openstack_deployment/environments/nodes.yaml \ -e ~/openstack_deployment/environments/network-environment.yaml \ -e ~/openstack_deployment/environments/disk-layout.yaml \ -e ~/openstack_deployment/environments/neutron-settings.yaml \ --log-file overcloud_deployment.log &> overcloud_install.log Role Variables -------------- Available variables are listed below:: upgrade_noop: false Only create upgrade scripts without running them:: update_noop: false Only create update scripts without running them:: undercloud_upgrade: false Run undercloud upgrade:: containerized_undercloud_upgrade: false Run containerized undercloud upgrade:: overcloud_upgrade: false Run overcloud upgrade:: undercloud_update: false Run undercloud update:: overcloud_update: false Run overcloud update:: overcloud_deploy_script: "~/overcloud_deploy.sh" Location of the initial overcloud deploy script:: undercloud_upgrade_script: "~/undercloud_upgrade.sh" Location of the undercloud upgrade script which is going to be generated by this role:: overcloud_composable_upgrade_script: "~/composable_docker_upgrade.sh" Location of the upgrade script used in the composable docker upgrade step which is going to be generated by this role:: overcloud_converge_upgrade_script: "~/converge_docker_upgrade.sh" Location of the upgrade script used in the converge docker upgrade step which is going to be generated by this role:: undercloud_rc: "~/stackrc" Location of the undercloud credentials file:: overcloud_rc: "~/overcloudrc" Location of the overcloud credentials file:: upgrade_workarounds: false Allows the user to apply known issues workarounds during the upgrade process. The list of patches/commands used for workarounds should be passed via --extra-vars and it should include dictionaries for undercloud/overcloud workarounds:: use_oooq: false Set to true when the deployment has been done by tripleo quickstart:: workload_launch: false Set to true to launch an instance before starting upgrade. This can be useful for running tests during upgrade such as live migration or floating IP connectivity checks:: external_network_name: "public" Name of the external network providing floating IPs for instance connectivity. This provides external connectivity and needs to exist beforehand, created by the user:: workload_image_url: "http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img" URL of the image used for the workload instance:: workload_memory: "512" Amount of memory assigned for the workload instance:: tripleo_ci: false Set to true when running the role in the TripleO CI jobs. It avoids losing connectivity to the undercloud by skipping reboot and ssh kill tasks:: upgrade_init_command: | sudo tripleo-repos -b pike current Bash commands, defines a custom upgrade init to be taken into account during overcloud upgrade. Dependencies ------------ None. Example Playbook ---------------- An example playbook is provided in tests/test.yml:: - hosts: undercloud gather_facts: true become: true become_method: sudo become_user: stack roles: - tripleo-upgrade Usage with tripleo Quickstart ----------------------------- After a successful deployment with OOOQ, you can create the necessary scripts using this example playbook (duplicate from ./tests/oooq-test.yaml):: --- - hosts: undercloud gather_facts: true become: true become_method: sudo become_user: stack roles: - { role: tripleo-upgrade, use_oooq: 'true'} And then you run it like this (adjust the paths to your oooq specific one):: ANSIBLE_SSH_ARGS="-F $(pwd)/ssh.config.ansible" \ ANSIBLE_CONFIG=$PWD/ansible.cfg \ ansible-playbook -i hosts -vvv tripleo-upgrade/tests/oooq-test.yaml This will only create the file (without running the actual upgrade): - undercloud_upgrade.sh - composable_docker_upgrade.sh - overcloud-compute-\*_upgrade_pre.sh - overcloud-compute-\*_upgrade.sh - overcloud-compute-\*_upgrade_post.sh - converge_docker_upgrade.sh with the correct parameters. Usage with InfraRed ------------------- tripleo-upgrade comes preinstalled as an InfraRed plugin. In order to install it manually, the following InfraRed command should be used:: infrared plugin add tripleo-upgrade # add with a specific revision / branch infrared plugin add --revision stable/pike tripleo-upgrade After a successful InfraRed overcloud deployment you need to run the following steps to upgrade the deployment: Symlink roles path:: ln -s $(pwd)/plugins $(pwd)/plugins/tripleo-upgrade/infrared_plugin/roles Set up undercloud upgrade repositories:: infrared tripleo-undercloud \ --upgrade yes \ --mirror ${mirror_location} \ --ansible-args="tags=upgrade_repos" Set up undercloud update repositories:: infrared tripleo-undercloud \ --update-undercloud yes \ --mirror ${mirror_location} \ --build latest \ --version 12 \ --ansible-args="tags=upgrade_repos" Upgrade undercloud:: infrared tripleo-upgrade \ --undercloud-upgrade yes Update undercloud:: infrared tripleo-upgrade \ --undercloud-update yes Set up overcloud upgrade repositories:: infrared tripleo-overcloud \ --deployment-files virt \ --upgrade yes \ --mirror ${mirror_location} \ --ansible-args="tags=upgrade_collect_info,upgrade_repos" Set up overcloud update repositories/containers:: infrared tripleo-overcloud \ --deployment-files virt \ --ocupdate True \ --build latest \ --ansible-args="tags=update_collect_info,update_undercloud_validation,update_repos,update_prepare_containers" Upgrade overcloud:: infrared tripleo-upgrade \ --overcloud-upgrade yes Update overcloud:: infrared tripleo-upgrade \ --overcloud-update yes Running the role manually from the undercloud --------------------------------------------- This role can be run manually from the undercloud by doing the following steps: Note: before starting the upgrade process make sure that both the undercloud and overcloud nodes have the repositories with upgraded packages set up Clone this repository git clone https://opendev.org/openstack/tripleo-upgrade Set ansible roles path:: ANSIBLE_ROLES_PATH=$(pwd) Create inventory file:: printf "[undercloud]\nlocalhost ansible_connection=local" > hosts Run the playbook including this role:: ansible-playbook -i hosts tripleo-upgrade/tests/test.yml ======= License ======= BSD ================== Author Information ================== An optional section for the role authors to include contact information, or a website (HTML is not allowed).