Spec-Zone.ru › Ansible

Руководство по переносу Ansible-core 2.11

В этом разделе обсуждаются изменения в поведении между ansible-base 2.10 и ansible-core 2.11.

Цель – помочь обновить ваши плейбуки, плагины и другие части вашей инфраструктуры Ansible, чтобы они работали с этой версией ansible-core.

Мы рекомендуем прочитать эту страницу вместе с Журналом изменений Ansible-core 2.11, чтобы понять, какие обновления вам могут потребоваться.

ansible-core в основном интересен разработчикам и пользователям, которые хотят использовать только небольшое, контролируемое подмножество доступных коллекций. Обычные пользователи должны установить Ansible.

Полный список руководств по переносу можно найти по адресу руководства по переносу.

  • Плейбук
  • Командная строка
  • Устаревшие элементы
  • Критические изменения

    • Изменения в AnsibleModule
    • Изменения в ansible.module_utils.common.parameters
  • Прочие
  • Модули

    • Удаленные модули
    • Замечания об устаревании
    • Заметные изменения в модулях
  • Плагины
  • Перенос пользовательских скриптов

Плейбук

  • Настройка 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_values
  • list_deprecations
  • handle_aliases

Другие

  • Обновление: При обновлении с ansible < 2.10 или с ansible-base и использовании pip, необходимо pip uninstall ansible или pip uninstall ansible-base перед установкой ansible-core для предотвращения конфликтов.
  • Python 3.8 на контрольном узле является мягким требованием для этого выпуска. ansible-core 2.11 по-прежнему работает с теми же версиями Python, что и ansible-base 2.10, однако 2.11 выводит предупреждение при запуске на контрольном узле с версией Python меньше 3.8. Это предупреждение можно отключить, установив ANSIBLE_CONTROLLER_PYTHON_WARNING=False в вашей среде. ansible-core 2.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API