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 Bundle) для проверки SSL-сертификатов. Используется только для модулей на основе boto3. Примечание: CA Bundle считывается на стороне модуля и, возможно, его нужно явно скопировать из контроллера, если модуль не запускается локально. | |
| 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 | Количество попыток повтора операции. Механизм ограничения скорости AWS API приводит к ошибкам в модуле 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-вызовов «ресурс:действие», сделанных во время задачи, выведя набор в ключ task results с именем resource_actions. Используйте обратный вызов aws_resource_action, чтобы вывести полный список, сделанный во время выполнения книги команд. |
| disable_rollback логическое значение |
| Если стек не удается создать, откат удалит стек. |
| ec2_url строка | URL для подключения к EC2 или вашему облаку Eucalyptus (по умолчанию модуль будет использовать конечные точки EC2). Игнорируется для модулей, где требуется регион. Должен быть указан для всех других модулей, если регион не используется. Если не задан, используется значение переменной окружения EC2_URL, если она есть. псевдонимы: aws_endpoint_url, endpoint_url | |
| events_limit целое число | По умолчанию: 200 | Максимальное количество событий CloudFormation, которые нужно извлечь из стека при его создании или обновлении. |
| notification_arns строка | Список, разделенный запятыми, ARN тем SNS (Simple Notification Service), для публикации событий, связанных со стеком. | |
| 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 по роли сервиса 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 булево |
| При значении "no" сертификаты 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–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/amazon/aws/cloudformation_module.html