Spec-Zone.ru › Ansible 2.9

Значения по умолчанию модулей

Если вы обнаружите, что неоднократно вызываете один и тот же модуль с одними и теми же аргументами, может быть полезно определить значения аргументов по умолчанию для данного модуля, используя атрибут 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_info:
      region: '{{ my_region }}'
    ec2_vpc_net_info:
      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_info:
  # now the region is shared between both info modules
  - ec2_ami_info:
      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.9/user_guide/playbooks_module_defaults.html

Spec-Zone.ru

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