Настройки модулей по умолчанию
Если вы обнаруживаете, что вызываете один и тот же модуль многократно с одними и теми же аргументами, может быть полезно определить аргументы по умолчанию для этого конкретного модуля, используя атрибут module_defaults.
Вот базовый пример:
- hosts: localhost
module_defaults:
file:
owner: root
group: root
mode: 0755
tasks:
- file:
state: touch
path: /tmp/file1
- file:
state: touch
path: /tmp/file2
- file:
state: touch
path: /tmp/file3
Атрибут module_defaults может использоваться на уровне пьесы, блока и задачи. Любые аргументы модуля, явно указанные в задаче, переопределят любые установленные значения по умолчанию для этого аргумента модуля:
- block:
- debug:
msg: "a different message"
module_defaults:
debug:
msg: "a default message"
Также можно удалить все ранее установленные значения по умолчанию для модуля, указав пустой словарь:
- file:
state: touch
path: /tmp/file1
module_defaults:
file: {}
Примечание
Любые значения по умолчанию для модулей, установленные на уровне пьесы (и на уровне блока/задачи при использовании include_role или import_role) будут применяться ко всем ролям, что может привести к непредвиденному поведению в роли.
Вот несколько более реалистичных примеров использования этой функции.
Взаимодействие с API, требующим авторизации:
- hosts: localhost
module_defaults:
uri:
force_basic_auth: true
user: some_user
password: some_password
tasks:
- uri:
url: http://some.api.host/v1/whatever1
- uri:
url: http://some.api.host/v1/whatever2
- uri:
url: http://some.api.host/v1/whatever3
Установка региона AWS по умолчанию для определенных модулей, связанных с EC2:
- hosts: localhost
vars:
my_region: us-west-2
module_defaults:
ec2:
region: '{{ my_region }}'
ec2_instance_facts:
region: '{{ my_region }}'
ec2_vpc_net_facts:
region: '{{ my_region }}'
© 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/user_guide/playbooks_module_defaults.html