【问题标题】:source_dest_check in aws_launch_configuration in terraformterraform 中的 aws_launch_configuration 中的 source_dest_check
【发布时间】:2019-12-21 13:46:21
【问题描述】:

我希望通过自动缩放启动配置创建一个新启动的 ec2 实例,其中 source_dest_check = 已禁用(默认情况下已启用)。

我知道我们可以使用 source_dest_check = false 来创建一个 ec2 资源,但是在从 ASG 管理实例时如何实现这一点。

Terraform 不接受以下 (source_dest_check = false) ,还有其他替代方法来实现这一点吗?

我可以从用户数据中实现这一点吗?

resource "aws_launch_configuration" "launchconfig" {
  name_prefix          = "bastion-"
  image_id             = "${data.aws_ami.amazon-linux-2.id}"
  instance_type        = "${var.instance_type}"
  placement_tenancy    = "default"
  enable_monitoring    = true
  #source_dest_check    = false
  security_groups      = ["${aws_security_group. security_group.id}"]
  iam_instance_profile = "${aws_iam_instance_profile.instance_profile.name}"
  key_name             = "${var. pem_key}"

  #Include user-data
  user_data = "${element(data.template_file.user_data.*.rendered, count.index)}"

  lifecycle {
    create_before_destroy = true
  }
}

【问题讨论】:

    标签: amazon-web-services amazon-ec2 terraform boto3 terraform-provider-aws


    【解决方案1】:

    根据 Terraform 文档,aws_launch_configuration 资源类型不支持源目标检查 (source_dest_check),它仅支持 aws_instance 资源,在这种情况下并没有真正的帮助。

    您可以使用user-data 作为一种肮脏的解决方法。首先,您需要从实例的元数据中获取实例 ID。

    EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`"
    

    然后您可以使用 ec2 cli 禁用此特定实例的源-目的地检查。

    aws ec2 modify-instance-attribute --no-source-dest-check --instance-id $EC2_INSTANCE_ID --region <REGION-WHERE-EC2-INSTANCE-IS-LAUNCHED>
    

    请注意,EC2 实例需要附加适当的角色才能进行调用。在 EC2 实例角色的权限中包含此语句。

    {
        "Sid": "Allow Source-Dest check modification",
        "Effect": "Allow",
        "Action": "ec2:ModifyInstanceAttribute",
        "Resource": "*"
    }
    

    【讨论】:

      猜你喜欢
      • 2022-08-09
      • 2020-11-22
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 2021-12-29
      • 2021-11-16
      相关资源
      最近更新 更多