Руководство по переносу Ansible-core 2.11
В этом разделе обсуждаются изменения в поведении между ansible-base 2.10 и ansible-core 2.11.
Цель – помочь обновить ваши плейбуки, плагины и другие части вашей инфраструктуры Ansible, чтобы они работали с этой версией ansible-core.
Мы рекомендуем прочитать эту страницу вместе с Журналом изменений Ansible-core 2.11, чтобы понять, какие обновления вам могут потребоваться.
ansible-core в основном интересен разработчикам и пользователям, которые хотят использовать только небольшое, контролируемое подмножество доступных коллекций. Обычные пользователи должны установить Ansible.
Полный список руководств по переносу можно найти по адресу руководства по переносу.
Плейбук
- Настройка
jinja2_nativeтеперь не влияет на модуль шаблонов, который неявно возвращает строки. Для поиска шаблонов появился новый аргументjinja2_native(по умолчанию выключен), контролирующий эту функциональность. Остальные выражения Jinja2 по-прежнему работают на основе настройкиjinja2_native.
Командная строка
- Команда
ansible-galaxy loginбыла удалена, так как базовый API, используемый для авторизации GitHub, был закрыт. Публикация ролей или коллекций в Galaxy с помощьюansible-galaxyтеперь требует передачи маркера API Galaxy в командную строку с помощью файла маркера (путь по умолчанию~/.ansible/galaxy_token) или (небезопасно) с аргументом--tokenкansible-galaxy.
Устаревшие элементы
Константа ansible.module_utils.basic._CHECK_ARGUMENT_TYPES_DISPATCHER устарела. Используйте ansible.module_utils.common.parameters.DEFAULT_TYPE_VALIDATORS вместо неё.
Критические изменения
Изменения в AnsibleModule
В связи с переходом к ArgumentSpecValidator для валидации спецификации аргументов, следующие закрытые методы в AnsibleModule были удалены:
_check_argument_types()_check_argument_values()_check_arguments()-
_check_mutually_exclusive()–>ansible.module_utils.common.validation.check_mutually_exclusive() -
_check_required_arguments()–>ansible.module_utils.common.validation.check_required_arguments() -
_check_required_by()–>ansible.module_utils.common.validation.check_required_by() -
_check_required_if()–>ansible.module_utils.common.validation.check_required_if() -
_check_required_one_of()–>ansible.module_utils.common.validation.check_required_one_of() -
_check_required_together()–>ansible.module_utils.common.validation.check_required_together() -
_check_type_bits()–>ansible.module_utils.common.validation.check_type_bits() -
_check_type_bool()–>ansible.module_utils.common.validation.check_type_bool() -
_check_type_bytes()–>ansible.module_utils.common.validation.check_type_bytes() -
_check_type_dict()–>ansible.module_utils.common.validation.check_type_dict() -
_check_type_float()–>ansible.module_utils.common.validation.check_type_float() -
_check_type_int()–>ansible.module_utils.common.validation.check_type_int() -
_check_type_jsonarg()–>ansible.module_utils.common.validation.check_type_jsonarg() -
_check_type_list()–>ansible.module_utils.common.validation.check_type_list() -
_check_type_path()–>ansible.module_utils.common.validation.check_type_path() -
_check_type_raw()–>ansible.module_utils.common.validation.check_type_raw() -
_check_type_str()–>ansible.module_utils.common.validation.check_type_str() -
_count_terms()–>ansible.module_utils.common.validation.count_terms() _get_wanted_type()_handle_aliases()_handle_no_log_values()_handle_options()_set_defaults()_set_fallbacks()
Модули или плагины, использующие эти закрытые методы, должны использовать общедоступные функции в ansible.module_utils.common.validation или ArgumentSpecValidator.validate(), если выше не было указано общедоступных функций.
Изменения в ansible.module_utils.common.parameters
Следующие функции в ansible.module_utils.common.parameters теперь являются закрытыми и не должны использоваться напрямую. Используйте ArgumentSpecValidator.validate() вместо них.
list_no_log_valueslist_deprecationshandle_aliases
Другие
-
Обновление: При обновлении с
ansible < 2.10или сansible-baseи использовании pip, необходимоpip uninstall ansibleилиpip uninstall ansible-baseперед установкойansible-coreдля предотвращения конфликтов. - Python 3.8 на контрольном узле является мягким требованием для этого выпуска.
ansible-core2.11 по-прежнему работает с теми же версиями Python, что иansible-base2.10, однако 2.11 выводит предупреждение при запуске на контрольном узле с версией Python меньше 3.8. Это предупреждение можно отключить, установивANSIBLE_CONTROLLER_PYTHON_WARNING=Falseв вашей среде.ansible-core2.12 будет требовать Python 3.8 или выше. - Система конфигурации теперь проверяет поле
choices, поэтому любые настройки, нарушающие её, и которые игнорировались в 2.10, вызывают ошибку в 2.11. Например,ANSIBLE_COLLECTIONS_ON_ANSIBLE_VERSION_MISMATCH=0теперь вызывает ошибку (допустимые значения —ignore,warnилиerror). - Команда
ansible-galaxyтеперь используетresolvelibдля разрешения зависимостей. В большинстве случаев это не должно повлиять на пользователя, кроме повышения производительности, но мы отмечаем это для полноты. - Если вы импортируете Python
module_utilsв какие-либо модули, за которые вы отвечаете, то теперь вы можете пометить импорт как необязательный во время сборки модульного пакета, обернув операторimportв блокtryилиif. Это позволяет модулям использоватьmodule_utilsкоторые могут отсутствовать во всех версиях Ansible или коллекции, а также выполнять произвольные действия по восстановлению или выбору альтернатив во время выполнения модуля.
Модули
- Модуль
apt_keyявно определилfileкак взаимоисключающие сdata,keyserverиurl. Их больше нельзя использовать вместе. - Модуль
metaтеперь поддерживает метки для задач, определённых пользователем. Установите метки задачи на «всегда», чтобы сохранить предыдущее поведение. Внутренние задачиmetaпо-прежнему всегда выполняются.
Удаленные модули
Следующие модули больше не существуют:
- Нет заметных изменений
Замечания о устаревании
Нет заметных изменений
Заметные изменения в модулях
- facts - В NetBSD,
ansible_virtualization_typeтеперь пытается сообщить более точный результат, чемxenпри виртуализации и не запуске на Xen. - facts - Данные о виртуализации теперь включают ключи
virtualization_tech_guestиvirtualization_tech_host. Это списки технологий виртуализации, к которым относится гостевой компьютер, или которые предоставляет хост, соответственно. Например, если вы настроили хост для предоставления как KVM, так и VirtualBox, оба значения включены вvirtualization_tech_host. Аналогично, контейнер podman, запущенный на виртуальной машине, управляемой KVM, имеетvirtualization_tech_guestиз["kvm", "podman", "container"]. - Тип параметра
filterизменен сstringнаlistв модуле setup для использования более одного фильтра. Предыдущее поведение (использованиеstring) по-прежнему сохраняется и работает как единственный фильтр.
Плагины
- плагины инвентаризации -
CachePluginAdjudicator.flush()теперь вызывает подлежащий плагин кэшаflush()вместо только удаления ключей, о которых он знает. Плагины инвентаризации должны использоватьdelete()для удаления любых конкретных ключей. Это означает, что при вызове методомclear_cache()плагином инвентаризации, данные фактов также могут быть удалены из кэша. Чтобы обойти это, пользователи могут настроить плагины инвентаризации для использования кэша, независимого от кэша фактов. - плагины обратной связи - выполнение задачи
metaтеперь отправляется вv2_playbook_on_task_startкак любая другая задача. По умолчанию туда отправляются только явные мета-задачи. Плагины обратной связи могут принять участие в получении внутренних, неявно созданных задач, чтобы действовать и на них, как указано в документации по разработке плагинов. choicesтеперь проверяются, поэтому плагины, использующие некорректные или неполные варианты, выдают ошибку в 2.11, если предоставленное значение не соответствует. Это легко исправить: обновите записи вchoices, чтобы они соответствовали действительности.
Перенос пользовательских скриптов
Нет заметных изменений
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_core_2.11.html