Spec-Zone.ru › Ansible 2.7

Настройки модулей по умолчанию

Если вы обнаруживаете, что вызываете один и тот же модуль многократно с одними и теми же аргументами, может быть полезно определить аргументы по умолчанию для этого конкретного модуля, используя атрибут 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API