Руководство по переносу Ansible 2.3
В этом разделе обсуждаются изменения в поведении между Ansible 2.2 и Ansible 2.3.
Цель данного документа — помочь обновить ваши playbook, плагины и другие части вашей инфраструктуры Ansible, чтобы они работали с этой версией Ansible.
Мы рекомендуем прочитать эту страницу вместе с Журналом изменений Ansible 2.3, чтобы понять, какие обновления вам могут потребоваться.
Этот документ является частью коллекции руководств по переносу. Полный список руководств по переносу можно найти в руководствах по переносу.
Playbook
Перестроенный асинхронный режим для работы с плагинами действий
В Ansible 2.2 (и, возможно, ранее) ключевое слово async: не могло использоваться совместно с плагинами действий, такими как service. Это ограничение устранено в Ansible 2.3
НОВОЕ В Ansible 2.3:
- name: Install nginx asynchronously
service:
name: nginx
state: restarted
async: 45
Факты версии OpenBSD
Факты ansible_distribution_release и ansible_distribution_version для хостов OpenBSD были изменены в Ansible 2.2 и ранее. Сейчас версия содержит числовую часть, а выпуск — название релиза.
СТАРЫЙ В Ansible 2.2 (и ранее)
"ansible_distribution": "OpenBSD" "ansible_distribution_release": "6.0", "ansible_distribution_version": "release",
НОВОЕ В Ansible 2.3:
"ansible_distribution": "OpenBSD", "ansible_distribution_release": "release", "ansible_distribution_version": "6.0",
Блоки с именами
Теперь блоки могут иметь имена, это позволяет избежать некрасивых # this block is for… комментариев.
НОВОЕ В Ansible 2.3:
- name: Block test case
hosts: localhost
tasks:
- name: Attempt to setup foo
block:
- debug: msg='I execute normally'
- command: /bin/false
- debug: msg='I never execute, cause ERROR!'
rescue:
- debug: msg='I caught an error'
- command: /bin/false
- debug: msg='I also never execute :-('
always:
- debug: msg="this always executes"
Использование нескольких тегов
Указание --tags (или --skip-tags) несколько раз в командной строке в настоящее время приводит к тому, что последний указанный тег перекрывает все другие указанные теги. Это поведение устарело. В будущем, если вы укажете –tags несколько раз, теги будут объединены. Отныне, использование --tags несколько раз в одной командной строке вызовет предупреждение об устаревании. Установка параметра merge_multiple_cli_tags в значение True в файле ansible.cfg включит новое поведение.
В версии 2.4 по умолчанию теги будут объединяться. Старое поведение перекрытия можно включить с помощью параметра конфигурации. В версии 2.5 несколько параметров --tags будут объединены без возможности вернуться к старому поведению.
Другие замечания
Ниже приведены некоторые редкие случаи, которые могут встретиться при обновлении. Они в основном вызваны более строгими проверками анализатора и захватом ошибок, которые ранее игнорировались.
- Сделано
any_errors_fatalнаследуемым от playbook к задаче и всем другим объектам между ними.
Модули
В этой версии нет существенных изменений.
Удаленные модули
В этой версии нет существенных изменений.
Уведомления об устаревании
Следующие модули будут удалены в Ansible 2.5. Пожалуйста, обновите свои playbook соответственно.
- ec2_vpc
- cl_bond
- cl_bridge
- cl_img_install
- cl_interface
- cl_interface_policy
- cl_license
- cl_ports
- nxos_mtu используйте nxos_system вместо него
Примечание
Возможно, документация к этим модулям отсутствует в текущей версии. Пожалуйста, обратитесь к документации по модулям Ansible 2.3, если вам нужно знать, как они работали для переноса ваших playbook.
Заслуживающие внимания изменения в модулях
AWS lambda
Ранее игнорировались изменения, которые затрагивали только один параметр. Существующие развертывания могут иметь необработанные изменения, которые исправит эта ошибка.
Mount
Mount: Некоторые исправления, чтобы bind-монтирования не монтировались каждый раз при запуске playbook.
Плагины
В этой версии нет существенных изменений.
Перенос пользовательских скриптов
В этой версии нет существенных изменений.
Сети
Было внесено много изменений в работу модулей сети.
Playbook все еще должны использовать connection: local.
Следующие изменения применяются к:
- dellos6
- dellos9
- dellos10
- eos
- ios
- iosxr
- junos
- sros
- vyos
Устаревание аргументов подключения верхнего уровня
СТАРЫЙ В Ansible 2.2:
- name: example of using top-level options for connection properties
ios_command:
commands: show version
host: "{{ inventory_hostname }}"
username: cisco
password: cisco
authorize: yes
auth_pass: cisco
Результат:
[WARNING]: argument username has been deprecated and will be removed in a future version [WARNING]: argument host has been deprecated and will be removed in a future version [WARNING]: argument password has been deprecated and will be removed in a future version
НОВОЕ В Ansible 2.3:
- name: Gather facts
eos_facts:
gather_subset: all
provider:
username: myuser
password: "{{ networkpassword }}"
transport: cli
host: "{{ ansible_host }}"
delegate_to vs ProxyCommand
Новая система подключения для модулей сети в Ansible 2.3, использующая cli транспорт, больше не поддерживает использование директивы delegate_to. Чтобы использовать башшон или промежуточный хост перехода для подключения к сетевым устройствам через cli транспорт, модули сети теперь поддерживают использование ProxyCommand.
Для использования ProxyCommand настройте параметры прокси в файле инвентаризации Ansible, чтобы указать хост прокси через ansible_ssh_common_args.
Подробную информацию об этом см. в руководстве по прокси сети.
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/porting_guides/porting_guide_2.3.html