3
votes

Définir: Terraform - AWS - aws_instance - user_data

Je travaille avec Terraform et je lance un cluster ECS.

J'utilise un script qui a été écrit par quelqu'un d'autre. Je comprends la plupart du script de configuration de lancement, à part celui-ci:

J'essaie de trouver le lien entre le groupe d'autoscaling et le cluster ECS.

J'ai un aws_autoscaling_group qui utilise une aws_launch_configuration (voir ci-dessous). La aws_launch_configuration a un paramètre user_data . C'est le seul lien entre le groupe d'autoscaling et le cluster que je peux trouver.

En regardant les liens (en bas) vers la documentation, cela ne donne pas une très bonne explication de «quoi» user_data est. Quelqu'un peut-il m'aider à comprendre "comment" le user_data relie le groupe d'autoscaling au cluster, et si possible, donnez un exemple ou un lien vers ce à quoi il est normalement utilisé et comment il est normalement utilisé. p>

  ...
  + aws_launch_configuration.ecs_host
      ...
      user_data: "4e27e8feea0896af43ada0c647877da3766f5dcb"
  ...

terraform apply sorties:

...
resource "aws_launch_configuration" "ecs_host" {
  ...

  user_data = <<EOF
#!/bin/bash
echo ECS_CLUSTER=${var.cluster_name} >> /etc/ecs/ecs.config
EOF
}
...

https://www.terraform.io/docs/providers/aws/r/instance.html#user_data https://www.terraform.io/docs/providers/ aws / r / launch_configuration.html # user_data


0 commentaires

3 Réponses :


2
votes

explication officielle par terraform

echo ECS_CLUSTER=${var.cluster_name} >> /etc/ecs/ecs.config

Document aws officiel pour expliquer ce que sont les user_data

https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html

Donc, en général, après avoir défini la configuration de lancement et le groupe d'autoscaling, le groupe d'autoscaling s'assurera du nombre d'instances ec2 à démarrer (capacité souhaitée).

Lorsque vous démarrez une nouvelle instance, elle référencera la configuration de lancement, qui définit quelle AWS AMI pour l'instance et quelle commande init sera exécutée. les commandes d'initialisation sont enregistrées dans le script user_data .

Dans votre cas, le script de données utilisateur s'enregistre dans le cluster ECS désigné. Ainsi, le cluster ecs peut découvrir ces instances ec2 facilement

user_data - (Optional) The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see user_data_base64 instead.

En arrière-plan, un conteneur docker appelé amazon / amazon-ecs-agent est en cours d'exécution pour aider ces registres et gérer d'autres conteneurs (services ecs)

Si vous souhaitez en connaître les détails, vous pouvez parcourir ce document: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-install.html


1 commentaires

Voir mes mises à jour ( docs.aws.amazon.com/ AWSEC2 / latest / WindowsGuide /… ) c'est ce que vous devez lire.



1
votes
L'attribut

user_data vous permet de spécifier la charge utile du script ou les instructions du démon cloud. Les données peuvent être un modèle en ligne selon votre cas avec le script, ou un modèle de fichier dans lequel vous devrez traiter Fournisseur de modèles . Ainsi, lorsque vous souhaitez créer une nouvelle configuration de lancement, utilisée pour l'autoscaling des groupes, c'est l'une des options pour exécuter ici un script et obtenir la sortie sous forme de hachage du cluster par exemple.

Les limitations sont que vous ne pouvez pas transmettre de données compressées par gzip via cet argument; consultez plutôt user_data_base64 et vous ne devez pas stocker de données sensibles, telles que des mots de passe, en tant que données utilisateur.


0 commentaires

1
votes

En termes simples, les données utilisateur sont un script qui est exécuté lors du démarrage d'une instance ec2. Vous pouvez automatiser les actions qui doivent avoir lieu pour vous assurer que votre ec2 est correctement configuré et les spécifier comme user_data, en demandant à aws d'exécuter le script sur le bootstrap de la machine.


0 commentaires