Spec-Zone.ru › Ansible 2.8

Умолчания модулей

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

Группы умолчаний модулей

Новое в версии 2.7.

Ansible 2.7 добавляет функцию предварительного статуса для группирования модулей, которые используют общие наборы параметров. Это упрощает создание playbooks, интенсивно использующих модули на основе API, такие как модули облачных сервисов.

Группа Назначение Версия Ansible
aws Amazon Web Services 2.7
azure Azure 2.7
gcp Google Cloud Platform 2.7
k8s Kubernetes 2.8
os OpenStack 2.8

Используйте группы с module_defaults, предваряя имя группы с group/ - например, group/aws.

В playbook вы можете установить значения по умолчанию для целых групп модулей, например, установить общий регион AWS.

# example_play.yml
- hosts: localhost
  module_defaults:
    group/aws:
      region: us-west-2
  tasks:
  - aws_s3_bucket_facts:
  # now the region is shared between both facts modules
  - ec2_ami_facts:
      filters:
        name: 'RHEL*7.5*'

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/user_guide/playbooks_module_defaults.html

Spec-Zone.ru

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