Terraform将现有安全组添加到新的自动缩放ec2组

时间:2020-01-07 12:54:35

标签: amazon-web-services amazon-ec2 terraform autoscaling

我想将VPC中定义的现有安全组添加到EC2 Auto Scaling组。 没有定义LB。此示例现在仅创建一个EC2实例。

Terraform文档显示使用sg_attachment的EC2实例可以实现

resource "aws_network_interface_sg_attachment" "bastion" {
  security_group_id    = var.sg_id
  network_interface_id = aws_autoscaling_group.bastion.primary_network_interface_id
}

但是出现以下错误,可能是因为我改用自动缩放组:

错误:属性不受支持

...... \ modules \ ec2_auto_scaling_group \ bastion.tf第51行,在 资源“ aws_network_interface_sg_attachment”“堡垒”:51:
network_interface_id = aws_autoscaling_group.bastion.primary_network_interface_id

此对象没有参数,嵌套块或导出的属性,名称为 “ primary_network_interface_id”。

我已经看到了自动缩放组附件-https://www.terraform.io/docs/providers/aws/r/autoscaling_attachment.html

但这根本不涉及安全组。

当然-我可以使用所有相同的规则隐式指定一个新的安全组,或者只声明一个ec2实例。但是,在控制台上创建自动扩展组时,您可以选择导入现有的安全组。因此,我想认为terraform具有等效功能。

1 个答案:

答案 0 :(得分:0)

我似乎忽略了以前的设置:

resource "aws_launch_configuration" "bastion" {
  # Launch configuration can't be updated, (provisioning)
  # in order to update the resource will be destroyed and rebuilt

  name_prefix = var.bastion_name_prefix

  image_id = data.aws_ami.RHEL_77.id 
  instance_type = var.bastion_instance_type
  key_name = aws_key_pair.bastion.key_name
  associate_public_ip_address = true
  enable_monitoring = false
  security_groups = [var.vpc_main_sg_id,aws_security_group.bastion.id]

  lifecycle {
      create_before_destroy = true
  }
}

在aws_launch_configuration中添加安全组,解决了该问题。