1 votes

Comment marquer les instances EC2 créées par ECS dans Terraform ?

J'ai un service ECS qui génère des conteneurs :

resource "aws_ecs_service" "rocketchat" {
  name            = "rocketchat-ecs-service"
  cluster         = "${aws_ecs_cluster.rocketchat.id}"
  task_definition = "${aws_ecs_task_definition.rocketchat.arn}"
  desired_count   = 2
  iam_role        = "${aws_iam_role.ecs_service.name}"
...

Mais les instances EC2 qu'il crée n'ont pas de balise "Name". Je pensais que name_prefix était ce que je cherchais, mais ça ne marche pas :

resource "aws_launch_configuration" "rocketchat" {
  security_groups             = ["${aws_security_group.instance_sg.id}"]
  name_prefix                 = "${var.project_prefix}-rocketchat-"
  key_name                    = "${aws_key_pair.circles_rocketchat.key_name}"
...

La définition de la tâche pour ce conteneur a également un champ de nom, qui ne fonctionne pas non plus :

[
  {
    "name": "rocketchat",
    "cpu": 256,
    "essential": true,
...

Les documents d'Amazon disent ici que le "marquage à la création" n'est pas pris en charge par le "modèle de lancement", mais je ne suis pas sûr que ce soit vraiment pertinent, surtout si l'on prend mon autre service ECS sur le même cluster, qui n'a pas d'équilibreur de charge et qui n'a donc pas de configuration de lancement.

EDITAR:

La suggestion de @B.Miller ci-dessous n'a pas étiqueté les instances réelles mais elle apparaît dans la console sous EC2 > Auto Scaling Groups > Tags.

+-------------+---------------------+-------------------+ | Key | Value | Tag New Instances | +-------------+---------------------+-------------------+ | Environment | dev | Yes | +-------------+---------------------+-------------------+ | Name | rocketchat-instance | Yes | +-------------+---------------------+-------------------+

3voto

Thomas Desert Points 707

name_prefix crée un nom unique aléatoire pour la configuration de lancement en utilisant le préfixe, et ne préfixe pas les choses lancées avec. name dans une définition de tâche est le nom de la définition de tâche elle-même. Comme vous utilisez une configuration de lancement, je suppose que vous utilisez une définition de tâche de type groupe d'autoscaling . Les groupes de mise à l'échelle automatique vous permettent de définir tags puis propager ces balises .

Par exemple, vous pouvez spécifier des étiquettes individuelles et les faire se propager :

resource "aws_autoscaling_group" "default" {
  ...
  tags = [
    {
      key                 = "explicit1"
      value               = "value1"
      propagate_at_launch = true
    },
    {
      key                 = "explicit2"
      value               = "value2"
      propagate_at_launch = true
    },
  ]
  ...
}

Edita: Notez que cela fonctionne avec l'AMI Amazon optimisé par ECS mais pas avec CoreOS.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X