Руководство по переносу Ansible 2.3
В этом разделе рассматриваются изменения в поведении между Ansible 2.2 и Ansible 2.3.
Он предназначен для помощи в обновлении ваших playbooks, плагинов и других частей вашей инфраструктуры 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. Пожалуйста, обновите свои 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
Ранее игнорировались изменения, которые затрагивали только один параметр. В существующих развертываниях могут быть нерешенные изменения, которые исправит эта ошибка.
Mount
Mount: Некоторые исправления, чтобы снимки 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, который использует 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.6/porting_guides/porting_guide_2.3.html