Руководство по переносу 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 против 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.7/porting_guides/porting_guide_2.3.html