Руководство по переносу Ansible-core 2.20
В этом разделе рассматриваются изменения в поведении между ansible-core 2.19 и ansible-core 2.20.
Это руководство поможет обновить ваши плейбуки, плагины и другие компоненты инфраструктуры Ansible, чтобы они работали с этой версией Ansible.
Изучите эту страницу и список изменений ansible-core 2.20, чтобы узнать о необходимых изменениях.
Этот документ входит в сборник руководств по переносу. Полный список руководств по переносу доступен в разделе руководства по переносу.
Введение
Нет существенных изменений
Плейбук
Удалено удаление кавычек при выполнении операций PowerShell
Утилиты модулей PowerShell больше не пытаются удалять кавычки из путей при выполнении операций Windows, таких как копирование и получение файлов. Это не должно повлиять на обычные плейбуки, если только значение не заключено в кавычки слишком много раз. Если ваши плейбуки зависят от автоматического удаления кавычек, вам потребуется изменить форматирование путей.
Ядро
Нет существенных изменений
API плагинов
Удалённые функции
Удалены следующие функции, которые ранее были объявлены устаревшими:
- Параметр конфигурации
DEFAULT_TRANSPORTбольше не поддерживает значениеsmart, которое выбирало транспорт по умолчанию —sshилиparamiko— в зависимости от конфигурации платформы. - Фильтры
vaultиunvaultбольше не принимают устаревший параметрvaultid. - Команда
ansible-galaxyбольше не поддерживает API сервера Galaxy v2. Серверы Galaxy, на которых размещены коллекции, должны поддерживать v3. - Модули
dnfиdnf5больше не поддерживают устаревший параметрinstall_repoquery. - Утилита модуля
encryptбольше не содержит устаревший APIpasslib_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