Nota

Este complemento es parte del colección amazon.aws (versión 1.3.0).

Para instalarlo use: ansible-galaxy collection install amazon.aws.

Para usarlo en un libro de jugadas, especifique: amazon.aws.cloudformation.

Nuevo en la versión 1.0.0: de amazon.aws

  • Sinopsis
  • Requisitos
  • Parámetros
  • Notas
  • Ejemplos de
  • Valores devueltos

Sinopsis

  • Inicia o actualiza una pila de AWS CloudFormation y espera a que se complete.

Requisitos

Los siguientes requisitos son necesarios en el host que ejecuta este módulo.

  • boto
  • boto3
  • botocore> = 1.5.45
  • pitón> = 2.6

Parámetros

Parámetro Opciones / Valores predeterminados Comentarios
aws_access_key cuerda Clave de acceso de AWS. Si no se establece, se utiliza el valor de la variable de entorno AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY o EC2_ACCESS_KEY. Si perfil se establece este parámetro se ignora. Pasando el aws_access_key y perfil options al mismo tiempo ha quedado obsoleto y las opciones se harán mutuamente excluyentes después de 2022-06-01.

alias: ec2_access_key, access_key
aws_ca_bundle sendero La ubicación de un paquete de CA que se utilizará al validar certificados SSL. Solo se utiliza para módulos basados ​​en boto3. Nota: El paquete CA se lee en el lado del “módulo” y es posible que deba copiarse explícitamente del controlador si no se ejecuta localmente.
aws_config diccionario Un diccionario para modificar la configuración de botocore. Los parámetros se pueden encontrar en https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config. Solo se usa la clave ‘user_agent’ para los módulos boto. Ver http://boto.cloudhackers.com/en/latest/boto_config_tut.html#boto para más configuración de boto.
aws_secret_key cuerda Clave secreta de AWS. Si no se establece, se utiliza el valor de la variable de entorno AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY o EC2_SECRET_KEY. Si perfil se establece este parámetro se ignora. Pasando el aws_secret_key y perfil options al mismo tiempo ha quedado obsoleto y las opciones se harán mutuamente excluyentes después de 2022-06-01.

alias: ec2_secret_key, secret_key
backoff_delay entero Defecto:
3
Número de segundos para esperar el próximo reintento.
backoff_max_delay entero Defecto:
30
Cantidad máxima de tiempo de espera entre reintentos.
backoff_retries entero Defecto:
10
Número de veces para reintentar la operación. El mecanismo de aceleración de la API de AWS falla en el módulo de CloudFormation, por lo que tenemos que volver a intentarlo un par de veces.
capacidades lista / elementos = cadena Defecto:
[“CAPABILITY_IAM”, “CAPABILITY_NAMED_IAM”]
Especifique las capacidades que contiene la plantilla de pila. Los valores válidos son CAPABILITY_IAM, CAPABILITY_NAMED_IAM y CAPABILITY_AUTO_EXPAND.
changeset_name cuerda Nombre que se le da al conjunto de cambios al crear un conjunto de cambios. Solo se usa cuando create_changeset = verdadero. De forma predeterminada, se genera un nombre con el prefijo Ansible-STACKNAME en función de los parámetros de entrada. Consulte los documentos de AWS Change Sets para obtener más información. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html
create_changeset booleano
    Opciones:

  • no
Si la pila ya existe, cree un conjunto de cambios en lugar de aplicar los cambios directamente. Consulte los documentos de AWS Change Sets https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html. ADVERTENCIA: si la pila no existe, se creará sin conjunto de cambios. Si estado = ausente, la pila se eliminará inmediatamente sin conjunto de cambios.
create_timeout entero La cantidad de tiempo (en minutos) que puede pasar antes de que el estado de la pila se convierta en CREATE_FAILED
debug_botocore_endpoint_logs booleano
    Opciones:

  • no
Utilice un registrador botocore.endpoint para analizar las llamadas API “resource: action” únicas (en lugar de totales) realizadas durante una tarea, generando el conjunto en la clave resource_actions en los resultados de la tarea. Utilice la devolución de llamada aws_resource_action para generar la lista total realizada durante un libro de jugadas. También se puede utilizar la variable de entorno ANSIBLE_DEBUG_BOTOCORE_LOGS.
disable_rollback booleano
    Opciones:

  • no
Si una pila no se forma, la reversión eliminará la pila.
ec2_url cuerda Url que se utilizará para conectarse a EC2 o su nube Eucalyptus (de forma predeterminada, el módulo utilizará puntos finales EC2). Ignorado para módulos donde se requiere región. Debe especificarse para todos los demás módulos si no se utiliza la región. Si no se establece, se utiliza el valor de la variable de entorno EC2_URL, si existe.

alias: aws_endpoint_url, endpoint_url
events_limit entero Defecto:
200
Número máximo de eventos de CloudFormation para obtener de una pila al crearla o actualizarla.
notificaciones_arns cuerda Una lista separada por comas de ARN de temas del Servicio de notificación simple (SNS) para publicar eventos relacionados con la pila.
on_create_failure cuerda
    Opciones:

  • HACER NADA
  • RETROCEDER
  • ELIMINAR
Acción a tomar en caso de falla en la creación de la pila. Incompatible con el disable_rollback opción.
perfil cuerda Utiliza un perfil de boto. Solo funciona con boto> = 2.24.0. Utilizando perfil anulará aws_access_key, aws_secret_key y token de seguridad y apoyo para pasarlos al mismo tiempo que perfil ha quedado obsoleto.
aws_access_key, aws_secret_key y token de seguridad se hará mutuamente excluyente con perfil después de 2022-06-01.

alias: aws_profile
región cuerda La región de AWS que se utilizará. Si no se especifica, se utiliza el valor de la variable de entorno AWS_REGION o EC2_REGION, si existe. Ver http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region

alias: aws_region, ec2_region

role_arn cuerda El rol que asume AWS CloudFormation para crear la pila. Consulte los documentos de roles de servicio de AWS CloudFormation. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html
token de seguridad cuerda Token de seguridad de AWS STS. Si no se establece, se utiliza el valor de la variable de entorno AWS_SECURITY_TOKEN o EC2_SECURITY_TOKEN. Si perfil se establece este parámetro se ignora. Pasando el token de seguridad y perfil options al mismo tiempo ha quedado obsoleto y las opciones se harán mutuamente excluyentes después de 2022-06-01.

alias: aws_security_token, access_token
stack_name cuerda / requerido Nombre de la pila de CloudFormation.
stack_policy cuerda La ruta de la política de pila de CloudFormation. Una política no se puede eliminar una vez colocada, pero se puede modificar. por ejemplo, permitir todas las actualizaciones https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html#d0e9051
estado cuerda
    Opciones:

  • regalo
  • ausente
Si estado = presente, se creará la pila. Si estado = presente y si la pila existe y la plantilla ha cambiado, se actualizará. Si estado = ausente, se eliminará la pila.
etiquetas diccionario Diccionario de etiquetas para asociar con la pila y sus recursos durante la creación de la pila. Se puede actualizar más tarde, la actualización de etiquetas elimina las entradas anteriores.
plantilla sendero La ruta local de la plantilla de CloudFormation. Esta debe ser la ruta completa al archivo, relativa al directorio de trabajo. Si usa roles, esto puede parecer roles/cloudformation/files/cloudformation-example.json. Si estado = presente y la pila tampoco existe todavía plantilla, template_body o template_url debe especificarse (pero solo uno de ellos). Si estado = presente, la pila existe, y ninguno plantilla, template_body ni template_url se especifican, se reutilizará la plantilla anterior.
template_body cuerda Cuerpo de la plantilla. Use esto para pasar el cuerpo real de la plantilla de CloudFormation. Si estado = presente y la pila tampoco existe todavía plantilla, template_body o template_url debe especificarse (pero solo uno de ellos). Si estado = presente, la pila existe, y ninguno plantilla, template_body ni template_url se especifican, se reutilizará la plantilla anterior.
template_format cuerda Este parámetro se ignora desde Ansible 2.3 y se eliminará después de 2022-06-01. Las plantillas ahora se pasan sin procesar a CloudFormation independientemente del formato.
template_parameters diccionario Defecto:
{}
Una lista de hashes de todas las variables de plantilla para la pila. El valor puede ser una cadena o un dict. Dict se puede utilizar para establecer atributos de parámetros de plantilla adicionales como UsePreviousValue (ver ejemplo).
template_url cuerda Ubicación del archivo que contiene el cuerpo de la plantilla. La URL debe apuntar a una plantilla (tamaño máximo de 307.200 bytes) ubicada en un depósito de S3 en la misma región que la pila. Si estado = presente y la pila tampoco existe todavía plantilla, template_body o template_url debe especificarse (pero solo uno de ellos). Si estado = presente, la pila existe, y ninguno plantilla, template_body ni template_url se especifican, se reutilizará la plantilla anterior.
termination_protection booleano
    Opciones:

  • no
Habilite o deshabilite la protección de terminación en la pila. Solo funciona con botocore> = 1.7.18.
validate_certs booleano
    Opciones:

  • no
Cuando se establece en “no”, los certificados SSL no se validarán para las versiones de boto> = 2.6.0.

Notas

Nota

  • Las características de CloudFormation cambian con frecuencia y este módulo intenta mantenerse al día. Eso significa que su versión de botocore debería ser nueva. La versión que aparece en los requisitos es la versión más antigua que funciona con el módulo en su totalidad. Algunas funciones pueden requerir versiones recientes y no identificamos una versión mínima para cada función. En lugar de depender de la versión mínima, mantenga botocore actualizado. AWS siempre publica funciones y corrige errores.
  • Si los parámetros no se establecen dentro del módulo, las siguientes variables de entorno se pueden usar en orden decreciente de precedencia AWS_URL o EC2_URL, AWS_PROFILE o AWS_DEFAULT_PROFILE, AWS_ACCESS_KEY_ID o AWS_ACCESS_KEY o EC2_ACCESS_KEY, AWS_SECRET_ACCESS_KEY o AWS_SECRET_KEY o EC2_SECRET_KEY, AWS_SECURITY_TOKEN o EC2_SECURITY_TOKEN, AWS_REGION o EC2_REGION, AWS_CA_BUNDLE
  • Ansible usa el archivo de configuración boto (típicamente ~ / .boto) si no se proporcionan credenciales. Ver https://boto.readthedocs.io/en/latest/boto_config_tut.html
  • AWS_REGION o EC2_REGION se puede usar normalmente para especificar la región de AWS, cuando sea necesario, pero esto también se puede configurar en el archivo de configuración boto

Ejemplos de

- 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

Valores devueltos

Los valores de retorno comunes están documentados aquí, los siguientes son los campos exclusivos de este módulo:

Llave Devuelto Descripción
change_set_id cuerda estado = presente y create_changeset = verdadero El ID del conjunto de cambios de pila si se creó uno
Muestra: arn: aws: cloudformation: us-east-1: 012345678901: changeSet / Ansible-StackName-f4496805bd1b2be824d1e315c6884247ede41eb0
eventos lista / elementos = cadena siempre Eventos más recientes en el registro de eventos de CloudFormation. Esto puede ser de una ejecución anterior en algunos casos.
Muestra: [‘StackEvent AWS::CloudFormation::Stack stackname UPDATE_COMPLETE’, ‘StackEvent AWS::CloudFormation::Stack stackname UPDATE_COMPLETE_CLEANUP_IN_PROGRESS’]
Iniciar sesión lista / elementos = cadena siempre Registros de depuración. Útil para modificar o encontrar un error.
Muestra: [‘updating stack’]
stack_outputs diccionario estado == presente Un diccionario clave: valor de todas las salidas de pila definidas actualmente. Si no hay salidas de pila, es un diccionario vacío.
Muestra: {‘MySg’: ‘AnsibleModuleTestYAML-CFTestSg-C8UVS567B6NS’}
stack_resources lista / elementos = cadena estado == presente Recursos de pila de AWS y su estado. Lista de diccionarios, un diccionario por recurso.
Muestra: [{‘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}]

Autores

  • James S. Martin (@jsmartin)