Merge "Add nova placement to placement migration"
This commit is contained in:
@@ -187,13 +187,15 @@ Upgrade infrastructure
|
|||||||
~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
We can now go ahead with the upgrade of all the infrastructure components. To
|
We can now go ahead with the upgrade of all the infrastructure components. To
|
||||||
ensure that rabbitmq and mariadb are upgraded, we pass the appropriate flags.
|
ensure that rabbitmq and mariadb are upgraded, and to handle the transition
|
||||||
|
from the nova placement service to the extracted placement service, we pass
|
||||||
|
the appropriate flags.
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
# openstack-ansible setup-infrastructure.yml -e 'galera_upgrade=true' -e 'rabbitmq_upgrade=true'
|
# openstack-ansible setup-infrastructure.yml -e 'galera_upgrade=true' -e 'rabbitmq_upgrade=true' -e 'placement_migrate_flag=true'
|
||||||
|
|
||||||
With this complete, we can no restart the mariadb containers one at a time,
|
With this complete, we can now restart the mariadb containers one at a time,
|
||||||
ensuring that each is started, responding, and synchronized with the other
|
ensuring that each is started, responding, and synchronized with the other
|
||||||
nodes in the cluster before moving on to the next steps. This step allows
|
nodes in the cluster before moving on to the next steps. This step allows
|
||||||
the LXC container configuration that you applied earlier to take effect,
|
the LXC container configuration that you applied earlier to take effect,
|
||||||
@@ -206,8 +208,21 @@ ensuring that the containers are restarted in a controlled fashion.
|
|||||||
Upgrade OpenStack
|
Upgrade OpenStack
|
||||||
~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
We can now go ahead with the upgrade of all the OpenStack components.
|
We can now go ahead with the upgrade of all the OpenStack components, passing
|
||||||
|
the flag that enabled the transition from the nova placement service to the
|
||||||
|
extracted placement service.
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
# openstack-ansible setup-openstack.yml
|
# openstack-ansible setup-openstack.yml -e 'placement_migrate_flag=true'
|
||||||
|
|
||||||
|
Remove legacy nova placement service backends
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Now that the new extracted placement service is operational, we can remove the
|
||||||
|
legacy implementation from the load balancer.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# openstack-ansible haproxy-install.yml
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ haproxy_galera_whitelist_networks: "{{ haproxy_whitelist_networks }}"
|
|||||||
haproxy_glance_registry_whitelist_networks: "{{ haproxy_whitelist_networks }}"
|
haproxy_glance_registry_whitelist_networks: "{{ haproxy_whitelist_networks }}"
|
||||||
haproxy_keystone_admin_whitelist_networks: "{{ haproxy_whitelist_networks }}"
|
haproxy_keystone_admin_whitelist_networks: "{{ haproxy_whitelist_networks }}"
|
||||||
haproxy_nova_metadata_whitelist_networks: "{{ haproxy_whitelist_networks }}"
|
haproxy_nova_metadata_whitelist_networks: "{{ haproxy_whitelist_networks }}"
|
||||||
haproxy_nova_placement_whitelist_networks: "{{ haproxy_whitelist_networks }}"
|
|
||||||
haproxy_rabbitmq_management_whitelist_networks: "{{ haproxy_whitelist_networks }}"
|
haproxy_rabbitmq_management_whitelist_networks: "{{ haproxy_whitelist_networks }}"
|
||||||
haproxy_repo_git_whitelist_networks: "{{ haproxy_whitelist_networks }}"
|
haproxy_repo_git_whitelist_networks: "{{ haproxy_whitelist_networks }}"
|
||||||
haproxy_repo_cache_whitelist_networks: "{{ haproxy_whitelist_networks }}"
|
haproxy_repo_cache_whitelist_networks: "{{ haproxy_whitelist_networks }}"
|
||||||
|
|||||||
@@ -35,6 +35,17 @@
|
|||||||
include_tasks: common-tasks/package-cache-proxy.yml
|
include_tasks: common-tasks/package-cache-proxy.yml
|
||||||
when: install_method == "source"
|
when: install_method == "source"
|
||||||
|
|
||||||
|
- name: Stop nova-placement-api services for the upgrade
|
||||||
|
delegate_to: "{{ item }}"
|
||||||
|
service:
|
||||||
|
name: nova-placement-api
|
||||||
|
state: stopped
|
||||||
|
enabled: no
|
||||||
|
when: placement_migrate_flag | default(False)
|
||||||
|
with_items: "{{ groups['nova_api_placement'] }}"
|
||||||
|
run_once: true
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
roles:
|
roles:
|
||||||
- role: "os_placement"
|
- role: "os_placement"
|
||||||
- role: "system_crontab_coordination"
|
- role: "system_crontab_coordination"
|
||||||
|
|||||||
@@ -31,10 +31,10 @@ export SCRIPTS_PATH="$(dirname "$(readlink -f "${0}")")"
|
|||||||
export MAIN_PATH="$(dirname "${SCRIPTS_PATH}")"
|
export MAIN_PATH="$(dirname "${SCRIPTS_PATH}")"
|
||||||
|
|
||||||
# The expected source series name
|
# The expected source series name
|
||||||
export SOURCE_SERIES="rocky"
|
export SOURCE_SERIES="stein"
|
||||||
|
|
||||||
# The expected target series name
|
# The expected target series name
|
||||||
export TARGET_SERIES="stein"
|
export TARGET_SERIES="train"
|
||||||
|
|
||||||
## Functions -----------------------------------------------------------------
|
## Functions -----------------------------------------------------------------
|
||||||
|
|
||||||
@@ -168,18 +168,22 @@ function main {
|
|||||||
bootstrap_ansible
|
bootstrap_ansible
|
||||||
|
|
||||||
pushd ${MAIN_PATH}/playbooks
|
pushd ${MAIN_PATH}/playbooks
|
||||||
RUN_TASKS+=("${SCRIPTS_PATH}/upgrade-utilities/deploy-config-changes.yml")
|
|
||||||
RUN_TASKS+=("${SCRIPTS_PATH}/upgrade-utilities/pip-conf-removal.yml")
|
RUN_TASKS+=("${SCRIPTS_PATH}/upgrade-utilities/pip-conf-removal.yml")
|
||||||
# we don't want to trigger container restarts for these groups yet
|
RUN_TASKS+=("${SCRIPTS_PATH}/upgrade-utilities/deploy-config-changes.yml -e 'placement_migrate_flag=true'")
|
||||||
RUN_TASKS+=("setup-hosts.yml --limit '!galera_all:!rabbitmq_all'")
|
# we don't want to trigger container restarts for galera and rabbit
|
||||||
# add new container config to containers but don't restart
|
# but as there will be no hosts available for metal deployments,
|
||||||
RUN_TASKS+=("setup-hosts.yml -e 'lxc_container_allow_restarts=false' --limit 'galera_all:rabbitmq_all'")
|
# as a fallback option we just run setup-hosts.yml without any arguments
|
||||||
|
RUN_TASKS+=("setup-hosts.yml --limit '!galera_all:!rabbitmq_all' && \
|
||||||
|
openstack-ansible setup-hosts.yml -e 'lxc_container_allow_restarts=false' --limit 'galera_all:rabbitmq_all' || \
|
||||||
|
openstack-ansible setup-hosts.yml")
|
||||||
# upgrade infrastructure
|
# upgrade infrastructure
|
||||||
RUN_TASKS+=("setup-infrastructure.yml -e 'galera_upgrade=true' -e 'rabbitmq_upgrade=true'")
|
RUN_TASKS+=("setup-infrastructure.yml -e 'galera_upgrade=true' -e 'rabbitmq_upgrade=true' -e 'placement_migrate_flag=true'")
|
||||||
# explicitly perform controlled galera cluster restart with new lxc config
|
# explicitly perform controlled galera cluster restart with new lxc config
|
||||||
RUN_TASKS+=("${SCRIPTS_PATH}/upgrade-utilities/galera-cluster-rolling-restart.yml")
|
RUN_TASKS+=("${SCRIPTS_PATH}/upgrade-utilities/galera-cluster-rolling-restart.yml")
|
||||||
# upgrade openstack
|
# upgrade openstack
|
||||||
RUN_TASKS+=("setup-openstack.yml")
|
RUN_TASKS+=("setup-openstack.yml -e 'placement_migrate_flag=true'")
|
||||||
|
# run haproxy setup again without the placement migrate flag to remove the nova placement api backends
|
||||||
|
RUN_TASKS+=("haproxy-install.yml")
|
||||||
# Run the tasks in order
|
# Run the tasks in order
|
||||||
for item in ${!RUN_TASKS[@]}; do
|
for item in ${!RUN_TASKS[@]}; do
|
||||||
echo "### NOW RUNNING: ${RUN_TASKS[$item]}"
|
echo "### NOW RUNNING: ${RUN_TASKS[$item]}"
|
||||||
|
|||||||
@@ -82,7 +82,7 @@
|
|||||||
line: "{{ item }}"
|
line: "{{ item }}"
|
||||||
with_items: "{{ new_secrets.stdout_lines }}"
|
with_items: "{{ new_secrets.stdout_lines }}"
|
||||||
when:
|
when:
|
||||||
- "user_secrets.stdout.find(item) == -1"
|
- not (user_secrets.stdout | regex_search('((^|\n)' ~ item ~ ')'))
|
||||||
tags:
|
tags:
|
||||||
- update-secrets
|
- update-secrets
|
||||||
|
|
||||||
@@ -97,3 +97,30 @@
|
|||||||
state: absent
|
state: absent
|
||||||
tags:
|
tags:
|
||||||
- remove-fact-cache
|
- remove-fact-cache
|
||||||
|
|
||||||
|
- name: Define placement service hosts
|
||||||
|
copy:
|
||||||
|
dest: /etc/openstack_deploy/conf.d/placement.yml
|
||||||
|
content: |-
|
||||||
|
{% set config = {'placement-infra_hosts': {}} %}
|
||||||
|
{% for host in groups['compute-infra_hosts'] %}
|
||||||
|
{% set _ = config['placement-infra_hosts'].update(
|
||||||
|
{
|
||||||
|
host: {
|
||||||
|
'ip': hostvars[host]['container_address']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
) %}
|
||||||
|
{% endfor %}
|
||||||
|
{{ config | to_yaml }}
|
||||||
|
when:
|
||||||
|
- placement_migrate_flag | default(False)
|
||||||
|
- not ('placement-infra_hosts' in groups and groups['placement-infra_hosts'])
|
||||||
|
|
||||||
|
- name: Set placement service is_metal property
|
||||||
|
copy:
|
||||||
|
dest: /etc/openstack_deploy/env.d/placement_metal.yml
|
||||||
|
content: "{{ '---\n' ~ {'container_skel': {'placement_container': {'properties': {'is_metal': true}}}} | to_yaml }}"
|
||||||
|
when:
|
||||||
|
- placement_migrate_flag | default(False)
|
||||||
|
- hostvars[groups['nova_api_placement'][0]]['is_metal'] | default(False)
|
||||||
@@ -32,12 +32,22 @@
|
|||||||
name: "{{ inventory_hostname }}"
|
name: "{{ inventory_hostname }}"
|
||||||
state: "stopped"
|
state: "stopped"
|
||||||
delegate_to: "{{ physical_host }}"
|
delegate_to: "{{ physical_host }}"
|
||||||
|
when: not hostvars[inventory_hostname]['is_metal']
|
||||||
|
|
||||||
- name: Start container
|
- name: Start container
|
||||||
lxc_container:
|
lxc_container:
|
||||||
name: "{{ inventory_hostname }}"
|
name: "{{ inventory_hostname }}"
|
||||||
state: "started"
|
state: "started"
|
||||||
delegate_to: "{{ physical_host }}"
|
delegate_to: "{{ physical_host }}"
|
||||||
|
when: not hostvars[inventory_hostname]['is_metal']
|
||||||
|
|
||||||
|
- name: Start mariadb
|
||||||
|
service:
|
||||||
|
name: mysql
|
||||||
|
state: started
|
||||||
|
retries: 5
|
||||||
|
delay: 10
|
||||||
|
when: hostvars[inventory_hostname]['is_metal']
|
||||||
|
|
||||||
post_tasks:
|
post_tasks:
|
||||||
- name: Wait for mariadb port 3306 to be available
|
- name: Wait for mariadb port 3306 to be available
|
||||||
|
|||||||
Reference in New Issue
Block a user