Spec-Zone.ru › Ansible 2.9

cloudformation – Создание или удаление стека AWS CloudFormation

  • Описание
  • Требования
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения
  • Статус

Описание

  • Запускает или обновляет стек AWS CloudFormation и ожидает его завершения.

Требования

Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.

  • boto
  • boto3
  • botocore>=1.5.45
  • python >= 2.6

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
aws_access_key
строка
Ключ доступа AWS. Если не задан, используется значение переменной окружения AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY или EC2_ACCESS_KEY.

псевдонимы: ec2_access_key, access_key
aws_secret_key
строка
Секретный ключ AWS. Если не задан, используется значение переменной окружения AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY или EC2_SECRET_KEY.

псевдонимы: ec2_secret_key, secret_key
backoff_delay
целое число
добавлено в 2.8
По умолчанию:
3
Количество секунд ожидания для следующей попытки.
backoff_max_delay
целое число
добавлено в 2.8
По умолчанию:
30
Максимальное время ожидания между повторными попытками.
backoff_retries
целое число
добавлено в 2.8
По умолчанию:
10
Количество попыток повторения операции.
Механизм ограничения скорости API AWS приводит к сбоям модуля Cloudformation, поэтому нужно повторить операцию несколько раз.
capabilities
список
добавлено в 2.8
По умолчанию:
["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"]
Укажите возможности, которые содержит шаблон стека.
Допустимые значения: CAPABILITY_IAM, CAPABILITY_NAMED_IAM и CAPABILITY_AUTO_EXPAND.
changeset_name
-
добавлено в 2.4
Имя набора изменений при создании набора изменений, используется только при create_changeset = true. По умолчанию генерируется имя, начинающееся с Ansible-STACKNAME, на основе входных параметров. См. документацию AWS по наборам изменений https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html
create_changeset
логическое значение
добавлено в 2.4
    Варианты:
  • нет ←
  • да
Если стек уже существует, создайте набор изменений вместо непосредственного применения изменений. См. документацию AWS по наборам изменений https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html. ПРЕДУПРЕЖДЕНИЕ: если стека не существует, он будет создан без набора изменений. Если состояние отсутствует, стек будет удален немедленно без набора изменений.
create_timeout
-
добавлено в 2.6
Время (в минутах), которое может пройти, прежде чем статус стека станет CREATE_FAILED
debug_botocore_endpoint_logs
логическое значение
добавлено в 2.8
    Варианты:
  • нет ←
  • да
Используйте логгер botocore.endpoint для анализа уникальных (а не общих) API-вызовов «ресурс:действие», выполненных во время задачи, выводя набор в ключ resource_actions в результатах задачи. Используйте обратный вызов aws_resource_action, чтобы вывести полный список, созданный во время выполнения книги команд.
disable_rollback
логическое значение
    Варианты:
  • нет ←
  • да
Если формирование стека завершается неудачно, откат удалит стек
ec2_url
строка
URL для подключения к EC2 или вашему облаку Eucalyptus (по умолчанию модуль использует конечные точки EC2). Игнорируется для модулей, где требуется регион. Должен быть указан для всех остальных модулей, если регион не используется. Если не задан, используется значение переменной окружения EC2_URL, если таковое имеется.
events_limit
-
добавлено в 2.7
По умолчанию:
200
Максимальное количество событий CloudFormation, которые нужно извлечь из стека при его создании или обновлении.
notification_arns
-
ARN тем Simple Notification Service (SNS) для публикации событий, связанных со стеком.
on_create_failure
-
добавлено в 2.8
    Варианты:
  • DO_NOTHING
  • ROLLBACK
  • DELETE
Действие, которое необходимо предпринять при неудачном создании стека. Несовместимо с параметром disable_rollback.
profile
строка
Использует профиль boto. Работает только с boto >= 2.24.0.
region
строка
Регион AWS. Если не указан, используется значение переменной окружения AWS_REGION или EC2_REGION, если таковое имеется. См. http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region

псевдонимы: aws_region, ec2_region
role_arn
-
Роль, которую AWS CloudFormation принимает для создания стека. См. документацию AWS CloudFormation Service Role https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html
security_token
строка
Токен безопасности AWS STS. Если не задан, используется значение переменной окружения AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN.

псевдонимы: access_token
stack_name
- / обязательно
Имя стека cloudformation
stack_policy
-
Путь к политике стека cloudformation. Политику нельзя удалить после размещения, но можно изменить. Например, разрешить все обновления https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html#d0e9051
state
-
    Варианты:
  • present ←
  • absent
Если состояние «present», стек будет создан. Если состояние «present» и если стек существует, а шаблон изменён, он будет обновлён. Если состояние «absent», стек будет удалён.
tags
-
Словарь тегов, которые следует связать со стеком и его ресурсами во время создания стека. Можно обновить позже; обновление тегов удаляет предыдущие записи.
template
-
Локальный путь к шаблону cloudformation.
Это должен быть полный путь к файлу, относительно рабочей директории. Если используются роли, это может выглядеть как "roles/cloudformation/files/cloudformation-example.json".
Если `state` равен 'present' и стек ещё не существует, должен быть указан либо `template`, либо `template_body`, либо `template_url` (но только один из них). Если `state` равен 'present', стек существует, и ни `template`, ни `template_body`, ни `template_url` не указаны, будет повторно использован предыдущий шаблон.
template_body
-
добавлено в 2.5
Тело шаблона. Используйте его, чтобы передать фактическое тело шаблона Cloudformation.
Если `state` равен 'present' и стек ещё не существует, должен быть указан либо `template`, либо `template_body`, либо `template_url` (но только один из них). Если `state` равен 'present', стек существует, и ни `template`, ни `template_body`, ни `template_url` не указаны, будет повторно использован предыдущий шаблон.
формат_шаблона
-
    Варианты:
  • json ←
  • yaml
(устарело) Для локальных шаблонов позволяет указать формат json или yaml. Шаблоны теперь передаются в CloudFormation в сыром виде независимо от формата. Этот параметр игнорируется с Ansible 2.3.
параметры_шаблона
-
По умолчанию:
{}
Список словарей всех переменных шаблона для стека. Значение может быть строкой или словарем.
Словарь может использоваться для установки дополнительных атрибутов параметров шаблона, таких как UsePreviousValue (см. пример).
url_шаблона
-
Расположение файла, содержащего тело шаблона. URL должен указывать на шаблон (максимальный размер 307 200 байт), расположенный в ведре S3 в той же области, что и стек.
Если «состояние» — «present», а стек еще не существует, необходимо указать «шаблон», «тело_шаблона» или «url_шаблона» (только один из них). Если «состояние» — «present», стек уже существует, и ни «шаблон», ни «тело_шаблона», ни «url_шаблона» не указаны, предыдущий шаблон будет повторно использован.
защита_от_прекращения
boolean
добавлен в 2.5
    Варианты:
  • нет
  • да
Включает или выключает защиту от прекращения работы стека. Работает только с botocore >= 1.7.18.
валидировать_сертификаты
boolean
    Варианты:
  • нет
  • да ←
Если установлено «нет», сертификаты SSL для boto версий >= 2.6.0 не будут проверяться.

Примечания

Примечание

  • Функциональность Cloudformation часто изменяется, и этот модуль пытается следить за этим. Это означает, что ваша версия botocore должна быть актуальной. Версия, указанная в требованиях, — это самая старая версия, которая работает с модулем в целом. Некоторые функции могут потребовать последних версий, и мы не указываем минимальную версию для каждой функции. Вместо того, чтобы полагаться на минимальную версию, поддерживайте botocore в актуальном состоянии. AWS постоянно выпускает новые функции и исправления ошибок.
  • Если параметры не заданы в модуле, следующие переменные среды могут использоваться в порядке убывания приоритета AWS_URL или EC2_URL, AWS_ACCESS_KEY_ID или AWS_ACCESS_KEY или EC2_ACCESS_KEY, AWS_SECRET_ACCESS_KEY или AWS_SECRET_KEY или EC2_SECRET_KEY, AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN, AWS_REGION или EC2_REGION
  • Ansible использует конфигурационный файл boto (обычно ~/.boto), если учетные данные не предоставлены. См. https://boto.readthedocs.io/en/latest/boto_config_tut.html
  • AWS_REGION или EC2_REGION обычно используются для указания региона AWS, когда это необходимо, но это также можно настроить в конфигурационном файле boto

Примеры

- name: create a cloudformation stack
  cloudformation:
    stack_name: "ansible-cloudformation"
    state: "present"
    region: "us-east-1"
    disable_rollback: true
    template: "files/cloudformation-example.json"
    template_parameters:
      KeyName: "jmartin"
      DiskType: "ephemeral"
      InstanceType: "m1.small"
      ClusterSize: 3
    tags:
      Stack: "ansible-cloudformation"

# Basic role example
- name: create a stack, specify role that cloudformation assumes
  cloudformation:
    stack_name: "ansible-cloudformation"
    state: "present"
    region: "us-east-1"
    disable_rollback: true
    template: "roles/cloudformation/files/cloudformation-example.json"
    role_arn: 'arn:aws:iam::123456789012:role/cloudformation-iam-role'

- name: delete a stack
  cloudformation:
    stack_name: "ansible-cloudformation-old"
    state: "absent"

# Create a stack, pass in template from a URL, disable rollback if stack creation fails,
# pass in some parameters to the template, provide tags for resources created
- name: create a stack, pass in the template via an URL
  cloudformation:
    stack_name: "ansible-cloudformation"
    state: present
    region: us-east-1
    disable_rollback: true
    template_url: https://s3.amazonaws.com/my-bucket/cloudformation.template
    template_parameters:
      KeyName: jmartin
      DiskType: ephemeral
      InstanceType: m1.small
      ClusterSize: 3
    tags:
      Stack: ansible-cloudformation

# Create a stack, passing in template body using lookup of Jinja2 template, disable rollback if stack creation fails,
# pass in some parameters to the template, provide tags for resources created
- name: create a stack, pass in the template body via lookup template
  cloudformation:
    stack_name: "ansible-cloudformation"
    state: present
    region: us-east-1
    disable_rollback: true
    template_body: "{{ lookup('template', 'cloudformation.j2') }}"
    template_parameters:
      KeyName: jmartin
      DiskType: ephemeral
      InstanceType: m1.small
      ClusterSize: 3
    tags:
      Stack: ansible-cloudformation

# Pass a template parameter which uses Cloudformation's UsePreviousValue attribute
# When use_previous_value is set to True, the given value will be ignored and
# Cloudformation will use the value from a previously submitted template.
# If use_previous_value is set to False (default) the given value is used.
- cloudformation:
    stack_name: "ansible-cloudformation"
    state: "present"
    region: "us-east-1"
    template: "files/cloudformation-example.json"
    template_parameters:
      DBSnapshotIdentifier:
        use_previous_value: True
        value: arn:aws:rds:es-east-1:000000000000:snapshot:rds:my-db-snapshot
      DBName:
        use_previous_value: True
    tags:
      Stack: "ansible-cloudformation"

# Enable termination protection on a stack.
# If the stack already exists, this will update its termination protection
- name: enable termination protection during stack creation
  cloudformation:
    stack_name: my_stack
    state: present
    template_url: https://s3.amazonaws.com/my-bucket/cloudformation.template
    termination_protection: yes

# Configure TimeoutInMinutes before the stack status becomes CREATE_FAILED
# In this case, if disable_rollback is not set or is set to false, the stack will be rolled back.
- name: enable termination protection during stack creation
  cloudformation:
    stack_name: my_stack
    state: present
    template_url: https://s3.amazonaws.com/my-bucket/cloudformation.template
    create_timeout: 5

# Configure rollback behaviour on the unsuccessful creation of a stack allowing
# CloudFormation to clean up, or do nothing in the event of an unsuccessful
# deployment
# In this case, if on_create_failure is set to "DELETE", it will clean up the stack if
# it fails to create
- name: create stack which will delete on creation failure
  cloudformation:
    stack_name: my_stack
    state: present
    template_url: https://s3.amazonaws.com/my-bucket/cloudformation.template
    on_create_failure: DELETE

Значения возврата

Общие значения возврата описаны здесь, следующие — поля, уникальные для этого модуля:

Ключ Возвращаемое Описание
события
список
всегда
Последние события в журнале событий Cloudformation. В некоторых случаях это может быть из предыдущего выполнения.

Пример:
['StackEvent AWS::CloudFormation::Stack stackname UPDATE_COMPLETE', 'StackEvent AWS::CloudFormation::Stack stackname UPDATE_COMPLETE_CLEANUP_IN_PROGRESS']
лог
список
всегда
Логи отладки. Полезны при модификации или поиске ошибки.

Пример:
['обновление стека']
выходы_стека
словарь
состояние == present
Словарь ключ:значение всех текущих выходов стека. Если выходов стека нет, словарь пустой.

Пример:
{'MySg': 'AnsibleModuleTestYAML-CFTestSg-C8UVS567B6NS'}
ресурсы_стека
список
состояние == present
Ресурсы стека AWS и их состояние. Список словарей, по одному словарю на ресурс.

Пример:
[{'last_updated_time': '2016-10-11T19:40:14.979000+00:00', 'logical_resource_id': 'CFTestSg', 'physical_resource_id': 'cloudformation2-CFTestSg-16UQ4CYQ57O9F', 'resource_type': 'AWS::EC2::SecurityGroup', 'status': 'UPDATE_COMPLETE', 'status_reason': None}]


Статус

  • Этот модуль гарантирует обратную совместимость изменений интерфейса в будущем. [stableinterface]
  • Этот модуль поддерживается основной командой Ansible. [core]

Поддержка Red Hat

Дополнительную информацию о поддержке этого модуля Red Hat можно найти в этой статье базы знаний Red Hat.

Авторы

  • James S. Martin (@jsmartin)

Подсказка

Если вы заметите какие-либо проблемы в этом документе, вы можете отредактировать этот документ, чтобы улучшить его.

© 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/modules/cloudformation_module.html

Spec-Zone.ru

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