[ English | Indonesia | русский ]
Незначительное обновление версии¶
Обновление OpenStack-Ansible между младшими версиями требует обновления клона репозитория до последней версии, обновления ролей Ansible, а затем запуска плейбука на целевых узлах. В этом разделе приведены инструкции по выполнению этих задач.
Предварительные условия¶
Чтобы избежать проблем и упростить поиск неисправностей во время обновления, отключите роль усиления безопасности, установив переменную apply_security_hardening
в значение False
в файле user_variables.yml
, и создайте резервную копию вашей установки OpenStack-Ansible.
Выполнение минорного обновления версии¶
Для минорного обновления обычно требуются следующие действия:
Измените каталог на клонированный корневой каталог репозитория:
# cd /opt/openstack-ansible
Убедитесь, что ваш код OpenStack-Ansible находится на последней версии с меткой 2025.2 (Flamingo):
# git checkout master
Обновите все зависимые роли до последней версии:
# ./scripts/bootstrap-ansible.sh
Перейдите в каталог плейбука:
# cd playbooks
Обновите хосты:
# openstack-ansible openstack.osa.setup_hosts -e package_state=latest
Обновите инфраструктуру:
# openstack-ansible -e rabbitmq_upgrade=true \ openstack.osa.setup_infrastructure
Обновите все службы OpenStack:
# openstack-ansible openstack.osa.setup_openstack -e package_state=latest
Примечание
Вы можете ограничить обновления для определенных компонентов OpenStack. Подробности см. в следующем разделе.
Обновление определенных компонентов¶
Вы можете ограничить обновления для определенных компонентов OpenStack, запустив каждый из плейбуков компонентов в зависимости от групп.
Например, вы можете обновить только вычислительные узлы, выполнив следующую команду:
# openstack-ansible openstack.osa.nova --limit nova_compute
Чтобы обновить только один вычислительный узел, выполните следующую команду:
# openstack-ansible openstack.osa.nova --limit <node-name>
Примечание
Игнорирование метки nova-key
необходимо для того, чтобы не собирать ключи на всех вычислительных хостах.
Чтобы увидеть, какие хосты принадлежат к тем или иным группам, используйте скрипт openstack-ansible-inventory-manage
, чтобы показать все группы и их хосты. Например:
Измените каталог на корневой каталог клона репозитория:
# cd /opt/openstack-ansible
Посмотрите все группы и хосты, принадлежащие к ним:
# openstack-ansible-inventory-manage -G
Посмотрите все хосты и группы, к которым они принадлежат:
# openstack-ansible-inventory-manage -g
Чтобы узнать, на каких хостах запускается плейбук и какие задачи выполняются, выполните следующие команды (например):
Посмотрите список хостов в группе
nova_compute
, на которых работает плейбук:# openstack-ansible openstack.osa.nova --limit nova_compute \ --list-hosts
Посмотрите задания, которые выполняются на хостах в группе
nova_compute
:# openstack-ansible openstack.osa.nova --limit nova_compute \ --skip-tags 'nova-key' \ --list-tasks
Обновление определенного компонента в пределах одной версии OpenStack-Ansible¶
Иногда может потребоваться установить последние обновления безопасности или исправления ошибок для службы, оставаясь на той же стабильной ветке. Это можно сделать, переопределив ветку установки Git для этой службы, которая предписывает OpenStack-Ansible извлечь самый последний код из ветки, которую вы уже отслеживаете. Однако, использование веток напрямую, как <service>_git_install_branch
, крайне не рекомендуется. При каждом повторном запуске плейбука служба может обновляться до более нового коммита, что может привести к несогласованности версий между хостами (например, при последующем добавлении нового вычислительного узла).
Поэтому рекомендуется взять SHA-хэш HEAD-коммита нужной стабильной ветки и задать его явно. Чтобы найти последний SHA-хэш ветки stable/2025.1
, выполните (например, для Nova):
git ls-remote https://opendev.org/openstack/nova refs/heads/stable/2025.1
И используйте этот SHA в своей конфигурации, чтобы гарантировать единообразие версий на всех хостах в вашем user_variables.yml
:
nova_git_install_branch: {{SHA}}
И запустите:
openstack-ansible openstack.osa.nova --tags nova-install
Плейбук извлечёт и установит код из указанной ветки или коммита SHA, применяя последние исправления и патчи, как указано. Использование закреплённого SHA обеспечивает согласованность версий на всех хостах, а прямое отслеживание ветки всегда будет загружать её текущий HEAD.
Мы можем проверить версию службы до и после обновления (не забудьте загрузить необходимые переменные среды):
$ ansible -m shell -a '/openstack/venvs/nova-{{ openstack_release }}/bin/pip3 freeze | grep nova' nova_all
infra1-nova-api-container-e5dbbe38 | CHANGED | rc=0 >>
nova==31.0.1.dev12
infra2-nova-api-container-0c5d0203 | CHANGED | rc=0 >>
nova==31.0.1.dev12
infra3-nova-api-container-d791a43e | CHANGED | rc=0 >>
nova==31.0.1.dev12
compute | CHANGED | rc=0 >>
nova==31.0.1.dev12
После обновления до последних патчей в той же ветке:
$ ansible -m shell -a '/openstack/venvs/nova-{{ openstack_release }}/bin/pip3 freeze | grep nova' nova_all
infra1-nova-api-container-e5dbbe38 | CHANGED | rc=0 >>
nova==31.1.1.dev9
infra2-nova-api-container-0c5d0203 | CHANGED | rc=0 >>
nova==31.1.1.dev9
infra3-nova-api-container-d791a43e | CHANGED | rc=0 >>
nova==31.1.1.dev9
compute | CHANGED | rc=0 >>
nova==31.1.1.dev9
Примечание
Этот подход применим не только к Nova. Вы можете применить тот же метод к любой другой службе OpenStack, управляемой OpenStack-Ansible, переопределив соответствующую переменную <service>_git_install_branch
.
Прежде чем продолжить, всегда проверяйте, что ветвь обновлена и совместима с остальной частью вашего развертывания.