[ English | Deutsch | Indonesia | русский | English (United Kingdom) ]

Основные обновления

В этом руководстве содержится информация о процессе обновления с 2024.2 or 2024.1 до 2025.1 для OpenStack-Ansible.

Примечание

Вы можете обновляться между последовательными выпусками или между выпусками, помеченными как SLURP.

Введение

Для обновления между основными версиями репозиторий OpenStack-Ansible содержит плейбук и скрипты для обновления окружения. Сценарий run-upgrade.sh запускает каждый плейбук обновления в правильном порядке, а при необходимости плейбук можно запускать по отдельности. Кроме того, установщик может обновить среду вручную.

Более подробную информацию о процессе обновления смотрите в Upgrading by using a script и Обновление вручную.

Предупреждение

Upgrading to master is not recommended. Master is under heavy development, and is not stable. Сначала протестируйте это в окружении разработчиков.

Upgrading by using a script

Серия релизов OpenStack-Ansible 2025.1 содержит код для миграции с 2024.2 or 2024.1 на 2025.1.

Запуск скрипта обновления

Для обновления с 2024.2 or 2024.1 до 2025.1 с помощью скрипта обновления выполните следующие действия в каталоге openstack-ansible:

  1. Измените каталог на корневой каталог клона репозитория:

    # cd /opt/openstack-ansible
    
  2. Выполните следующие команды:

    # git checkout master
    # ./scripts/run-upgrade.sh

Более подробную информацию о действиях, выполняемых скриптом, смотрите в Обновление вручную.

Обновление вручную

Ручное обновление полезно для определения масштаба изменений в процессе обновления (например, в очень крупных развертываниях со строгими требованиями к SLA) или для автоматизации других обновлений, помимо тех, что предоставляет OpenStack-Ansible.

Шаги, описанные здесь, совпадают с теми, которые выполняет сценарий run-upgrade.sh. Вы можете смело выполнять эти шаги несколько раз.

Предварительные проверки

Прежде чем приступить к обновлению, выполните предварительную проверку работоспособности, чтобы убедиться в стабильности окружения. Если какая-либо из этих проверок не удалась, убедитесь, что проблема решена, прежде чем продолжать.

Проверьте выпуск 2025.1.

Убедитесь, что ваш код OpenStack-Ansible находится на последней версии с меткой 2025.1.

# git checkout master

Prepare the shell variables

Определите эти переменные, чтобы сократить ввод текста при выполнении остальных задач обновления. Поскольку эти переменные окружения являются ярлыками, этот шаг необязателен. При желании вы можете напрямую ссылаться на эти файлы во время обновления.

# cd /opt/openstack-ansible
# export MAIN_PATH="$(pwd)"
# export SCRIPTS_PATH="${MAIN_PATH}/scripts"

Резервное копирование существующей конфигурации OpenStack-Ansible

Создайте резервную копию конфигурации окружения:

# source_series_backup_file="/openstack/backup-openstack-ansible-2024.2.tar.gz"
# tar zcf ${source_series_backup_file} /etc/openstack_deploy /etc/ansible/ /usr/local/bin/openstack-ansible.rc

Загрузите новые роли Ansible и OpenStack-Ansible

Чтобы убедиться, что в данный момент нет установленной ANSIBLE_INVENTORY, которая бы переопределяла местоположение inventory по умолчанию, мы отменяем настройку переменной окружения.

# unset ANSIBLE_INVENTORY

Снова загрузите Ansible, чтобы убедиться, что все зависимости роли OpenStack-Ansible установлены, прежде чем запускать плейбуки из релиза 2025.1.

# ${SCRIPTS_PATH}/bootstrap-ansible.sh

Перейдите в каталог плейбуков

Перейдите в каталог плейбуков, чтобы упростить выполнение команд CLI в дальнейшем, поскольку большинство выполняемых плейбуков находятся в этом каталоге.

# cd playbooks

Внесите изменения в конфигурацию OpenStack-Ansible

If there have been any OpenStack-Ansible variable name changes or environment/inventory changes, there is a playbook to handle those changes to ensure service continuity in the environment when the new playbooks run. The playbook is tagged to ensure that any part of it can be executed on its own or skipped. Please review the contents of the playbook for more information.

# openstack-ansible "${SCRIPTS_PATH}/upgrade-utilities/deploy-config-changes.yml"

Примечание

With upgrade to 2024.2 (Dalmation) release and beyond, usage of RabbitMQ Quorum Queues is mandatory to ensure high availability of queues. If you had previously set oslomsg_rabbit_quorum_queues: false, please consider migrating before continuing with this upgrade which uses RabbitMQ 4.x.

Пожалуйста, ознакомьтесь с RabbitMQ maintenance для получения дополнительной информации о переключении между Quourum и HA Queues.

Обновление хостов

Before installing the infrastructure and OpenStack, update the host machines.

Предупреждение

Использование недоверенных сертификатов для RabbitMQ невозможно из-за требований более новых версий amqp.

После этого вы можете приступить к стандартным шагам обновления OpenStack:

# openstack-ansible openstack.osa.setup_hosts --limit '!galera_all:!rabbitmq_all' -e package_state=latest

Эта команда аналогична настройке хостов на новой установке. Группы хостов galera_all и rabbitmq_all исключены, чтобы предотвратить реконфигурацию и перезапуск этих контейнеров, поскольку их нужно обновить, но не перезапускать.

После этого обновите последние группы хостов, установив флаг для предотвращения перезапуска контейнеров.

# openstack-ansible openstack.osa.setup_hosts -e 'lxc_container_allow_restarts=false' --limit 'galera_all:rabbitmq_all'

Модернизация инфраструктуры

Теперь мы можем приступить к обновлению всех компонентов инфраструктуры. Чтобы убедиться, что rabbitmq и mariadb будут обновлены, мы передадим соответствующие флаги.

Предупреждение

Пожалуйста, убедитесь, что вы используете RabbitMQ версии 3.13 или более поздней, прежде чем приступать к этому шагу. Обновление RabbitMQ до версии 4.0 (по умолчанию для 2024.2) с предыдущей версии приведет к сбою плейбука.

На этом этапе вы можете незначительно обновить RabbitMQ с помощью следующей команды:

openstack-ansible openstack.osa.rabbitmq_server -e rabbitmq_upgrade=true -e rabbitmq_package_version=3.13.7-1

Также убедитесь, что перед обновлением вы перешли с зеркальных очередей (очередей HA) на очереди Quorum, поскольку после обновления зеркальные очереди больше не поддерживаются.

# openstack-ansible openstack.osa.setup_infrastructure -e 'galera_upgrade=true' -e 'rabbitmq_upgrade=true' -e package_state=latest

Теперь мы можем перезапустить контейнеры mariadb по одному, убедившись, что каждый из них запущен, отвечает и синхронизирован с другими узлами кластера, прежде чем переходить к следующим шагам. Этот шаг позволяет вступить в силу конфигурации контейнеров LXC, которые вы применили ранее, обеспечивая контролируемый перезапуск контейнеров.

# openstack-ansible "${SCRIPTS_PATH}/upgrade-utilities/galera-cluster-rolling-restart.yml"

Обновление OpenStack

Теперь мы можем приступить к обновлению всех компонентов OpenStack.

# openstack-ansible openstack.osa.setup_openstack -e package_state=latest

Обновление Ceph

В каждой версии OpenStack-Ansible мы определяем версию клиента Ceph по умолчанию, которая будет установлена на хостах Glance/Cinder/Nova и использоваться этими службами. Если вы хотите сохранить предыдущую версию клиента Сeph при обновлении OpenStack-Ansible, вам нужно переопределить переменную ceph_stable_release в файле user_variables.yml

Если Ceph был развернут как часть развертывания OpenStack-Ansible с использованием ролей, поддерживаемых проектом Ceph-Ansible, вам также потребуется обновить версию Ceph. Каждый выпуск OpenStack-Ansible тестируется только с определенным выпуском Ceph-Ansible, и обновление Ceph не проверяется ни в одном интеграционном тесте Openstack-Ansible. Поэтому мы не тестируем и не гарантируем путь обновления для таких развертываний. В этом случае перед обновлением следует провести тесты в лабораторном окружении.

Предупреждение

Плейбуки, связанные с Ceph, включены в состав плейбуков openstack.osa.setup_infrastructure и openstack.osa.setup_openstack, поэтому следует быть осторожным при их запуске во время обновления OpenStack. Если в пользовательских переменных указано upgrade_ceph_packages: true или в качестве аргумента задан -e upgrade_ceph_packages=true и запущен setup-infrastructure.yml, это приведет к тому, что пакет Ceph также будет обновлен.

Чтобы обновить Ceph в развертывании, вам нужно выполнить команду:

# openstack-ansible /etc/ansible/roles/ceph-ansible/infrastructure-playbooks/rolling_update.yml