cloudformation - Создание или удаление стека AWS CloudFormation
Описание
- Запускает или обновляет стек AWS CloudFormation и ожидает его завершения.
Требования
Ниже перечислены требования к хосту, на котором выполняется данный модуль.
- boto
- boto3
- botocore>=1.4.57
- python >= 2.6
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| aws_access_key | Значение по умолчанию: None | Ключ доступа AWS. Если не задан, используется значение переменной окружения AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY или EC2_ACCESS_KEY. Псевдонимы: ec2_access_key, access_key |
| aws_secret_key | Значение по умолчанию: None | Секретный ключ AWS. Если не задан, используется значение переменной окружения AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY или EC2_SECRET_KEY. Псевдонимы: ec2_secret_key, secret_key |
| changeset_name (добавлено в 2.4) | Значение по умолчанию: None | Имя, присваиваемое набору изменений при создании набора изменений, используется только когда create_changeset равен true. По умолчанию имя генерируется с префиксом Ansible-STACKNAME, основываясь на входных параметрах. См. документацию AWS по наборам изменений http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html
|
| create_changeset (добавлено в 2.4) | Значение по умолчанию: no | Если стек уже существует, создается набор изменений вместо непосредственного применения изменений. См. документацию AWS по наборам изменений http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html. ПРЕДУПРЕЖДЕНИЕ: если стек не существует, он будет создан без набора изменений. Если состояние отсутствует, стек будет удален немедленно без набора изменений. |
| disable_rollback |
| Если стек не сформируется, откат удалит стек |
| ec2_url | Значение по умолчанию: None | URL для подключения к EC2 или вашему облаку Eucalyptus (по умолчанию модуль будет использовать конечные точки EC2). Игнорируется для модулей, где требуется регион. Должен быть указан для всех остальных модулей, если регион не используется. Если не задан, используется значение переменной окружения EC2_URL, если таковая имеется. |
| notification_arns (добавлено в 2.0) | Значение по умолчанию: None | ARN тем SNS (Simple Notification Service), в которые будут публиковаться события, связанные со стеком. |
| profile (добавлено в 1.6) | Значение по умолчанию: None | Использует профиль 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) | Значение по умолчанию: None | Роль, которую AWS CloudFormation принимает для создания стека. См. документацию AWS CloudFormation по ролям сервиса http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html
|
| security_token (добавлено в 1.6) | Значение по умолчанию: None | Токен безопасности AWS STS. Если не задан, используется значение переменной окружения AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN. Псевдонимы: access_token |
| stack_name обязательно | имя стека cloudformation | |
| stack_policy (добавлено в 1.9) | Значение по умолчанию: None | путь к политике стека cloudformation. Политика не может быть удалена после размещения, но может быть изменена. (например, [разрешить все обновления](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html#d0e9051) |
| state |
| Если состояние "present", стек будет создан. Если состояние "present" и если стек существует, а шаблон изменился, он будет обновлён. Если состояние "absent", стек будет удалён. |
| tags (добавлено в 1.4) | Значение по умолчанию: None | Словарь тегов для сопоставления со стеком и его ресурсами во время создания стека. Может быть обновлён позже, обновление тегов удаляет предыдущие записи. |
| template | Значение по умолчанию: None | Локальный путь к шаблону 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 | Значение по умолчанию: {} | список словарей со всеми переменными шаблона для стека |
| 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 (добавлено в 1.5) |
| При значении "no", сертификаты 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
# 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
Значения возврата
Общие значения возврата описаны здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| 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 | Словарь key:value всех текущих выходов стека. Если выходов стека нет, то это пустой словарь. Пример: {'MySg': 'AnsibleModuleTestYAML-CFTestSg-C8UVS567B6NS'} |
| stack_resources список | state == present | Ресурсы стека AWS и их статус. Список словарей, по одному словарю на ресурс. Пример: [{'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'}] |
Статус
Этот модуль помечен как stableinterface, что означает, что авторы этого модуля гарантируют, что не будет внесено никаких обратных несовместимых изменений интерфейса.
Поддержка
Для получения дополнительной информации о поддержке этого модуля 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.5/modules/cloudformation_module.html