Генерация нового Inventory
При обновлении Платформы с версии 4.1.1:
-
Разархивируйте новую версию Inventory-генератора:
$ cd $NEW_DISTRIB_DIR$ tar xvf invgen_box-${NEW_RELEASE_NAME}.tar.gz -
Сгенерируйте новый файл минимальной конфигурации:
$ cd $NEW_DISTRIB_DIR/invgen_box-$NEW_RELEASE_NAME$ chmod +x invgen-$INVGEN_ARCH$ ./invgen-${INVGEN_ARCH} config-example > ~/minimal_${NEW_RELEASE_NAME}.yml -
Заполните полученный файл (
~/minimal_${NEW_RELEASE_NAME}.yml) актуальными для VK Private Cloud 4.2.2 значениями.
При обновлении Платформы с версии 4.2.0:
Если есть файл minimal.yml для версии 4.2.0, скопируйте его с указанием нового имени релиза:
$ cp ~/minimal.yml ~/minimal_${NEW_RELEASE_NAME}.yml
Если нет файла minimal.yml для версии 4.2.0, выполните шаги, как при обновлении Платформы с версии 4.1.1.
Перейдите в директорию новой версии дистрибутива и запустите скрипт pre_upgrade.py:
$ cd $NEW_DISTRIB_DIR/repos_mcs_distr_box-$NEW_RELEASE_NAME/upgrade/minimal_yml/$ ./pre_upgrade.py \--invgen-path $PREV_DISTRIB_DIR/invgen_box-$PREV_RELEASE_NAME/invgen-$INVGEN_ARCH \--invgen-path-release $NEW_DISTRIB_DIR/invgen_box-$NEW_RELEASE_NAME/invgen-$INVGEN_ARCH \-o $PREV_INVENTORY_DIR/vkcloud \-n ~/minimal_$NEW_RELEASE_NAME.yml \--prev-version ${PREV_RELEASE_NAME}
$ cd $NEW_DISTRIB_DIR/repos_mcs_distr_box-$NEW_RELEASE_NAME/upgrade/minimal_yml/$ ./pre_upgrade.py \--invgen-path $PREV_DISTRIB_DIR/invgen_box-$PREV_RELEASE_NAME/invgen-$INVGEN_ARCH \--invgen-path-release $NEW_DISTRIB_DIR/invgen_box-$NEW_RELEASE_NAME/invgen-$INVGEN_ARCH \-o $PREV_INVENTORY_DIR/vkcloud \-n ~/minimal_$NEW_RELEASE_NAME.yml \--prev-version ${PREV_RELEASE_NAME}--ask-vault-pass
В командной строке скрипт выведет следующую информацию:
-
Переменные, которые были изменены после генерации Inventory при установке VK Private Cloud предыдущей версии. Сохраните их для переноса переменных после генерации Inventory для VK Private Cloud 4.2.2.
Пример выведенной информации после работы скриптаℹ️ Внимание, эти файлы были изменены:----------------------------------------------------------Обнаружены изменения в файле /vkcloud.yml❌ Во второй инвентори были удалены следующие переменные:'all.children.vkcloud.children.vkcloud_evpn.hosts.network1: {''evpn_address'': ''10.30.3.23''}''all.children.vkcloud.children.vkcloud_control_plane.children.vkcloud_dhcp.hosts.network1:None''all.children.vkcloud.children.vkcloud_control_plane.children.vkcloud_network.hosts.network1:None''all.children.vkcloud.children.vkcloud_control_plane.children.vkcloud_sprut.children.vkcloud_sprut_network.hosts.network1:None'----------------------------------------------------------Обнаружены изменения в файле /hosts.yml✅ Добавлены новые переменные во второй инвентори:{"groups": {"network": ["cpn001","cpn002","cpn003"]}}... -
Параметры, устаревшие для VK Private Cloud 4.2.2. Удалите их из файла
minimal.ymlновой версии.Пример выведенной информации после работы скриптаℹ️ Эти переменные больше не актуальны в minimal.yml:vars:## Общая внешняя сеть## Имя первой, внешней сети# Получение: Столбец "Наименование" в пункте №7 таблицы 2.2 Паспорта# Доп. информация: Под данным именем будет отображать Внешняя сеть для пользователей# Доп. информация: Используйте только символы из диапазона: a-zA-Z0-9_external_network_name: ''## Общая внешняя сеть - Настройки Внешних подсетейexternal_networks_extend:- key: 10.235.1.0/24value:network_name: providerproject_id: '{{ breeze_katana_project }}'shared: 'True'### Бакеты в случае выбора S3# Доп. информация: На момент подключения бакет уже должен быть создан, а ключи внесены в секцию "vault"## Имя бакета для хранения образов Glanceglance_s3_bucket_name: glance## Имя бакета для временного хранения образов Glance за момент загрузки образа через ЛКglance_s3_tmp_bucket_name: glance-tmp### Использовать MinIO в качестве S3# Получение: В зависимости наличия иных S3-сервисов# Вариации:# * "true" - компонент "minio" будет установлен на сервере Monitoring-Logging для хранения резервных копий и для Marketplace;# * "false" - компонент "minio" не будет установлен и потребуется задать параметры подключения к внешнему S3 (см. ниже).minio_enable: true... -
Параметры требований установки, новые для VK Private Cloud 4.2.2. Добавьте их в файл
minimal_${NEW_RELEASE_NAME}.ymlновой версии.Пример выведенной информации после работы скриптаВ minimal.yml появились новые переменные, обратите внимание на корректность их заполнения:components:### Суммарное количество серверов с ролью Ceph.# Получение: Столбец "Количество серверов" в пункте №5 таблицы 1.4 Паспорта# Доп. информация: Возможные варианты: "0", "1", "3", "6", "9"# Доп. информация: В конфигурации ниже указан пример на одном Ceph-узле, что актуально только для dev-установок. Для любой# другой установки рекомендуется указывать 3 или более Ceph-узлов- cephvars:### Сеть Cloud External## Вариант реализации внешней сети:# - shared Создавать общую внешнюю сеть для всех проектов.# - per-project Создавать "провайдерские" сети, то есть выделенные внешние сети# для каждого из указанных проектов.# - dmz32bit_announces Создавать сеть внешнюю с пирингом по BGP сетей c префиксом /32external_network_variant: per-project## Список внешних сетей для использования в продуктивных окружениях# Получение: Столбец "Адреса подсети" в пункте №7 таблицы 2.2 Паспортаexternal_networks_predefined:...
Проверьте файл ~/minimal_${NEW_RELEASE_NAME}.yml на валидность, заполните новые переменные.
Сохраните полученные данные для дальнейшего использования.
Проблема: При выполнении команды ./pre_upgrade.py произошла ошибка:
raise AddressValueError('Address cannot be empty')ipaddress.AddressValueError: Address cannot be empty
Решение: Закомментируйте переменную network_address_cloudexternal в Inventory-файле VK Private Cloud предыдущей версии и повторите выполнение команды:
$ vi $PREV_INVENTORY_DIR/vkcloud/group_vars/vkcloud/vars.yml...#network_address_cloudexternal: ""...
При работе скрипта это отобразится как изменение в файле, проигнорируйте его и продолжите корректировку Inventory.
Если файл minimal.yml, подготовленный для VK Private Cloud предыдущей версии, был утерян, восстановите его.
$ ./restore_minimal_yaml.py -i $PREV_INVENTORY_DIR/vkcloud/ -f ~/minimal_restore.yml --write --prev-version 4.1.1
$ ./restore_minimal_yaml.py -i $PREV_INVENTORY_DIR/vkcloud/ -f ~/minimal_restore.yml --write --prev-version 4.2.0
Проверьте, что значения переменных в файле корректны для установленной версии VK Private Cloud.
Сгенерируйте новый Inventory из полученного файла minimal_$NEW_RELEASE_NAME.yml:
$ $NEW_DISTRIB_DIR/invgen_box-$NEW_RELEASE_NAME/invgen-$INVGEN_ARCH generate -config ~/minimal_$NEW_RELEASE_NAME.yml -target ~/inventory-$NEW_RELEASE_NAME
В сгенерированный Inventory внесите изменения в соответствии с рекомендациями, полученными в предыдущем шаге в выводе скрипта pre_upgrade.py в разделе Корректировка файла минимальной конфигурации новой версии.
При необходимости раскодируйте его для обработки скриптом vault_migration.py, чтобы провести миграцию vault-файла:
$ cd $PREV_INVENTORY_DIR/vkcloud$ ansible-vault decrypt $PREV_INVENTORY_DIR/vkcloud/group_vars/vkcloud/vault.yml
Перенесите пароли в новый Inventory с помощью скрипта vault_migration.py:
$ cd $NEW_DISTRIB_DIR/repos_mcs_distr_box-$NEW_RELEASE_NAME/upgrade/minimal_yml$ ./vault_migration.py --source $PREV_INVENTORY_DIR/vkcloud/group_vars/vkcloud/vault.yml --target ~/inventory-$NEW_RELEASE_NAME/vkcloud/group_vars/vkcloud/vault.yml --release 4.2.1
При необходимости закодируйте обе версии:
$ ansible-vault encrypt $PREV_INVENTORY_DIR/vkcloud/group_vars/vkcloud/vault.yml$ ansible-vault encrypt ~/inventory-$NEW_RELEASE_NAME/vkcloud/group_vars/vkcloud/vault.yml