กลุ่มความปลอดภัย Terraform AWS-EC2
ฉันค่อนข้างยุ่งกับการพยายามเรียนรู้เพิ่มเติมเกี่ยวกับ Terraform แต่ฉันมีปัญหาหนึ่งที่ฉันไม่รู้วิธีแก้ไข / แก้ไข
ปัญหามีดังต่อไปนี้ในสคริปต์ของฉันฉันกำลังสร้างอินสแตนซ์ ec2 (AWS) โดยมีสองสิ่งข้างเคียงเช่น en EIP และกลุ่มความปลอดภัยจากโมดูลซึ่งทั้งหมดทำงานได้ดี แต่ฉันคิดไม่ออกว่าจะแนบกลุ่มความปลอดภัยเข้ากับเครื่องได้อย่างไรตอนนี้กำลังสร้างและนั่นแหล่ะ
รหัสมีดังนี้:
data "aws_ami" "latest" {
most_recent = true
owners = [ "self"]
filter {
name = "name"
values = [ lookup(var.default_ami, var.ami) ]
}
}
module "aws_security_group" {
source = "./modules/services/Security groups/"
server_port = 443
}
resource "aws_instance" "test-ec2deployment" {
ami = data.aws_ami.latest.id
instance_type = var.instance_type
subnet_id = var.subnet_id
availability_zone = var.availability_zone
associate_public_ip_address = var.public_ip
root_block_device {
volume_type = "gp2"
volume_size = 60
delete_on_termination = true
}
tags = {
Name = "Testserver2viaTerraform"
}
}
resource "aws_eip" "ip" {
instance = aws_instance.test-ec2deployment.id
}
resource "aws_eip" "example" {
vpc = true
}
ด้านบนเป็นไฟล์หลักและฉันกำลังโหลดโมดูลต่อไปนี้:
resource "aws_security_group" "my-webserver" {
name = "webserver"
description = "Allow HTTP from Anywhere"
vpc_id = "vpc-"
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "my-webserver"
Site = "my-web-site"
}
}
ขั้นตอนสุดท้ายคือการแนบกลุ่มความปลอดภัยเข้ากับเครื่อง แต่อีกครั้งไม่มีเงื่อนงำในการทำเช่นนั้น ฉันอ่านเอกสารหลายฉบับและพยายามใช้ Google แต่ดูเหมือนจะไม่พบคำตอบหรือคำตอบไม่ได้ผลสำหรับฉัน หวังว่าพวกคุณจะช่วยฉันเพิ่มเติมได้
ขอบคุณที่สละเวลาชื่นชมมาก!
คำตอบ
ในโมดูล aws_security_group คุณต้องส่งออก ID กลุ่มความปลอดภัยโดยเพิ่มสิ่งต่อไปนี้ใน. /modules/services/Security groups // main.tf
output "securitygroup_id" {
value = aws_security_group.my-webserver.id
}
จากนั้นในไฟล์ tf หลักของคุณให้แนบกลุ่มความปลอดภัยเข้ากับอินสแตนซ์ของคุณดังนี้:
resource "aws_network_interface_sg_attachment" "sg_attachment" {
security_group_id = module.aws_security_group.securitygroup_id
network_interface_id = aws_instance.test-ec2deployment.primary_network_interface_id
}