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. ПРЕДУПРЕЖДЕНИЕ: если стека не существует, он будет создан без набора изменений. Если состояние отсутствует, стек будет удален немедленно без набора изменений. | ||
| disable_rollback | нет | false |
| Если формирование стека завершится неудачно, откат удалит стек |
| ec2_url | нет | URL для подключения к EC2 или вашему облаку Eucalyptus (по умолчанию модуль использует конечные точки EC2). Игнорируется для модулей, где требуется регион. Должен быть указан для всех остальных модулей, если регион не используется. Если не задан, используется значение переменной окружения EC2_URL, если она есть. | ||
| notification_arns (добавлено в 2.0)
| нет | Уникальные идентификаторы тем Simple Notification Service (SNS) для публикации событий, связанных со стеком. | ||
| 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 | да | Если state = "present", стек будет создан. Если state = "present", стек существует, а шаблон изменён, он будет обновлён. Если state = "absent", стек будет удалён. | ||
| tags (добавлено в 1.4)
| нет | Словарь тегов для связывания со стеком и его ресурсами во время создания стека. Могут быть обновлены позже, обновление тегов удаляет предыдущие записи. | ||
| template | нет | Локальный путь к шаблону cloudformation. Это должен быть полный путь к файлу относительно рабочей директории. При использовании ролей это может выглядеть как "roles/cloudformation/files/cloudformation-example.json". Если 'state' = 'present' и стек ещё не существует, необходимо указать либо 'template', либо 'template_url' (но не оба). Если 'state' = 'present', стек существует, и ни 'template', ни 'template_url' не указаны, будет повторно использован предыдущий шаблон. | ||
| template_format (добавлено в 2.0)
| нет | json |
| (устарело) Для локальных шаблонов, позволяет указать формат json или yaml. Шаблоны теперь передаются в CloudFormation в сыром виде независимо от формата. Этот параметр игнорируется начиная с Ansible 2.3. |
| template_parameters | нет | список словарей всех переменных шаблона для стека | ||
| template_url (добавлено в 2.0)
| нет | Местоположение файла, содержащего тело шаблона. URL должен указывать на шаблон (максимальный размер 307 200 байт) в ведре S3 в том же регионе, что и стек. Если 'state' = 'present' и стек ещё не существует, необходимо указать либо 'template', либо 'template_url' (но не оба). Если 'state' = 'present', стек существует, и ни 'template', ни 'template_url' не указаны, будет повторно использован предыдущий шаблон. | ||
| validate_certs (добавлено в 1.5)
| нет | да |
| Если установлено в "нет", сертификаты SSL не будут проверены для версий boto >= 2.6.0. |
Примеры
# Basic task example
- name: launch ansible cloudformation example
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: launch ansible cloudformation example
cloudformation:
stack_name: "ansible-cloudformation"
state: "present"
region: "us-east-1"
disable_rollback: true
template: "roles/cloudformation/files/cloudformation-example.json"
template_parameters:
KeyName: "jmartin"
DiskType: "ephemeral"
InstanceType: "m1.small"
ClusterSize: 3
tags:
Stack: "ansible-cloudformation"
# Removal example
- name: tear down old deployment
cloudformation:
stack_name: "ansible-cloudformation-old"
state: "absent"
# Use a template from a URL
- name: launch ansible cloudformation example
cloudformation:
stack_name: "ansible-cloudformation"
state: present
region: us-east-1
disable_rollback: true
template_url: https://s3.amazonaws.com/my-bucket/cloudformation.template
args:
template_parameters:
KeyName: jmartin
DiskType: ephemeral
InstanceType: m1.small
ClusterSize: 3
tags:
Stack: ansible-cloudformation
# Use a template from a URL, and assume a role to execute
- name: launch ansible cloudformation example with role assumption
cloudformation:
stack_name: "ansible-cloudformation"
state: present
region: us-east-1
disable_rollback: true
template_url: https://s3.amazonaws.com/my-bucket/cloudformation.template
role_arn: 'arn:aws:iam::123456789012:role/cloudformation-iam-role'
args:
template_parameters:
KeyName: jmartin
DiskType: ephemeral
InstanceType: m1.small
ClusterSize: 3
tags:
Stack: ansible-cloudformation
Возвращаемые значения
Общие возвращаемые значения описаны здесь Возвращаемые значения, следующие поля уникальны для данного модуля:
| имя | описание | возвращается | тип | пример |
|---|---|---|---|---|
| events | Последние события в журнале событий CloudFormation. В некоторых случаях это могут быть события из предыдущего выполнения. | всегда | список | ['StackEvent AWS::CloudFormation::Stack stackname UPDATE_COMPLETE', 'StackEvent AWS::CloudFormation::Stack stackname UPDATE_COMPLETE_CLEANUP_IN_PROGRESS'] |
| log | Отладочные логи. Полезны при модификации или поиске ошибки. | всегда | список | ['обновление стека'] |
| stack_outputs | Словарь ключ:значение всех текущих выходных данных стека. Если выходных данных стека нет, это пустой словарь. | состояние == present | словарь | {'MySg': 'AnsibleModuleTestYAML-CFTestSg-C8UVS567B6NS'} |
| stack_resources | Ресурсы стека AWS и их состояние. Список словарей, по одному словарю на ресурс. | состояние == present | список | [{'status': 'UPDATE_COMPLETE', 'physical_resource_id': 'cloudformation2-CFTestSg-16UQ4CYQ57O9F', 'logical_resource_id': 'CFTestSg', 'status_reason': None, 'last_updated_time': '2016-10-11T19:40:14.979000+00:00', 'resource_type': 'AWS::EC2::SecurityGroup'}] |
Примечания
Примечание
- Начиная с версии 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
Статус
Этот модуль помечен как stableinterface, что означает, что авторы этого модуля гарантируют, что не будут вноситься обратные несовместимые изменения в интерфейс.
Информация о техническом обслуживании
Для получения дополнительной информации о поддержке этого модуля Red Hat, пожалуйста, обратитесь к этому knowledge base article<https://access.redhat.com/articles/rhel-top-support-policies>
Для помощи в разработке модулей, если вы заинтересованы, пожалуйста, прочитайте Информация о сообществе и вклад, Тестирование Ansible и Разработка модулей.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/cloudformation_module.html