Руководство по переносу Ansible 2.3
В этом разделе обсуждаются изменения в поведении между Ansible 2.2 и Ansible 2.3.
Цель данного руководства — помочь в обновлении ваших playbooks, плагинов и других частей вашей инфраструктуры Ansible, чтобы они работали с этой версией Ansible.
Мы рекомендуем прочитать эту страницу вместе с Журналом изменений Ansible, чтобы понять, какие обновления вам могут потребоваться.
Этот документ является частью коллекции руководств по переносу. Полный список руководств по переносу можно найти в руководствах по переносу.
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наследуемым от play к задаче и всем другим объектам между ними.
Модули
В этой версии нет существенных изменений.
Удаленные модули
В этой версии нет существенных изменений.
Предупреждения о устаревании
Следующие модули будут удалены в Ansible 2.5. Пожалуйста, обновите свои playbooks соответственно.
- ec2_vpc
- cl_bond
- cl_bridge
- cl_img_install
- cl_interface
- cl_interface_policy
- cl_license
- cl_ports
- nxos_mtu используйте nxos_system вместо него
Заметные изменения в модулях
AWS lambda
Ранее игнорируемые изменения, которые повлияли только на один параметр. Существующие развертывания могут содержать нерешенные изменения, которые исправит эта ошибка.
Монтирование
Монтирование: Исправлены некоторые ошибки, чтобы bind-монтирования не монтировались каждый раз при запуске playbook.
Плагины
В этой версии нет существенных изменений.
Перенос пользовательских скриптов
В этой версии нет существенных изменений.
Сети
Было внесено много изменений в работу модулей сетей.
Playbooks все еще должны использовать 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 против ProxyCommand
Новая система подключения для модулей сетей в Ansible 2.3 больше не поддерживает использование директивы delegate_to. Для использования бастиона или промежуточного хоста перехода для подключения к сетевым устройствам модули сетей теперь поддерживают использование 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.4/porting_guide_2.3.html