amazon.aws.cloudformation – Создание или удаление стека AWS CloudFormation
Примечание
Этот плагин является частью коллекции amazon.aws (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install amazon.aws.
Для использования в книге задач укажите: amazon.aws.cloudformation.
Новый в версии 1.0.0: коллекции amazon.aws
Обзор
- Запускает или обновляет стек 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. Если задан параметр profile, этот параметр игнорируется. Передача параметров aws_access_key и profile одновременно устарела и параметры будут взаимно исключающими после 2022-06-01. псевдонимы: ec2_access_key, access_key | |
| aws_ca_bundle путь | Расположение пакета CA для проверки сертификатов SSL. Используется только для модулей на основе boto3. Примечание: Пакет CA читается со стороны модуля и может потребоваться его явное копирование из контроллера, если модуль не выполняется локально. | |
| aws_config словарь | Словарь для изменения конфигурации botocore. Параметры можно найти по адресу https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config. Для модулей boto используется только ключ 'user_agent'. Дополнительную информацию о конфигурации boto см. по адресу http://boto.cloudhackers.com/en/latest/boto_config_tut.html#boto. | |
| aws_secret_key строка | Секретный ключ AWS. Если не задан, используется значение переменной окружения AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY или EC2_SECRET_KEY. Если задан параметр profile, этот параметр игнорируется. Передача параметров aws_secret_key и profile одновременно устарела и параметры будут взаимно исключающими после 2022-06-01. псевдонимы: ec2_secret_key, secret_key | |
| backoff_delay целое число | По умолчанию: 3 | Количество секунд ожидания следующей попытки. |
| backoff_max_delay целое число | По умолчанию: 30 | Максимальное время ожидания между попытками. |
| backoff_retries целое число | По умолчанию: 10 | Количество попыток повтора операции. Механизм ограничения скорости API AWS приводит к сбоям модуля CloudFormation, поэтому требуется несколько попыток повтора. |
| capabilities список / элементы=строка | По умолчанию: ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"] | Укажите возможности, которые содержит шаблон стека. Допустимые значения CAPABILITY_IAM, CAPABILITY_NAMED_IAM и CAPABILITY_AUTO_EXPAND. |
| changeset_name строка | Имя, задаваемое набору изменений при создании набора изменений. Используется только при create_changeset=true. По умолчанию генерируется имя, начинающееся с Ansible-STACKNAME, на основе входных параметров. Дополнительную информацию см. в документации AWS по наборам изменений https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html
| |
| create_changeset логическое значение |
| Если стек уже существует, создайте набор изменений вместо прямого применения изменений. См. документацию AWS по наборам изменений https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html. ПРЕДУПРЕЖДЕНИЕ: если стек не существует, он будет создан без набора изменений. Если state=absent, стек будет удален немедленно без набора изменений. |
| create_timeout целое число | Время (в минутах), которое может пройти, прежде чем статус стека станет CREATE_FAILED | |
| debug_botocore_endpoint_logs логическое значение |
| Используйте логирование botocore.endpoint для анализа уникальных (а не общих) API-вызовов «ресурс:действие», выполненных во время задачи, выводите набор в ключ resource_actions результатов задачи. Используйте обратный вызов aws_resource_action для вывода общего списка, выполненного во время выполнения playbook. Также может быть использована переменная среды ANSIBLE_DEBUG_BOTOCORE_LOGS. |
| disable_rollback логическое значение |
| Если формирование стека завершится неудачно, откат удалит стек. |
| ec2_url строка | URL для подключения к EC2 или вашему облаку Eucalyptus (по умолчанию модуль использует конечные точки EC2). Игнорируется для модулей, где требуется регион. Должен быть указан для всех остальных модулей, если регион не используется. Если не задан, используется значение переменной среды EC2_URL, если она есть. псевдонимы: aws_endpoint_url, endpoint_url | |
| events_limit целое число | По умолчанию: 200 | Максимальное количество событий CloudFormation, которые нужно извлечь из стека при создании или обновлении. |
| notification_arns строка | Список простых ARNs тем уведомлений службы (SNS) для публикации событий, связанных со стеком. | |
| on_create_failure строка |
| Действие, которое нужно предпринять при неудачном создании стека. Несовместимо с опцией disable_rollback. |
| profile строка | Использует профиль boto. Работает только с boto >= 2.24.0. Использование profile переопределяет aws_access_key, aws_secret_key и security_token, и поддержка одновременной передачи их с profile устарела. aws_access_key, aws_secret_key и security_token будут взаимно исключающими с profile после 2022-06-01. псевдонимы: aws_profile | |
| 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. Если задан параметр profile, этот параметр игнорируется. Передача параметров security_token и profile одновременно устарела и параметры будут взаимно исключающими после 2022-06-01. псевдонимы: aws_security_token, access_token | |
| stack_name строка / обязательно | Имя стека CloudFormation. | |
| stack_policy строка | Путь к политике стека CloudFormation. Политика не может быть удалена после размещения, но может быть изменена. Например, разрешить все обновления https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html#d0e9051
| |
| state строка |
| Если state=present, стек будет создан. Если state=present, если стек существует и шаблон изменён, он будет обновлён. Если state=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 строка | Тело шаблона. Используйте его для передачи фактического тела шаблона CloudFormation. Если state=present и стек ещё не существует, необходимо указать template, template_body или template_url (но только один из них). Если state=present, стек существует, и ни template, ни template_body, ни template_url не указаны, предыдущий шаблон будет повторно использован. | |
| template_format строка | Этот параметр игнорируется с Ansible 2.3 и будет удален после 2022-06-01. Шаблоны теперь передаются в CloudFormation в сыром виде независимо от формата. |
| template_parameters словарь | Значение по умолчанию: {} | Список словарей всех параметров шаблона для стека. Значение может быть строкой или словарем. Словарь может использоваться для установки дополнительных атрибутов параметров шаблона, например, UsePreviousValue (см. пример). |
| template_url строка | Расположение файла, содержащего тело шаблона. URL должен указывать на шаблон (максимальный размер 307 200 байт), расположенный в ведре S3 в той же области, что и стек. Если state=present и стек ещё не существует, необходимо указать template, template_body или template_url (но только один из них). Если state=present, стек существует, и ни template, ни template_body, ни template_url не указаны, будет использован предыдущий шаблон. | |
| termination_protection логическое значение |
| Включить или отключить защиту от завершения стека. Работает только с botocore >= 1.7.18. |
| validate_certs логическое значение |
| При значении "нет" сертификаты SSL не будут проверены для версий boto >= 2.6.0. |
Примечания
Примечание
- Функциональность CloudFormation часто меняется, и этот модуль пытается следовать этим изменениям. Это означает, что ваша версия botocore должна быть актуальной. Указанная в требованиях версия — это самая старая версия, которая работает с модулем в целом. Некоторые функции могут потребовать более новые версии, и мы не указываем минимальную версию для каждой функции. Вместо того, чтобы полагаться на минимальную версию, поддерживайте botocore в актуальном состоянии. AWS постоянно выпускает новые функции и исправляет ошибки.
- Если параметры не заданы в модуле, можно использовать следующие переменные среды в порядке убывания приоритета
AWS_URLилиEC2_URL,AWS_PROFILEилиAWS_DEFAULT_PROFILE,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,AWS_CA_BUNDLE - Ansible использует конфигурационный файл boto (как правило, ~/.boto), если учетные данные не предоставлены. См. https://boto.readthedocs.io/en/latest/boto_config_tut.html
-
AWS_REGIONилиEC2_REGIONобычно используются для указания региона AWS, когда это необходимо, но это также можно настроить в файле конфигурации boto
Примеры
- name: create a cloudformation stack
amazon.aws.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
amazon.aws.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
amazon.aws.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
amazon.aws.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
amazon.aws.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.
- amazon.aws.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
amazon.aws.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
amazon.aws.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
amazon.aws.cloudformation:
stack_name: my_stack
state: present
template_url: https://s3.amazonaws.com/my-bucket/cloudformation.template
on_create_failure: DELETE
Значения возврата
Общие значения возврата документированы здесь, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| change_set_id строка | state=present и create_changeset=true | Идентификатор набора изменений стека, если он был создан Пример: arn:aws:cloudformation:us-east-1:012345678901:changeSet/Ansible-StackName-f4496805bd1b2be824d1e315c6884247ede41eb0 |
| events список / элементы=строка | всегда | Последние события в журнале событий CloudFormation. В некоторых случаях это может быть из предыдущего выполнения. Пример: ['StackEvent AWS::CloudFormation::Stack stackname UPDATE_COMPLETE', 'StackEvent AWS::CloudFormation::Stack stackname UPDATE_COMPLETE_CLEANUP_IN_PROGRESS'] |
| log список / элементы=строка | всегда | Логи отладки. Полезны при модификации или поиске ошибки. Пример: ['updating stack'] |
| stack_outputs словарь | state == present | Словарь пар ключ:значение всех текущих выходных данных стека. Если выходных данных нет, это пустой словарь. Пример: {'MySg': 'AnsibleModuleTestYAML-CFTestSg-C8UVS567B6NS'} |
| stack_resources список / элементы=строка | state == 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}] |
Авторы
- 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.10/collections/amazon/aws/cloudformation_module.html