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:action», выполняемых во время задачи, выводя набор в ключ task results. Используйте обратный вызов aws_resource_action для вывода общего списка, созданного во время выполнения книги сценариев. Переменная окружения ANSIBLE_DEBUG_BOTOCORE_LOGS также может быть использована. |
| disable_rollback логическое значение |
| Если стек не удается сформировать, откат удалит стек |
| ec2_url строка | URL для подключения к EC2 или вашему облаку Eucalyptus (по умолчанию модуль будет использовать конечные точки EC2). Игнорируется для модулей, где требуется регион. Должен быть указан для всех других модулей, если регион не используется. Если не задан, используется значение переменной окружения EC2_URL, если таковое имеется. | |
| events_limit - добавлено в 2.7 | По умолчанию: 200 | Максимальное количество событий CloudFormation, которые нужно извлечь из стека при создании или обновлении. |
| notification_arns - добавлено в 2.0 | ARNs темы Simple Notification Service (SNS) для публикации событий, связанных со стеком. | |
| 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 - добавлено в 2.3 | Роль, которую 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 - |
| Если 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 - добавлено в 2.5 | Тело шаблона. Используйте его для передачи фактического тела шаблона Cloudformation. Если 'state' = 'present' и стек ещё не существует, необходимо указать 'template', 'template_body' или 'template_url' (только один из них). Если 'state' = 'present', стек существует, и ни 'template', 'template_body' ни 'template_url' не указаны, предыдущий шаблон будет повторно использован. | |
| template_format - добавлено в 2.0 |
| (устарело) Для локальных шаблонов позволяет указать формат json или yaml. Шаблоны теперь передаются в CloudFormation в сыром виде независимо от формата. Этот параметр игнорируется с Ansible 2.3. |
| template_parameters - | Значение по умолчанию: {} | Список хешей всех переменных шаблона для стека. Значение может быть строкой или словарем. Словарь может использоваться для задания дополнительных атрибутов параметров шаблона, например, UsePreviousValue (см. пример). |
| template_url - добавлено в 2.0 | Расположение файла, содержащего тело шаблона. URL должен указывать на шаблон (максимальный размер 307 200 байт), расположенный в ведре S3 в том же регионе, что и стек. Если состояние 'state' равно 'present' и стек еще не существует, необходимо указать либо 'template', либо 'template_body', либо 'template_url' (но только один из них). Если 'state' равен 'present', стек существует, и ни 'template', ни 'template_body', ни 'template_url' не указаны, будет повторно использован предыдущий шаблон. | |
| termination_protection boolean добавлено в 2.5 |
| Включение или выключение защиты от прекращения работы стека. Работает только с botocore >= 1.7.18. |
| validate_certs boolean |
| Если установлено значение "no", сертификаты 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
Возвращаемые значения
Общие возвращаемые значения документированы здесь, следующие — это поля, уникальные для данного модуля:
| Ключ | Возвращаемое | Описание |
|---|---|---|
| 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}] |
Состояние
- Этот модуль гарантированно не будет иметь обратной совместимости в будущих изменениях интерфейса. [stableinterface]
- Этот модуль поддерживается командой Ansible Core. [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.8/modules/cloudformation_module.html