Обновление системы

Полноценное обновление системы происходит в несколько этапов:

  1. Настройка репозиториев.

  2. Обновление минимально необходимого набора пакетов на узле развёртывания.

  3. Обновление узла развёртывания (не требуется при минорных обновлениях, например, установки патчей безопасности).

  4. Бэкап данных.

  5. Обновление пакетов развёртывания.

  6. Обновление скриптов развёртывания.

  7. Обновление сервисов.

Настройка репозиториев

Настройте DNF-репозитории на узле развёртывания.

Для этого необходимо создать файл с расширением .repo в директории /etc/yum.repos.d/ на узле развёртывания.

Добавьте в него разделы с именем репозитория, URL-адресом и ключом GPG. Например, для репозитория new_moncloud_release:

[new_moncloud_release]
name=new_moncloud_release
type=rpm-md
baseurl=http://moncloud-release:82/main/
gpgcheck=1
gpgkey=http://moncloud-release:82/main/repodata/repomd.xml.key
enabled=0

[new_moncloud_release_imagedata]
name=new_moncloud_release
type=rpm-md
baseurl=http://moncloud-release:82/main/imagedata/
gpgcheck=1
gpgkey=http://moncloud-release:82/main/imagedata/repodata/repomd.xml.key
enabled=0

Примечание

Имя репозитория может быть любым. Здесь и далее в примерах используется имя new_moncloud_release.

Внимание

Обязательно настройте два раздела репозитория: new_moncloud_release и new_moncloud_release_imagedata.

Список уже заведённых реп можно посмотреть через команду:

sudo dnf repolist --all

Статус репозитория при этом не важен, если вы указываете репу new_moncloud_release, то все репозитории явным образом отключаются и включаются только new_moncloud_release и new_moncloud_release_imagedata

Обновление минимально необходимого набора пакетов на узле развёртывания

Для обновления DeckCrew и зависимых пакетов на узле развёртывания выполните команду дважды:

dctl update packages --repo new_moncloud_release

Внимание

Команда обновления пакетов должна выполняться дважды, так как зависимости DeckCrew могут отличаться между релизами.

Для обновления образов физических узлов и контейнеров, хранящихся в реестре узла развёртывания, выполните:

dctl update images --repo new_moncloud_release
dctl update registry --repo new_moncloud_release

Обновление узла развёртывания

Примечание

Не требуется при обновлении OpenStack или Ceph.

Запустите полное обновление узла развёртывания:

dctl update undercloud --repo new_moncloud_release

См. также

  1. update undercloud

Бэкап данных

Сделайте бэкап данных обновляемого развёртывания:

dctl instance backup <deploy_name> --all

См. также

  1. instance backup

Обновление пакетов развёртывания

Для обновления пакетов на узлах развёртываний выполните команду:

dctl instance update --packages <deploy_name> --role <role_name> --repo new_moncloud_release

См. также

  1. instance update

Обновление скриптов развёртывания

Обновите скрипты развёртывания вашего облака или хранилища. Для этого запустите обновление шаблонов развёртывания:

dctl instance update --templates <deploy_name>

В случае возникновения ошибок ребейза зайдите в указанную в ошибке директорию:

cd /etc/deckcrew/templates/<deploy_name>-<deploy_type>-update

и выполните успешный ребейз.

Внимание

При обновлении шаблонов возможны конфликты. Если вы не уверены в правильности действий, рекомендуем обратиться к разработчикам Moncloud за консультацией.

Подсказка

Используйте git команды для ребейза, а не команды dctl. В противном случае вы можете потерять изменения в шаблонах.

Список полезных команд git для ребейза:

git status
git rebase --continue

При конфликтах в файлах паролей, сохраняйте уже назначенные пароли, а не генерируйте новые.

Далее запустите команду обновления шаблонов с флагом --finish:

dctl instance update --templates <deploy_name> --finish

См. также

  1. instance update

Обновление сервисов

Запустите деплой сервисов OpenStack или Ceph на узлах развёртывания при помощи CLI или TUI.

Например:

dctl instance deploy <deploy_name> services

Обновление контейнеров

Реестр образов контейнеров находится на узле развёртывания на порту 8787.

Чтобы обновить один или несколько образов в реестре, используйте команду skopeo, установленную на узле развёртывания. Например, для обновления образа openstack-nova-api выполните команду:

skopeo copy --src-tls-verify=false \
docker://acloud-obs.intra.acloud.ru/acloud/staging/containers/containers/acloud/openstack-nova-api:latest \
docker://<undercloud_ip>:8787/acloud/openstack-nova-api:latest

В зависимости от того, как контейнер управляется, способ его обновления может отличаться:

  • простые контейнеры, не управляемые сервисом Pacemaker,

  • сложные контейнеры, управляемые сервисом Pacemaker, а именно:

    • cinder-volume

    • rabbitmq

    • redis

    • haproxy

    • mariadb

Для простых контейнеров используйте команду dctl для пересоздания контейнера на всех узлах управления:

dctl instance update demo --container nova_api --role Controller

или на одном узле, например:

dctl instance update demo --container nova_api --host demo-controller-0

Для сложных контейнеров воспользуйтесь командой:

dctl instance update demo --pcs-service SERVICE_NAME

См. также

  1. instance update

Обновление с добавлением SSL/TLS

Проведите настройку SSL/TLS согласно инструкции

Если первоначально развёртывание было создано без SSL/TLS, то для добавления SSL/TLS необходимо зайти на один из узлов управления и выполнить:

sudo pcs resource bundle update haproxy-bundle storage-map add \
source-dir=/etc/pki/tls/private/overcloud_endpoint.pem \
target-dir=/etc/pki/tls/private/overcloud_endpoint.pem \
options=ro