Назад | Перейти на главную страницу

Как пометить инстансы EC2, порожденные ECS, в Terraform?

У меня есть служба ECS, которая порождает несколько контейнеров:

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}"
...

Но созданные им экземпляры EC2 не имеют тега «Имя». я думал что name_prefix было то, что я искал, но это не работает:

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}"
...

В определении задачи для этого контейнера также есть поле имени, которое тоже не работает:

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

Документы Amazon говорят здесь что «тегирование при создании» не поддерживается в «шаблоне запуска», но я не уверен, что это точно актуально; особенно, когда вы берете мою другую службу ECS в том же кластере, в котором нет балансировщика нагрузки и, следовательно, нет конфигурации запуска.

РЕДАКТИРОВАТЬ:

Предложение @B.Miller ниже не помечает фактические экземпляры, но оно отображается в консоли в разделе EC2> Auto Scaling Groups> Теги

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

name_prefix создает случайное уникальное имя для конфигурации запуска с использованием префикса, а не префиксы запускаемых с ним вещей. name в определении задачи - это имя самого определения задачи. Поскольку вы используете конфигурацию запуска, я предполагаю, что вы используете группа автомасштабирования. Группы автомасштабирования позволяют установить теги затем распространять эти теги.

Например, вы можете указать отдельные теги и заставить их распространяться:

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

Редактировать: обратите внимание, что это работает с AMI Amazon, оптимизированным для ECS, но не с CoreOS.