Terraform - ASG со смешанной политикой экземпляров - PullRequest
0 голосов
/ 28 января 2019

Я использую AWS с Terraform для ускорения инфраструктуры, но, в частности, у меня возникают проблемы с развертыванием ASG со смешанной политикой экземпляров.Я пытаюсь раскрутить ASG, где один экземпляр всегда будет по требованию, а остальные места (все одного типа), на первый взгляд это выглядит просто, но я пытался некоторое время и продолжаю сталкиваться с различными ошибками,Вот что я сейчас использую:

 resource "aws_launch_template" "lt" {
   name_prefix            = "danny_test-"
   vpc_security_group_ids = [
     "${module.sec_groups.security_group_id_common}",
     "${module.sec_groups.security_group_id_ssh}",
     "${module.sec_groups.security_group_id_web}"
   ]
   image_id               = "${module.core_ami.core_ami_id}"
   instance_type          = "t2.small"
   key_name               = "${var.ssh_privkey_name}"
   user_data              = "${base64encode(data.template_file.common_user_data.rendered)}"

   iam_instance_profile {
     name = "${module.infradev_remote_state.iam_profile_updater_id}"
   }

   lifecycle {
     create_before_destroy = true
   }
}

resource "aws_autoscaling_group" "asg" {
  name                      = "danny_test"
  vpc_zone_identifier       = ["${split(",", module.environment.private_subnet_ids)}"]
  #launch_configuration      = "${aws_launch_configuration.lc.name}"
  min_size                  = "0"
  max_size                  = "1"
  desired_capacity          = "1"
  health_check_grace_period = "600"
  health_check_type         = "EC2"

  launch_template {
    id = "${aws_launch_template.lt.id}"
  }

  mixed_instances_policy {
    instances_distribution {
      on_demand_base_capacity = "1"
    }
  }
}

Но я получаю эту ошибку:

Error: aws_autoscaling_group.asg: "mixed_instances_policy.0.launch_template": required field is not set

Согласно документации launch_template здесь необязательно.Я попытался установить это, но он просто проходит через кроличью нору якобы необязательных настроек, некоторые из которых я просто не хочу устанавливать (например, переопределения).

Как правильно достичь того, что япосле?В любом случае, похоже, что документы, по крайней мере, частично неверны, исходя из вышесказанного ...

1 Ответ

0 голосов
/ 28 января 2019

Документация представляется неправильной, поскольку она установлена ​​как поле Required в фактическом коде :

        "mixed_instances_policy": {
            Type:     schema.TypeList,
            Optional: true,
            MaxItems: 1,
            Elem: &schema.Resource{
                Schema: map[string]*schema.Schema{
                    # ...
                    "launch_template": {
                        Type:     schema.TypeList,
                        Required: true,
                        MinItems: 1,
                        MaxItems: 1,

Документация ресурса aws_autoscaling_group покажите полезный пример, который включает в себя упомянутые вами необязательные переопределения:

resource "aws_launch_template" "example" {
  name_prefix   = "example"
  image_id      = "${data.aws_ami.example.id}"
  instance_type = "c5.large"
}

resource "aws_autoscaling_group" "example" {
  availability_zones = ["us-east-1a"]
  desired_capacity   = 1
  max_size           = 1
  min_size           = 1

  mixed_instances_policy {
    launch_template {
      launch_template_specification {
        launch_template_id = "${aws_launch_template.example.id}"
      }

      override {
        instance_type = "c4.large"
      }

      override {
        instance_type = "c3.large"
      }
    }
  }
}

Эти переопределения на самом деле являются необязательными, как показано в коде :

                                "override": {
                                    Type:     schema.TypeList,
                                    Optional: true,
                                    Elem: &schema.Resource{
                                        Schema: map[string]*schema.Schema{
                                            "instance_type": {
                                                Type:     schema.TypeString,
                                                Optional: true,
                                            },
                                        },
                                    },
                                },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...