Spec-Zone.ru › Ansible

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

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

Это руководство поможет обновить ваши плейбуки, плагины и другие компоненты инфраструктуры Ansible, чтобы они работали с этой версией Ansible.

Изучите эту страницу и список изменений ansible-core 2.20, чтобы узнать о необходимых изменениях.

Этот документ входит в сборник руководств по переносу. Полный список руководств по переносу доступен в разделе руководства по переносу.

  • Введение
  • Плейбук

    • Удалено удаление кавычек при выполнении операций PowerShell
  • Ядро
  • API плагинов

    • Удалённые функции
    • Изменения в поведении
  • Командная строка
  • Устаревшие функции

    • INJECT_FACTS_AS_VARS
    • Другие устаревшие функции
  • Модули

    • Удалённые модули
    • Уведомления об устаревании
    • Важные изменения в модулях
  • Плагины

    • Важные изменения в плагинах
  • Перенос пользовательских скриптов
  • Сетевое взаимодействие

Введение

Нет существенных изменений

Плейбук

Удалено удаление кавычек при выполнении операций PowerShell

Утилиты модулей PowerShell больше не пытаются удалять кавычки из путей при выполнении операций Windows, таких как копирование и получение файлов. Это не должно повлиять на обычные плейбуки, если только значение не заключено в кавычки слишком много раз. Если ваши плейбуки зависят от автоматического удаления кавычек, вам потребуется изменить форматирование путей.

Ядро

Нет существенных изменений

API плагинов

Удалённые функции

Удалены следующие функции, которые ранее были объявлены устаревшими:

  • Параметр конфигурации DEFAULT_TRANSPORT больше не поддерживает значение smart, которое выбирало транспорт по умолчанию — ssh или paramiko — в зависимости от конфигурации платформы.
  • Фильтры vault и unvault больше не принимают устаревший параметр vaultid.
  • Команда ansible-galaxy больше не поддерживает API сервера Galaxy v2. Серверы Galaxy, на которых размещены коллекции, должны поддерживать v3.
  • Модули dnf и dnf5 больше не поддерживают устаревший параметр install_repoquery.
  • Утилита модуля encrypt больше не содержит устаревший API passlib_or_crypt.
  • Плагин подключения paramiko больше не поддерживает ключи конфигурации PARAMIKO_HOST_KEY_AUTO_ADD и PARAMIKO_LOOK_FOR_KEYS, которые ранее были объявлены устаревшими.
  • Вызов py3compat.environ удалён.
  • Плагины vars, не наследующие BaseVarsPlugin и определяющие метод get_vars, больше не могут использовать устаревший резервный вариант get_host_vars или get_group_vars.
  • Модуль yum_repository больше не поддерживает устаревший параметр keepcache.

Изменения в поведении

  • Метод DataLoader.get_basedir теперь возвращает абсолютный путь вместо относительного. Код плагинов, который зависит от относительных путей, может потребовать изменений.
  • При проверке спецификации аргументов значения None теперь трактуются как пустые строки для типа str, что обеспечивает большую согласованность с преобразованиями шаблонов до версии 2.19.
  • При использовании failed_when для подавления ошибки ключ exception в результате теперь переименовывается в failed_when_suppressed_exception. Это не позволяет обратным вызовам отображать подавленную ошибку. Если в ваших плейбуках проверяется наличие исключения в результате, обновите их следующим образом:
# Before
- command: /bin/false
  register: result
  failed_when: false

- debug:
    msg: "Exception was: {{ result.exception }}"
  when: result.exception is defined

# After
- command: /bin/false
  register: result
  failed_when: false

- debug:
    msg: "Exception was: {{ result.failed_when_suppressed_exception }}"
  when: result.failed_when_suppressed_exception is defined

Командная строка

  • Python 3.11 больше не поддерживается на управляющем узле. Для запуска Ansible теперь требуется Python 3.12 или более поздней версии.
  • Python 3.8 больше не поддерживается на удалённых узлах. Для выполнения задач на целевых узлах теперь требуется Python 3.9 или более поздней версии.

Устаревшие функции

INJECT_FACTS_AS_VARS

Для параметра конфигурации INJECT_FACTS_AS_VARS в настоящее время задано значение True, однако теперь оно объявлено устаревшим. В Ansible 2.24 значение по умолчанию изменится на False.

Если эта функция включена, факты доступны как в словаре ansible_facts, так и в виде отдельных переменных в основном пространстве имён. В словаре ansible_facts из имён фактов удаляется префикс ansible_.

При обращении к «внедрённым» фактам будут выводиться предупреждения об устаревании. Чтобы подготовиться к будущему значению по умолчанию:

Обновите плейбуки и используйте словарь ansible_facts:

# Deprecated - will stop working in 2.24
- debug:
    msg: "OS: {{ ansible_os_distribution }}"

# Recommended - works in all versions
- debug:
    msg: "OS: {{ ansible_facts['distribution'] }}"
    # Note: 'ansible_' prefix is removed inside ansible_facts

Или явно включите текущее поведение в конфигурации:

В файле ansible.cfg:

[defaults]
inject_facts_as_vars = True

Экспортировав переменную окружения:

export ANSIBLE_INJECT_FACT_VARS=True

Другие устаревшие функции

  • Внутренний кэш переменных vars будет удалён в версии 2.24. Этот кэш, который ранее использовался внутри системы, предоставляет переменные в непоследовательных состояниях. Вместо него следует использовать запросы vars и varnames.
  • Указание ignore_files в виде строки в модуле include_vars объявлено устаревшим. Вместо этого используйте список:
# Deprecated
- include_vars:
    dir: vars/
    ignore_files: ".gitkeep"

# Correct
- include_vars:
    dir: vars/
    ignore_files: [".gitkeep"]

Модули

Удалённые модули

Следующие модули больше не существуют:

  • Нет существенных изменений

Уведомления об устаревании

Нет существенных изменений

Важные изменения в модулях

  • Модуль include_vars теперь выдаёт ошибку, если параметр extensions не задан в виде списка. Ранее значения, не являющиеся списками, принимались без предупреждения.
  • Модуль include_vars теперь выдаёт ошибку, если параметр ignore_files не задан в виде списка. Ранее принимались строковые значения, но теперь они объявлены устаревшими.
  • Модуль replace теперь считывает и записывает файлы в текстовом режиме как символы Unicode, а не как байты, и переключает сопоставление регулярных выражений на символы Unicode вместо байтов. Это может повлиять на плейбуки, зависящие от операций на уровне байтов.

Плагины

Важные изменения в плагинах

Нет существенных изменений

Перенос пользовательских скриптов

Нет существенных изменений

Сетевое взаимодействие

Нет существенных изменений

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/porting_guides/porting_guide_core_2.20.html

Spec-Zone.ru

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