Руководство по переносу Ansible-core 2.12
В этом разделе обсуждаются изменения в поведении между ansible-core 2.11 и ansible-core 2.12.
Он предназначен для помощи в обновлении ваших плейбуков, плагинов и других частей вашей инфраструктуры Ansible, чтобы они работали с этой версией Ansible.
Мы рекомендуем прочитать эту страницу вместе с Журналом изменений Ansible-core 2.12, чтобы понять, какие обновления вам могут потребоваться.
Этот документ является частью коллекции по переносу. Полный список руководств по переносу можно найти в руководствах по переносу.
- Плейбук
- Обнаружение интерпретатора Python
- Командная строка
- Устаревшие элементы
- Плагины
- Перенос пользовательских скриптов
- Сети
Плейбук
- При вызове задач и установке
async, установкаANSIBLE_ASYNC_DIRвenvironment:больше недействительна. Вместо этого используйте переменную конфигурации shellasync_dir, например, установивansible_async_dir:
tasks:
- dnf:
name: '*'
state: latest
async: 300
poll: 5
vars:
ansible_async_dir: /path/to/my/custom/dir
- Функция
undef()добавлена в среду шаблонов для создания не определенных переменных непосредственно в шаблоне. При необходимости можно указать подсказку для переменных, которые предполагается переопределить.
vars:
old: "{{ undef }}"
new: "{{ undef() }}"
new_with_hint: "{{ undef(hint='You must override this variable') }}"
Обнаружение интерпретатора Python
Значение по умолчанию для INTERPRETER_PYTHON изменено на auto. Список интерпретаторов Python в INTERPRETER_PYTHON_FALLBACK изменен в пользу Python 3 по сравнению с Python 2. Сочетание этих двух изменений означает, что новое поведение по умолчанию заключается в тихом предпочтении Python 3 перед Python 2 на удаленных хостах. Ранее выдавалось предупреждение об устаревании в ситуациях, когда обнаружение интерпретатора должно было использовать Python 3, но интерпретатор был установлен на /usr/bin/python.
INTERPRETER_PYTHON_FALLBACK можно изменить из списка интерпретаторов по умолчанию, установив переменную ansible_interpreter_python_fallback.
См. документацию по обнаружению интерпретатора для получения более подробной информации.
Командная строка
- Python 3.8 на узле-контроллере является обязательным требованием для этой версии. Скрипты командной строки не будут работать с более старой версией Python.
-
ansible-vaultбольше не поддерживаетPyCryptoи требуетcryptography.
Устаревшие элементы
- Python 2.6 на целевом узле устарел в этой версии.
ansible-core2.13 удалит поддержку Python 2.6. - Необработанные переменные в условных операторах: условные операторы
whenбольше не автоматически преобразуют строковые булевы значения, такие как"true"и"false", в фактические булевы значения. Любая переменная, содержащая непустую строку, считается истинной. Ранее это можно было настроить с помощью параметра конфигурацииCONDITIONAL_BARE_VARS(и переменной окруженияANSIBLE_CONDITIONAL_BARE_VARS). Эта настройка больше не имеет никакого эффекта. Пользователи могут обойти эту проблему, используя фильтр|bool:
vars:
teardown: 'false'
tasks:
- include_tasks: teardown.yml
when: teardown | bool
- include_tasks: provision.yml
when: not teardown | bool
- Метод
_remote_checksum()вActionBaseустарел. Любой плагин действий, использующий этот метод, должен использовать_execute_remote_stat()вместо него.
Модули
-
cronтеперь требует указанияnameво всех случаях. -
cronбольше не позволяет параметрreboot. Используйтеspecial_time: rebootвместо него. -
hostname- В FreeBSD результатbeforeбольше не будет"temporarystub", если файл постоянного имени хоста не существует. Вместо этого он будет""(пустая строка) для соответствия другим системам. -
hostname- В системах на основе OpenRC и Solaris результатbeforeбольше не будет"UNKNOWN", если файл постоянного имени хоста не существует. Вместо этого он будет""(пустая строка) для соответствия другим системам. -
pipтеперь использует модуль Pythonpip, установленный для интерпретатора Python модуля Ansible, если он доступен, если не были указаныexecutableилиvirtualenv.
Удаленные модули
Следующие модули больше не существуют:
- Без заметных изменений
Уведомления об устаревании
Без заметных изменений
Заметные изменения в модулях
Без заметных изменений
Плагины
-
uniqueфильтр с Jinja2 < 2.10 чувствителен к регистру и теперь приводит к ошибке, еслиcase_sensitive=Falseвместоcase_sensitive=True. - Фильтры теории множеств (
intersect,difference,symmetric_differenceиunion) теперь чувствительны к регистру. Явно используйтеcase_sensitive=Falseдля сохранения предыдущего поведения. Примечание: с Jinja2 < 2.10 фильтры по умолчанию уже были чувствительны к регистру. -
password_hash`теперь использует значения по умолчаниюpasslib, когда параметр не указан, например,bcrypt_sha256теперь по умолчанию используют формат «2b», а если требуется формат «2a», он должен быть указан.
Перенос пользовательских скриптов
Без заметных изменений
Сети
Без заметных изменений
© 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.12.html