Nota

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

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

Para usarlo en un libro de jugadas, especifique: community.aws.ec2_asg.

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

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

Sinopsis

  • Puede crear o eliminar grupos de AWS AutoScaling.
  • Puede usarse con el community.aws.ec2_lc módulo para gestionar las configuraciones de lanzamiento.

Requisitos

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

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

Parámetros

Parámetro Opciones / Valores predeterminados Comentarios
zonas_disponibilidadlista / elementos = cadena Lista de nombres de zonas de disponibilidad en las que crear el grupo. Por defecto, todas las zonas de disponibilidad en la región si vpc_zone_identifier no está configurado.
aws_access_keycuerda 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. perfil se establece este parámetro se ignora. 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_bundlesendero La ubicación de un paquete de CA para usar al validar certificados SSL. Solo se usa para módulos basados ​​en boto3. Nota: El paquete de 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_configdiccionario 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.ConfigSolo se utiliza 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_keycuerda 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. perfil se establece este parámetro se ignora. 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
debug_botocore_endpoint_logsbooleano
    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.
default_cooldownentero Defecto:
300
El número de segundos después de que se completa una actividad de escalado antes de que pueda comenzar otra.
capacidad_deseadaentero Número deseado de instancias en el grupo, si no se especifica, se utilizará el valor del grupo actual.
ec2_urlcuerda 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
health_check_periodentero Defecto:
300
Tiempo en segundos después de que una nueva instancia EC2 entra en servicio y Auto Scaling comienza a verificar su estado.
health_check_typecuerda
    Opciones:

  • EC2
  • ELB
El servicio del que desea conocer el estado de salud, Amazon EC2 o Elastic Load Balancer.
launch_config_namecuerda Nombre de la configuración de lanzamiento que se utilizará para el grupo. Consulte el módulo community.aws.ec2_lc) para administrarlos. Si no se especifica, se utilizará el valor del grupo actual. Uno de launch_config_name o launch_template debe ser provisto.
launch_templatediccionario Diccionario que describe la plantilla de lanzamiento a utilizar
launch_template_idcuerda El ID de la plantilla de lanzamiento. Solo uno de launch_template_name o launch_template_id es requerido.
launch_template_namecuerda El nombre de la plantilla de lanzamiento. Solo uno de launch_template_name o launch_template_id es requerido.
versióncuerda El número de versión de la plantilla de lanzamiento que se utilizará. De forma predeterminada, es la última versión si no se proporciona.
lc_checkbooleano
    Opciones:

  • no
Verifique para asegurarse de que las instancias que se reemplacen con reemplazar_instancias no tengo ya la corriente launch_config.
balanceadores_de_cargalista / elementos = cadena Lista de nombres de ELB que se utilizarán para el grupo. Úselo para balanceadores de carga clásicos.
lt_checkbooleano
    Opciones:

  • no
Verifique para asegurarse de que las instancias que se reemplacen con reemplazar_instancias no tengo ya la corriente launch_template o yo (launch_templateversión.
max_instance_lifetimeentero La cantidad máxima de tiempo, en segundos, que una instancia puede estar en servicio. La vida útil máxima de la instancia debe ser igual a 0, entre 604800 y 31536000 segundos (inclusive), o no especificado. El valor de 0 elimina la restricción de vida útil.
tamaño máximoentero Número máximo de instancias en el grupo, si no se especifica, se utilizará el valor del grupo actual.
metrics_collectionbooleano
    Opciones:

  • no
Habilite la recopilación de métricas de ASG.
metrics_granularitycuerda Defecto:
“1 minuto”
Cuando metrics_collection = true esto determinará la granularidad de las métricas recopiladas por CloudWatch.
lista_metricslista / elementos = cadena Defecto:
[“GroupMinSize”, “GroupMaxSize”, “GroupDesiredCapacity”, “GroupInServiceInstances”, “GroupPendingInstances”, “GroupStandbyInstances”, “GroupTerminatingInstances”, “GroupTotalInstances”]
Lista de métricas de ajuste de escala automático para recopilar cuando metrics_collection = true.
min_sizeentero Número mínimo de instancias en el grupo, si no se especifica, se utilizará el valor del grupo actual.
política_instancias_mezcladasdiccionario Una política de instancia mixta para usar con el ASG. Solo se usa cuando el ASG está configurado para usar una plantilla de lanzamiento (launch_template).Ver también https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-mixedinstancespolicy.html
tipos_instancialista / elementos = cadena Una lista de tipos_instancia.
nombrecuerda / requerido Nombre único para el grupo que se creará o eliminará.
tema_de_notificacióncuerda Un ARN de tema de SNS al que enviar notificaciones de escalado automático.
tipos_de_notificaciónlista / elementos = cadena Defecto:
[“autoscaling:EC2_INSTANCE_LAUNCH”, “autoscaling:EC2_INSTANCE_LAUNCH_ERROR”, “autoscaling:EC2_INSTANCE_TERMINATE”, “autoscaling:EC2_INSTANCE_TERMINATE_ERROR”]
Una lista de eventos de escalado automático para activar notificaciones.
Location_groupcuerda Ubicación física de su grupo de ubicación de clúster creado en Amazon EC2.
perfilcuerda Utiliza un perfil de boto. Solo funciona con boto> = 2.24.0. 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óncuerda 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
reemplazar_todas_instanciasbooleano
    Opciones:

  • no
De manera progresiva, reemplace todas las instancias que usaban la configuración de lanzamiento anterior por una de la nueva configuración de lanzamiento. Aumenta el tamaño de ASG en reemplazar_size_batch, espera a que las nuevas instancias estén en funcionamiento. Después de eso, finaliza un lote de instancias antiguas, espera los reemplazos y se repite hasta que se reemplazan todas las instancias antiguas. Una vez hecho esto, el tamaño de ASG se reduce de nuevo al tamaño esperado.
reemplazar_size_batchentero Defecto:
1
Número de instancias que le gustaría reemplazar a la vez. Usado con reemplazar_todas_instancias.
reemplazar_instanciaslista / elementos = cadena Lista de id_instancia perteneciente al AutoScalingGroup nombrado que le gustaría para terminar y ser reemplazado por instancias que coincidan con la configuración de lanzamiento actual.
token de seguridadcuerda 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. perfil se establece este parámetro se ignora. 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
estadocuerda
    Opciones:

  • regalo
  • ausente
Registre o anule el registro de la instancia.
suspender_procesoslista / elementos = cadena Defecto:
[]
Una lista de procesos de escalado para suspender. Los valores válidos incluyen:Launch, Terminate, HealthCheck, ReplaceUnhealthy, AZRebalance, AlarmNotification, ScheduledActions, AddToLoadBalancerLa documentación completa de los valores válidos se puede encontrar en la documentación de AWS:https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-suspend-resume-processes.html
etiquetaslista / elementos = diccionario Una lista de etiquetas para agregar al grupo de escala automática. La clave opcional es propagate_at_launch, cuyo valor predeterminado es verdadero. propagate_at_launch si es cierto, las etiquetas se propagarán a las instancias creadas.
target_group_arnslista / elementos = cadena Lista de ARN del grupo objetivo que se utilizarán para el grupo. Se utiliza para equilibradores de carga de aplicaciones.
termination_policieslista / elementos = cadena Defecto:
“Defecto”
Una lista ordenada de criterios que se utilizan para seleccionar instancias que se eliminarán del grupo de Auto Scaling al reducir la capacidad. termination_policies = Predeterminado cuando la modificación de un AutoScalingGroup existente resultará en la retención de la política existente en lugar de cambiar a DefaultLos valores válidos incluyen: Default, OldestInstance, NewestInstance, OldestLaunchConfiguration, ClosestToNextInstanceHourLa documentación completa de los valores válidos se puede encontrar en la documentación de AWS:https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html#custom-termination-policy
validate_certsbooleano
    Opciones:

  • no
Cuando se establece en “no”, los certificados SSL no se validarán para las versiones de boto> = 2.6.0.
vpc_zone_identifierlista / elementos = cadena Lista de subredes de VPC para usar
esperar_por_instanciasbooleano
    Opciones:

  • no
Espere a que las instancias de ASG estén listas antes de salir. Si las instancias están detrás de un ELB, esperará hasta que el ELB determine que todas las instancias tienen un lifecycle_state de “InService” y un health_status de “Healthy”.
wait_timeoutentero Defecto:
300
Cuánto tiempo esperar para que las instancias sean viables cuando se reemplacen. Si experimenta el error “Se esperó demasiado para que las instancias de ELB estén en buen estado”, intente aumentar este valor.

Notas

Nota

  • 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

# Basic configuration with Launch Configuration-community.aws.ec2_asg:name: special
    load_balancers:['lb1','lb2']availability_zones:['eu-west-1a','eu-west-1b']launch_config_name:'lc-1'min_size:1max_size:10desired_capacity:5vpc_zone_identifier:['subnet-abcd1234','subnet-1a2b3c4d']tags:-environment: production
        propagate_at_launch: no

# Rolling ASG Updates# Below is an example of how to assign a new launch config to an ASG and terminate old instances.## All instances in "myasg" that do not have the launch configuration named "my_new_lc" will be terminated in# a rolling fashion with instances using the current launch configuration, "my_new_lc".## This could also be considered a rolling deploy of a pre-baked AMI.## If this is a newly created group, the instances will not be replaced since all instances# will have the current launch configuration.-name: create launch config
  community.aws.ec2_lc:name: my_new_lc
    image_id: ami-lkajsf
    key_name: mykey
    region: us-east-1security_groups: sg-23423instance_type: m1.small
    assign_public_ip: yes

-community.aws.ec2_asg:name: myasg
    launch_config_name: my_new_lc
    health_check_period:60health_check_type: ELB
    replace_all_instances: yes
    min_size:5max_size:5desired_capacity:5region: us-east-1# To only replace a couple of instances instead of all of them, supply a list# to "replace_instances":-community.aws.ec2_asg:name: myasg
    launch_config_name: my_new_lc
    health_check_period:60health_check_type: ELB
    replace_instances:- i-b345231
    - i-24c2931
    min_size:5max_size:5desired_capacity:5region: us-east-1# Basic Configuration with Launch Template-community.aws.ec2_asg:name: special
    load_balancers:['lb1','lb2']availability_zones:['eu-west-1a','eu-west-1b']launch_template:version:'1'launch_template_name:'lt-example'launch_template_id:'lt-123456'min_size:1max_size:10desired_capacity:5vpc_zone_identifier:['subnet-abcd1234','subnet-1a2b3c4d']tags:-environment: production
        propagate_at_launch: no

# Basic Configuration with Launch Template using mixed instance policy-community.aws.ec2_asg:name: special
    load_balancers:['lb1','lb2']availability_zones:['eu-west-1a','eu-west-1b']launch_template:version:'1'launch_template_name:'lt-example'launch_template_id:'lt-123456'mixed_instances_policy:instance_types:- t3a.large
            - t3.large
            - t2.large
    min_size:1max_size:10desired_capacity:5vpc_zone_identifier:['subnet-abcd1234','subnet-1a2b3c4d']tags:-environment: production
        propagate_at_launch: no

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
auto_scaling_group_arncuerda éxito El ARN único del grupo de ajuste de escala automático
Muestra:arn: aws: autoescaling: us-east-1: 123456789012: autoScalingGroup: 6a09ad6d-eeee-1234-b987-ee123ced01ad: autoScalingGroupName / myasg
auto_scaling_group_namecuerda éxito El nombre único del grupo de escalado automático
Muestra:myasg
zonas_disponibilidadlista / elementos = cadena éxito Las zonas de disponibilidad para el grupo de escalado automático
Muestra:[‘us-east-1d’]
created_timecuerda éxito Marca de tiempo de la hora de creación del grupo de escalado automático
Muestra:2017-11-08T14: 41: 48.272000 + 00: 00
default_cooldownentero éxito El tiempo de recuperación predeterminado en segundos.
Muestra:300
capacidad_deseadaentero éxito La cantidad de instancias EC2 que deberían ejecutarse en este grupo.
Muestra:3
healthcheck_periodentero éxito Tiempo en segundos después de que una nueva instancia EC2 entra en servicio y Auto Scaling comienza a verificar su estado.
Muestra:30
healthcheck_typecuerda éxito El servicio del que desea conocer el estado de salud, uno de “EC2” o “ELB”.
Muestra:ELB
instancias_saludablesentero éxito Número de instancias en buen estado
Muestra:5
in_service_instancesentero éxito Número de instancias en servicio
Muestra:3
instance_factsdiccionario éxito Diccionario de instancias EC2 y su estado en relación con el ASG.
Muestra:‘i-0123456789012’: ‘health_status’: ‘Healthy’, ‘launch_config_name’: ‘public-webapp-production-1’, ‘lifecycle_state’: ‘InService’
instanciaslista / elementos = cadena éxito lista de ID de instancia en el ASG
Muestra:[‘i-0123456789012’]
launch_config_namecuerda éxito Nombre de la configuración de lanzamiento asociada con el ASG. Igual que launch_configuration_name, proporcionado para compatibilidad con el módulo ec2_asg.
Muestra:public-webapp-production-1
balanceadores_de_cargalista / elementos = cadena éxito Lista de nombres de balanceadores de carga adjuntos al ASG.
Muestra:[‘elb-webapp-prod’]
max_instance_lifetimeentero éxito La cantidad máxima de tiempo, en segundos, que una instancia puede estar en servicio.
Muestra:604800
tamaño máximoentero éxito Tamaño máximo del grupo
Muestra:3
metrics_collectionlista / elementos = cadena éxito Lista de métricas de AutosSalingGroup habilitadas
Muestra:[‘Granularity’: ‘1Minute’, ‘Metric’: ‘GroupInServiceInstances’]
min_sizeentero éxito Tamaño mínimo del grupo
Muestra:1
política_instancia_mezcladalista / elementos = cadena éxito Devuelve la lista de tipos de instancias si se establece una política de instancias mixtas.
Muestra:[‘t3.micro’, ‘t3a.micro’]
pendientes_instanciasentero éxito Número de instancias en estado pendiente
Muestra:1
etiquetaslista / elementos = cadena éxito Lista de etiquetas para el ASG y si cada etiqueta se propaga o no a las instancias en el lanzamiento.
Muestra:[‘key’: ‘Name’, ‘propagate_at_launch’: ‘true’, ‘resource_id’: ‘public-webapp-production-1’, ‘resource_type’: ‘auto-scaling-group’, ‘value’: ‘public-webapp-production-1’, ‘key’: ‘env’, ‘propagate_at_launch’: ‘true’, ‘resource_id’: ‘public-webapp-production-1’, ‘resource_type’: ‘auto-scaling-group’, ‘value’: ‘production’]
target_group_arnslista / elementos = cadena éxito Lista de ARN de los grupos objetivo que el ASG llena
Muestra:[‘arn:aws:elasticloadbalancing:ap-southeast-2:123456789012:targetgroup/target-group-host-hello/1a2b3c4d5e6f1a2b’, ‘arn:aws:elasticloadbalancing:ap-southeast-2:123456789012:targetgroup/target-group-path-world/abcd1234abcd1234’]
target_group_nameslista / elementos = cadena éxito Lista de nombres de los grupos objetivo que completa el ASG
Muestra:[‘target-group-host-hello’, ‘target-group-path-world’]
termination_policieslista / elementos = cadena éxito Una lista de políticas de terminación del grupo.
Muestra:[‘Default’]
insalubres_instanciasentero éxito Número de instancias en un estado insalubre
instancias_ viablesentero éxito Número de instancias en un estado viable
Muestra:1
vpc_zone_identifiercuerda éxito ID de zona / ID de subred de VPC para el grupo de escalado automático
Muestra:subnet-a31ef45f

Autores

  • Gareth Rushgrove (@garethr)