diff --git a/doc/source/upgrade/developer/upgrades/major_upgrade_with_os.plantuml b/doc/source/upgrade/developer/upgrades/major_upgrade_with_os.plantuml new file mode 100644 index 00000000..7bfd65df --- /dev/null +++ b/doc/source/upgrade/developer/upgrades/major_upgrade_with_os.plantuml @@ -0,0 +1,214 @@ +' The png image can be generated by running: +' +' plantuml major_upgrade_with_os.plantuml + +@startuml + +actor User +participant "undercloud" +participant "controller-0" +participant "controller-1" +participant "controller-2" + +' === PREPARE === + +note left of undercloud #AAFFAA + If controllers == 1, env file + is given to prefer `persist/restore` + instead of `transfer` for MariaDB. +end note +User -> "undercloud" : openstack overcloud upgrade prepare +note right + Update heat outputs using latest templates. +end note +User <-- "undercloud" + +' === REPROVISION === + +User -> "controller-0" : openstack overcloud upgrade run\n --tags system-upgrade-prepare \n --playbook upgrade-playbook.yml \n --node controller-0 +note right + Persist data from the bootstrap node + while it is live. + (Fetch the data to the undercloud.) + - if controllers == 1: + mariadb and other data (composable) + - if controllers > 1: + only other data (composable) +end note + +"undercloud" <- "controller-0" +note left: /var/lib/mistral/tripleo-persist/ +User <-- "controller-0" + +User -> "controller-0" : openstack server rebuild controller-0 +note right + Reprovision to the new OS. +end note + +User <-- "controller-0" + +User -> "controller-0" : openstack overcloud upgrade prepare\n(or enable-ssh-admin.sh, will be improved upon) +note right + Install Mistral ssh keys +end note + +User <-- "controller-0" + +User -> "controller-0" : openstack overcloud upgrade run\n --tags system-upgrade-run \n --playbook upgrade-playbook.yml \n --node controller-0 +note right + Restore the data onto bootstrap node. + (Push the data from the undercloud.) + - if controllers == 1: + mariadb and other data (composable) + - if controllers > 1: + only other data (composable) +end note + +User <-- "controller-0" + +' === TRANSFER DATA === + +group Transfer the data to the freshly re-installed controller\n(only required in multi-controller environments) +note over "undercloud", "controller-2" #AAFFAA + Everything is composable, but diagram showcases MariaDB specifically +end note +User -> "undercloud" : openstack overcloud external-upgarde run +"undercloud" -> "controller-1" : pcs resource disable\ngalera-bundle +note right: Disable MariaDB +"controller-1" -> "controller-2" +note right: Disable MariaDB + +note over undercloud, "controller-2" #FFAAAA + control plane outage. +end note + + +"undercloud" -> "controller-1" : transfer module run in ansible +note right + Transfer data: + - if controllers == 1: + nothing + - if controllers > 1: + mysql data +end note + +"controller-1" -> "undercloud": get the data +note left: /var/lib/mistral/tripleo-transfer/ +User <-- "controller-1" + +"undercloud" -> "controller-0": push the data +note right + extract the data +end note + +User <-- "undercloud" +end + +' === START CONTROLLER 0 === + +"User" -> "controller-0": openstack overcloud upgrade run --nodes controller-0 +note right + Configure OpenStack, + start a new cluster. + (1 node total) +end note + +note over undercloud, "controller-2" #FFAAAA + controller-0 is a one node cluster running the latest version + of tripleo on the new os. + The controller plane is back. +end note + +User <-- "controller-0" + +' === ADD CONTROLLER 1 === + +User -> "controller-1" : openstack overcloud upgrade run\n --tags system-upgrade-prepare \n --playbook upgrade-playbook.yml \n --node controller-1 +note right + Persist data + (composable) +end note + +"undercloud" <- "controller-1" +note left: /var/lib/mistral/tripleo-persist/ + +User -> "controller-1" : openstack server rebuild controller-1 +note right + Reprovision to the new OS. +end note + +User <-- "controller-1" + +User -> "controller-1" : openstack overcloud upgrade prepare\n(os oc reprovision ssh-admin) +note right + Install Mistral ssh keys +end note + +User <-- "controller-1" + +User -> "controller-1" : openstack overcloud upgrade run\n --tags system-upgrade-run \n --playbook upgrade-playbook.yml \n --nodes controller-1 +note right + Restore data + (composable) +end note + +User <-- "controller-1" + +"User" -> "controller-1": openstack overcloud upgrade run --nodes controller-0,controller-1 +"User" -> "controller-0": +note right of "controller-1" + Configure OpenStack, + join the cluster. + (2 nodes total) +end note + +User <-- "controller-1" + +' === ADD CONTROLLER 2 === + +User -> "controller-2" : openstack overcloud upgrade run\n --tags system-upgrade-prepare \n --playbook upgrade-playbook.yml \n --node controller-2 +note right + Persist data + (composable) +end note + +"undercloud" <- "controller-2" +note left: /var/lib/mistral/tripleo-persist/ +User <-- "controller-2" + +User -> "controller-2" : openstack server rebuild controller-2 +note right + Reprovision + to the new OS. +end note + +User <-- "controller-2" + +User -> "controller-2" : openstack overcloud upgrade prepare\n(os oc reprovision ssh-admin) +note right + Install Mistral + ssh keys +end note + +User <-- "controller-2" + +User -> "controller-2" : openstack overcloud upgrade run\n --tags system-upgrade-run \n --playbook upgrade-playbook.yml \n --nodes controller-2 +note right + Restore data + (composable) +end note + +User <-- "controller-2" + +"User" -> "controller-2": openstack overcloud upgrade run --nodes controller-0,controller-1,controller-2 +"User" -> "controller-1": +"User" -> "controller-0": +note right of "controller-2" + Configure OpenStack, + join the cluster. + (3 nodes total) +end note + +User <-- "controller-2" + +@enduml diff --git a/doc/source/upgrade/developer/upgrades/major_upgrade_with_os.png b/doc/source/upgrade/developer/upgrades/major_upgrade_with_os.png new file mode 100644 index 00000000..d6781287 Binary files /dev/null and b/doc/source/upgrade/developer/upgrades/major_upgrade_with_os.png differ