Руководство по портированию Ansible 2.3
В этом разделе обсуждаются изменения в поведении между Ansible 2.2 и Ansible 2.3.
Цель состоит в том, чтобы помочь обновить ваши плейбуки, плагины и другие части вашей инфраструктуры Ansible, чтобы они работали с этой версией Ansible.
Мы рекомендуем прочитать эту страницу вместе с Журналом изменений Ansible, чтобы понять, какие обновления вам могут потребоваться.
Этот документ является частью коллекции по портированию. Полный список руководств по портированию можно найти в руководствах по портированию.
Плейбук
Перестроенный асинхронный режим работы с плагинами действий
В 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наследовательным для плейбука, задачи и всех других объектов между ними.
Модули
В этой версии нет крупных изменений.
Удаленные модули
В этой версии нет крупных изменений.
Уведомления о устаревании
Следующие модули будут удалены в Ansible 2.5. Пожалуйста, обновите свои плейбуки соответственно.
- ec2_vpc
- cl_bond
- cl_bridge
- cl_img_install
- cl_interface
- cl_interface_policy
- cl_license
- cl_ports
- nxos_mtu используйте nxos_system вместо этого
Заметные изменения модулей
AWS lambda
Ранее игнорировались изменения, которые затрагивали только один параметр. В существующих развертываниях могут быть необработанные изменения, которые эта исправление применит.
Mount
Mount: Некоторые исправления, чтобы bind mounts не монтировались каждый раз при выполнении плейбука.
Плагины
В этой версии нет крупных изменений.
Портирование пользовательских скриптов
В этой версии нет крупных изменений.
Сеть
Было внесено много изменений в работу модулей сети.
Плейбуки по-прежнему должны использовать 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–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.5/porting_guides/porting_guide_2.3.html