Note

Ce plugin fait partie du programme collection community.aws (version 1.3.0).

Pour l'installer, utilisez : ansible-galaxy collection install community.aws.

Pour l'utiliser dans un playbook, spécifiez : community.aws.ec2_asg.

Nouveau dans la version 1.0.0 : de community.aws

  • Synopsis
  • Exigences
  • Paramètres
  • Notes
  • Exemples
  • Valeurs de retour

Synopsis

  • Peut créer ou supprimer des groupes AWS AutoScaling.
  • Peut être utilisé avec l'option communauté.aws.ec2_lc pour gérer les configurations de lancement.

Exigences

Les exigences ci-dessous sont nécessaires sur l'hôte qui exécute ce module.

  • boto
  • boto3
  • botocore
  • python >= 2.6

Paramètres

Paramètre Choix/par défaut Commentaires
zones de disponibilitéliste / elements=string Liste des noms de zones de disponibilité dans lesquelles créer le groupe.Par défaut, toutes les zones de disponibilité de la région si... vpc_zone_identifier n'est pas défini.
aws_access_keychaîne de caractères Clé d'accès AWS. Si elle n'est pas définie, alors la valeur de la variable d'environnement AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY ou EC2_ACCESS_KEY est utilisée.Si profil est défini, ce paramètre est ignoré.Passer la variable d'environnement aws_access_key et profil en même temps a été déprécié et les options seront rendues mutuellement exclusives après le 2022-06-01.
alias : ec2_access_key, access_key
aws_ca_bundlechemin d'accès L'emplacement d'un Bundle CA à utiliser lors de la validation des certificats SSL.Uniquement utilisé pour les modules basés sur boto3.Remarque : le Bundle CA est lu côté 'module' et peut devoir être explicitement copié depuis le contrôleur s'il n'est pas exécuté localement.
aws_configdictionnaire Un dictionnaire pour modifier la configuration de botocore.Les paramètres se trouvent à l'adresse suivante https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config.seule la clé 'user_agent' est utilisée pour les modules boto. Voir http://boto.cloudhackers.com/en/latest/boto_config_tut.html#boto pour plus de configuration boto.
aws_secret_keychaîne de caractères Clé secrète AWS. Si elle n'est pas définie, alors la valeur de la variable d'environnement AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY ou EC2_SECRET_KEY est utilisée.Si profil est défini, ce paramètre est ignoré.Passer la variable d'environnement aws_secret_key et profil en même temps a été déprécié et les options seront rendues mutuellement exclusives après le 2022-06-01.
alias : ec2_secret_key, secret_key
debug_botocore_endpoint_logsbooléen
    Choix :

  • pas de
  • oui
Utilisez un logger botocore.endpoint pour analyser les appels API "ressource:action" uniques (plutôt que totaux) effectués pendant une tâche, en fournissant l'ensemble à la clé resource_actions dans les résultats de la tâche. Utilisez le callback aws_resource_action pour afficher la liste totale des appels effectués pendant un playbook. La variable d'environnement ANSIBLE_DEBUG_BOTOCORE_LOGS peut également être utilisée.
refroidissement par défautnombre entier Par défaut :
300
Le nombre de secondes après la fin d'une activité de mise à l'échelle avant qu'une autre puisse commencer.
capacité_désiréenombre entier Nombre désiré d'instances dans le groupe, si non spécifié alors la valeur actuelle du groupe sera utilisée.
ec2_urlchaîne de caractères Url à utiliser pour se connecter à EC2 ou à votre cloud Eucalyptus (par défaut, le module utilisera les endpoints EC2). Ignoré pour les modules où la région est requise. Doit être spécifié pour tous les autres modules si la région n'est pas utilisée. Si elle n'est pas définie, alors la valeur de la variable d'environnement EC2_URL, si elle existe, est utilisée.
Alias : aws_endpoint_url, endpoint_url.
période_de_vérification_de_santénombre entier Par défaut :
300
Durée en secondes, après la mise en service d'une nouvelle instance EC2, pendant laquelle Auto Scaling commence à vérifier sa santé.
health_check_typechaîne de caractères
    Choix :

  • EC2
  • ELB
Le service dont vous souhaitez obtenir l'état de santé, Amazon EC2 ou Elastic Load Balancer.
nom_config_lancementchaîne de caractères Nom de la configuration de lancement à utiliser pour le groupe. Voir le module community.aws.ec2_lc) pour la gestion de ces derniers.Si non spécifié, alors la valeur actuelle du groupe sera utilisée. Un des éléments suivants launch_config_name ou launch_template doivent être fournis.
launch_templatedictionnaire Dictionnaire décrivant le modèle de lancement à utiliser.
launch_template_idchaîne de caractères L'id du modèle de lancement. Un seul des nom_du_template_de_lancement ou launch_template_id est nécessaire.
launch_template_namechaîne de caractères Le nom du modèle de lancement. Un seul des éléments suivants nom_du_modèle_de_lancement ou launch_template_id est nécessaire.
versionchaîne de caractères Le numéro de version du modèle de lancement à utiliser.Par défaut, la dernière version est utilisée si elle n'est pas fournie.
lc_checkbooléen
    Choix :

  • pas de
  • oui
Vérifier que les instances qui sont remplacées par... replace_instances n'ont pas déjà la valeur courante launch_config.
load_balancersliste / elements=string Liste des noms d'ELB à utiliser pour le groupe. À utiliser pour les équilibreurs de charge classiques.
lt_checkbooléen
    Choix :

  • pas de
  • oui
Vérifier que les instances qui sont remplacées par... replace_instances n'ont pas déjà la valeur courante launch_template ou I(launch_templateversion.
durée de vie max_instancenombre entier La durée maximale, en secondes, pendant laquelle une instance peut être en service.La durée de vie maximale de l'instance doit être égale à 0, comprise entre 604800 et 31536000 secondes (inclusivement), ou non spécifiée.La valeur de 0 supprime la restriction de durée de vie.
max_sizenombre entier Nombre maximum d'instances dans le groupe, si non spécifié alors la valeur actuelle du groupe sera utilisée.
métrique_collectionbooléen
    Choix :

  • pas de
  • oui
Activez la collecte de métriques ASG.
métriques_granularitéchaîne de caractères Par défaut :
"1Minute"
Quand metrics_collection=true cela déterminera la granularité des métriques collectées par CloudWatch.
liste_de_mesuresliste / elements=string Par défaut :
["GroupMinSize", "GroupMaxSize", "GroupDesiredCapacity", "GroupInServiceInstances", "GroupPendingInstances", "GroupStandbyInstances", "GroupTerminatingInstances", "GroupTotalInstances"]
Liste des métriques d'autoscaling à collecter lorsque... metrics_collection=true.
min_sizenombre entier Nombre minimum d'instances dans le groupe, si non spécifié alors la valeur actuelle du groupe sera utilisée.
mixed_instances_policydictionnaire Une politique d'instance mixte à utiliser pour le GSA.Utilisée uniquement lorsque le GSA est configuré pour utiliser un modèle de lancement (launch_template).Voir aussi https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-mixedinstancespolicy.html
instance_typesliste / elements=string Une liste de types d'instances.
nomchaîne de caractères / obligatoire Nom unique pour le groupe à créer ou à supprimer.
notification_topicchaîne de caractères Un sujet SNS ARN pour envoyer des notifications de mise à l'échelle automatique à.
notification_typesliste / elements=string Par défaut :
["autoscaling:EC2_INSTANCE_LAUNCH", "autoscaling:EC2_INSTANCE_LAUNCH_ERROR", "autoscaling:EC2_INSTANCE_TERMINATE", "autoscaling:EC2_INSTANCE_TERMINATE_ERROR"]
Une liste d'événements de mise à l'échelle automatique pour déclencher des notifications sur.
groupe_de_placementchaîne de caractères Emplacement physique du groupe de placement de votre cluster créé dans Amazon EC2.
profilchaîne de caractères Utilise un profil boto. Ne fonctionne qu'avec boto >= 2.24.0.Using profil remplacera aws_access_key, aws_secret_key et security_token et le support pour les passer en même temps que les fichiers profil a été déprécié.aws_access_key, aws_secret_key et security_token sera rendu mutuellement exclusif avec profil après le 2022-06-01.
alias : aws_profile
régionchaîne de caractères La région AWS à utiliser. Si elle n'est pas spécifiée, la valeur de la variable d'environnement AWS_REGION ou EC2_REGION, le cas échéant, est utilisée. Voir http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region
alias : aws_region, ec2_region
remplacer_toutes_instancesboolean
    Choix :

  • pas de
  • oui
De façon continue, remplacez toutes les instances qui utilisaient l'ancienne configuration de lancement par une instance de la nouvelle configuration de lancement. Cela augmente la taille de l'ASG de replace_batch_size, attend que les nouvelles instances soient opérationnelles. Après cela, il met fin à un lot d'anciennes instances, attend les remplacements, et répète, jusqu'à ce que toutes les anciennes instances soient remplacées. Une fois que c'est fait, la taille de l'ASG est réduite à la taille attendue.
replace_batch_sizenombre entier Par défaut :
1
Nombre d'instances que vous souhaitez remplacer à la fois. Utilisé avec remplacer_toutes_instances.
replace_instancesliste / elements=chaîne Liste de instance_ids appartenant à l'AutoScalingGroup nommé que vous souhaitez résilier et remplacer par des instances correspondant à la configuration de lancement actuelle.
security_tokenchaîne de caractères Jeton de sécurité AWS STS. S'il n'est pas défini, alors la valeur de la variable d'environnement AWS_SECURITY_TOKEN ou EC2_SECURITY_TOKEN est utilisée.Si profil est défini, ce paramètre est ignoré.Le passage de la variable d'environnement security_token et profil en même temps a été déprécié et les options seront rendues mutuellement exclusives après le 2022-06-01.
alias : aws_security_token, access_token
étatchaîne de caractères
    Choix :

  • présent
  • absent
Enregistrer ou désenregistrer l'instance.
suspendre_processusliste / elements=chaîne Par défaut :
[]
Une liste de processus de mise à l'échelle à suspendre.Les valeurs valides comprennent :Launch, Terminate, HealthCheck, ReplaceUnhealthy, AZRebalance, AlarmNotification, ScheduledActions, AddToLoadBalancerUne documentation complète des valeurs valides peut être trouvée dans la documentation AWS :https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-suspend-resume-processes.html
balisesliste / elements=dictionnaire Une liste de balises à ajouter au groupe de l'échelle automatique.La clé optionnelle est propagate_at_launch qui a la valeur par défaut true.Lorsque propagate_at_launch est vrai, les balises seront propagées aux instances créées.
target_group_arnsliste / elements=string Liste des ARN du groupe cible à utiliser pour le groupe. À utiliser pour les équilibreurs de charge d'applications.
politiques de terminaisonliste / elements=chaîne Par défaut :
"Défaut"
Une liste ordonnée de critères utilisés pour sélectionner les instances à retirer du groupe d'auto-échelonnement lors de la réduction de la capacité.Utilisation de termination_policies=Default lors de la modification d'un AutoScalingGroup existant, la politique existante sera conservée au lieu d'être changée en... DefaultLes valeurs valides comprennent : Default, OldestInstance, NewestInstance, OldestLaunchConfiguration, ClosestToNextInstanceHourUne documentation complète des valeurs valides peut être trouvée dans la documentation AWS :https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html#custom-termination-policy
valider_certsbooléen
    Choix :

  • pas de
  • oui
Lorsqu'il est défini sur "non", les certificats SSL ne seront pas validés pour les versions boto >= 2.6.0.
vpc_zone_identifierliste / elements=string Liste des sous-réseaux VPC à utiliser
wait_for_instancesbooléen
    Choix :

  • pas de
  • oui
Attend que les instances de l'ASG soient dans un état prêt avant de sortir. Si les instances sont derrière un ELB, il attendra que l'ELB détermine que toutes les instances ont un lifecycle_state de "InService" et un health_status de "Healthy".
wait_timeoutnombre entier Par défaut :
300
Durée d'attente pour que les instances deviennent viables lorsqu'elles sont remplacées. Si vous rencontrez l'erreur "Waited too long for ELB instances to be healthy", essayez d'augmenter cette valeur.

Notes

Note

  • Si les paramètres ne sont pas définis dans le module, les variables d'environnement suivantes peuvent être utilisées par ordre décroissant de priorité. AWS_URL ou EC2_URL, AWS_PROFILE ou AWS_DEFAULT_PROFILE, AWS_ACCESS_KEY_ID ou AWS_ACCESS_KEY ou EC2_ACCESS_KEY, AWS_SECRET_ACCESS_KEY ou AWS_SECRET_KEY ou EC2_SECRET_KEY, AWS_SECURITY_TOKEN ou EC2_SECURITY_TOKEN, AWS_REGION ou EC2_REGION, AWS_CA_BUNDLE
  • Ansible utilise le fichier de configuration boto (généralement ~/.boto) si aucun identifiant n'est fourni. Voir https://boto.readthedocs.io/en/latest/boto_config_tut.html
  • AWS_REGION ou EC2_REGION peuvent être typiquement utilisés pour spécifier la région AWS, lorsque cela est nécessaire, mais cela peut également être configuré dans le fichier de configuration boto.

Exemples

# 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

Valeurs de retour

Les valeurs de retour courantes sont documentées ici, les champs suivants sont uniques à ce module :

Clé Renvoyé Description
auto_scaling_group_arnchaîne de caractères succès L'ARN unique du groupe de mise à l'échelle automatique.
Exemple : arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:6a09ad6d-eeee-1234-b987-ee123ced01ad:autoScalingGroupName/myasg.
nom_de_groupe_d'autoscalingchaîne de caractères succès Le nom unique du groupe de mise à l'échelle automatique.
Exemple : myasg
zones de disponibilitéliste / elements=chaîne succès Les zones de disponibilité pour le groupe de mise à l'échelle automatique
Exemple :['us-east-1d']
created_timechaîne de caractères succès Horodatage de l'heure de création du groupe de mise à l'échelle automatique.
Echantillon : 2017-11-08T14:41:48.272000+00:00
Refroidissement par défautnombre entier succès Le temps de refroidissement par défaut en secondes.
Exemple : 300
capacité_désiréeentier succès Le nombre d'instances EC2 qui devraient fonctionner dans ce groupe.
Exemple : 3
healthcheck_periodnombre entier succès Durée en secondes, après la mise en service d'une nouvelle instance EC2, pendant laquelle Auto Scaling commence à vérifier sa santé.
Exemple : 30
healthcheck_typechaîne de caractères succès Le service dont vous voulez obtenir l'état de santé, l'un de "EC2" ou "ELB".
Exemple : ELB
substances_sainesnombre entier succès Nombre d'instances dans un état sain
Echantillon : 5
dans_service_instancesnombre entier succès Nombre d'instances en service
Echantillon : 3
faits_instancesdictionnaire succès Dictionnaire des instances EC2 et de leur statut en relation avec le GSA.
Echantillon :{'i-0123456789012' : {'health_status' : 'Healthy', 'launch_config_name' : 'public-webapp-production-1', 'lifecycle_state' : 'InService'}}.
instancesliste / elements=chaîne succès liste des ID d'instance dans l'ASG
Echantillon :['i-0123456789012']
nom_config_lancementchaîne de caractères succès Nom de la configuration de lancement associée à l'ASG. Identique à launch_configuration_name, fourni pour la compatibilité avec le module ec2_asg.
Exemple : public-webapp-production-1
équilibreurs de chargeliste / elements=string succès Liste des noms des équilibreurs de charge attachés à l'ASG.
Exemple :['elb-webapp-prod']
max_instance_lifetimenombre entier succès La durée maximale, en secondes, pendant laquelle une instance peut être en service.
Exemple : 604800
max_sizenombre entier succès Taille maximale du groupe
Echantillon : 3
métrique_collectionliste / elements=chaîne succès Liste des métriques AutosSalingGroup activées.
Echantillon :[{'Granularity': '1Minute', 'Metric': 'GroupInServiceInstances'}]
taille_minimumnombre entier succès Taille minimale du groupe
Echantillon : 1
Politique d'instance mixteliste / elements=string succès Renvoie la liste des types d'instance si une politique d'instance mixte est définie.
Exemple :['t3.micro', 't3a.micro']
pending_instancesnombre entier succès Nombre d'instances dans l'état d'attente
Echantillon : 1
balisesliste / elements=chaîne succès Liste des balises pour le GSA, et si chaque balise se propage ou non aux instances au lancement.
Exemple :[{'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_arnsliste / elements=string succès Liste des ARN des groupes cibles que l'ASG alimente.
Echantillon :['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']
noms_groupes_cibleliste / elements=string succès Liste des noms des groupes cibles que le GSA alimente.
Echantillon :['target-group-host-hello', 'target-group-path-world']
politiques de terminaisonliste / elements=chaîne succès Une liste des politiques de résiliation pour le groupe.
Exemple :['Default']
substances_malsainesnombre entier succès Nombre d'instances dans un état malsain.
instances viablesnombre entier succès Nombre d'instances dans un état viable
Echantillon : 1
vpc_zone_identifierchaîne de caractères succès ID de zone VPC / ID de sous-réseau pour le groupe de mise à l'échelle automatique.
Exemple : subnet-a31ef45f

Auteurs

  • Gareth Rushgrove (@garethr)