我想将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具有等效功能。
答案 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中添加安全组,解决了该问题。