cloudformation - Создание или удаление стека AWS CloudFormation
Обзор
- Запускает или обновляет стек AWS CloudFormation и ожидает его завершения.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- boto
- boto3
- botocore>=1.4.57
- 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 | |
| changeset_name (добавлен в 2.4) | Имя набора изменений при создании набора изменений, используется только при create_changeset = true. По умолчанию генерируется имя, начинающееся с Ansible-STACKNAME, на основе входных параметров. См. документацию AWS по наборам изменений http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html
| |
| create_changeset (добавлен в 2.4) | Значение по умолчанию: "нет" | Если стек уже существует, создайте набор изменений вместо прямого применения изменений. См. документацию AWS по наборам изменений http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html. ВНИМАНИЕ: если стек не существует, он будет создан без набора изменений. Если состояние отсутствует, стек будет немедленно удален без набора изменений. |
| create_timeout (добавлен в 2.6) | Значение по умолчанию: null | Время (в минутах), которое может пройти, прежде чем статус стека станет CREATE_FAILED |
| disable_rollback bool |
| Если стек не удаётся сформировать, откат удалит стек |
| ec2_url | URL для подключения к EC2 или вашему облаку Eucalyptus (по умолчанию модуль будет использовать конечные точки EC2). Игнорируется для модулей, где требуется регион. Должен быть указан для всех других модулей, если регион не используется. Если не задан, используется значение переменной окружения EC2_URL, если она есть. | |
| notification_arns (добавлен в 2.0) | ARN тем SNS (Simple Notification Service), в которые будут публиковаться события, связанные со стеком. | |
| profile (добавлен в 1.6) | Использует профиль 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 по роли службы http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html
| |
| security_token (добавлен в 1.6) | Токен безопасности AWS STS. Если не задан, используется значение переменной окружения AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN. псевдонимы: access_token | |
| stack_name обязательно | имя стека cloudformation | |
| stack_policy (добавлен в 1.9) | путь к политике стека cloudformation. Политику нельзя удалить после её размещения, но её можно изменить. (например, [разрешить все обновления](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html#d0e9051) | |
| state |
| Если состояние «present», стек будет создан. Если состояние «present» и если стек существует, а шаблон изменился, он будет обновлен. Если состояние «absent», стек будет удален. |
| tags (добавлен в 1.4) | Словарь тегов для ассоциации со стеком и его ресурсами во время создания стека. Может быть обновлен позже, обновление тегов удаляет предыдущие записи. | |
| 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 (добавлен в 2.5) | Включить или отключить защиту от завершения работы стека. Работает только с botocore >= 1.7.18. | |
| validate_certs bool (добавлен в 1.5) |
| При установке в «нет», сертификаты SSL не будут проверены для версий boto >= 2.6.0. |
Примечания
Примечание
- С версии 2.3, мигрировано на boto3 для включения новых функций. Для соответствия существующему поведению, разбор YAML выполняется в модуле, а не передаётся в AWS в формате YAML. Это изменится (на самом деле, это может измениться до выхода версии 2.3).
- Если параметры не установлены внутри модуля, следующие переменные среды могут быть использованы в порядке убывания приоритета
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), если учётные данные не предоставлены. См. http://boto.readthedocs.org/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 список | всегда | Отладочные журналы. Полезны при модификации или поиске ошибки. Пример: ['обновление стека'] |
| 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, что означает, что разработчики этого модуля гарантируют, что не будет внесено никаких обратных несовместимых изменений в интерфейс.
Техническое обслуживание
Этот модуль помечен как core, что означает, что он поддерживается командой Ansible Core. См. Поддержка и техническое обслуживание модулей для получения дополнительной информации.
Список других модулей, которые также поддерживаются командой Ansible Core, см. здесь.
Поддержка
Дополнительную информацию о поддержке этого модуля компанией 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.6/modules/cloudformation_module.html