Spec-Zone.ru › Ansible 2.11

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
булево
    Варианты:
  • no
  • yes
Включение или выключение защиты от завершения работы стека. Работает только с botocore >= 1.7.18.
validate_certs
булево
    Варианты:
  • no
  • yes ←
При значении "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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API