Миграция бандла на новую версию контракта
В данной статье описан порядок миграции бандлов между версиями контракта. Для каждой версии приведен перечень изменений, которые необходимо внести при переходе на новую версию контракта.
Переход на более старшую версию требует последовательной миграции всех предыдущих версий.
С версии 1.0 на 2.0
Для миграции бандла с версии контракта 1.0 на 2.0 выполните следующие действия:
-
Преобразуйте action типа
job, так как начиная с версии контракта2.0action типаjobне поддерживаются. Для этого:-
Удалите свойство
type. -
Оформите выполнение скрипта с использованием параметра
scripts, переместив в него параметрыscriptиscript_type. -
Укажите атрибуты
nameиdisplay_nameв каждом элементе спискаscripts.
Пример action при
contract_version: 1.0:--- actions: check: .... type: job script_type: ansible script: ansible/playbooks/cluster/check_mm.yaml ....Пример action при
contract_version: 2.0:--- actions: check: ... scripts: - name: check display_name: Check script_type: ansible script: ansible/playbooks/cluster/check_mm.yaml -
-
Перенесите параметр
paramsв соответствующий элемент спискаscripts. Дляcontract_version: 1.0параметрparams, определенный на уровне action, наследовался и применялся к каждой подзадаче (subjob).
Пример action приcontract_version: 1.0:--- actions: check: display_name: Check type: task scripts: - name: check display_name: Check script_type: ansible script: ansible/playbooks/cluster/check_mm.yaml params: actions: - stopПример action при
contract_version: 2.0:--- actions: check: display_name: Check scripts: - name: check display_name: Check script_type: ansible script: ansible/playbooks/cluster/check_mm.yaml params: actions: - stop -
Удалите из секции
actionsсвойстваtypeиlog_files, так как они не поддерживаются начиная с версии контракта2.0.
Пример action приcontract_version: 1.0:--- actions: check: display_name: Check type: task log_files: - check scripts: - name: check display_name: Check script_type: ansible script: ansible/playbooks/cluster/check_mm.yamlПример action при
contract_version: 2.0:--- actions: check: display_name: Check # legacy attributes to be deleted # type: task # log_files: # - check scripts: - name: check display_name: Check script_type: ansible script: ansible/playbooks/cluster/check_mm.yaml -
Замените параметры
scripts_jinjaиconfig_jinjaнаscripts_templateиconfig_template, указав путь к файлу и тип движка для обработки файла, так как начиная с версии контракта2.0данные параметры не поддерживаются.ПРИМЕЧАНИЕОбратите внимание, что параметрыscripts_templateиconfig_templateиспользуют более строгую валидацию по сравнению с устаревшими параметрамиscripts_jinjaиconfig_jinja. В связи с этим при переходе на новые параметры может потребоваться доработка шаблонов Jinja2.
Пример action приcontract_version: 1.0:--- actions: install: display_name: Install type: task config_jinja: config_jinja/cluster/config.j2 scripts_jinja: scripts_jinja/cluster/manage_install.j2 states: available: - createdПример action при
contract_version: 2.0:--- actions: check: display_name: Check config_template: file: path: scripts_jinja/cluster/config.j2 engine: type: jinja2 scripts_template: file: path: scripts_jinja/cluster/manage_install.j2 engine: type: jinja2 states: available: - created -
Перенесите свойство
venvна уровень объекта (например, сервиса), так как начиная с версии контракта2.0оно не поддерживается на уровнеactionsи upgrade.ПРИМЕЧАНИЕНачиная с версии контракта2.0свойствоvenvявляется обязательным для объектовclusterиprovider.Пример action при
contract_version: 1.0:--- - type: service name: hdfs actions: start: display_name: Start venv: 2.9 .... states: available: - installedПример action при
contract_version: 2.0:--- - type: service name: hdfs venv: 2.9 actions: start: display_name: Start .... states: available: - installed -
Переведите action, использующие в качестве окружения Ansible 2.8 (
default), на версию 2.16. Переход может потребовать доработок существующих Ansible playbook и ролей (role).ПРИМЕЧАНИЕНачиная с версии контракта2.0свойствоvenvне поддерживает значенияdefaultи2.8.
|
ВАЖНО
После внесения изменений:
|
С версии 2.0 на 2.1
Для миграции бандла с версии контракта 2.0 на 2.1 переведите action, использующие Ansible 2.9 в качестве окружения, на версию 2.16. Переход может потребовать доработки существующих Ansible playbook и ролей (role).
|
ПРИМЕЧАНИЕ
Начиная с версии контракта 2.1 свойство venv больше не поддерживает значение 2.9.
|