ใช้ Terraform v1.0.11 บน Ubuntu 18.04
หลังจาก ใช้พื้นผิว
กับ main.tf
ด้านล่าง และหลังจากรอให้อินสแตนซ์ผ่านการตรวจสอบ (และจากนั้นอีกหนึ่งนาที) ความพยายามที่จะ SSH กำลังชนกำแพง
$ ssh -v -i ~/.ssh/toydeploy.pem [email protected]
OpenSSH_7.6p1 Ubuntu-4ubuntu0.5, OpenSSL 1.0.2n 7 ธ.ค. 2560
debug1: อ่านข้อมูลการกำหนดค่า /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config บรรทัดที่ 19: การใช้ตัวเลือกสำหรับ *
debug1: กำลังเชื่อมต่อกับพอร์ต 18.144.125.224 [18.144.125.224] 22
debug1: เชื่อมต่อกับที่อยู่ 18.144.125.224 พอร์ต 22: การเชื่อมต่อหมดเวลา
ssh: เชื่อมต่อกับโฮสต์ 18.144.125.224 พอร์ต 22: การเชื่อมต่อหมดเวลา
ฉันสร้างอินสแตนซ์ด้วยตนเองด้วย AMI และคู่คีย์เดียวกัน และสามารถใช้ SSH ได้เมื่อเปรียบเทียบการตั้งค่าเครือข่ายและความปลอดภัยในคอนโซล ข้อแตกต่างเพียงอย่างเดียวที่ฉันสังเกตเห็นคืออินสแตนซ์ที่ปรับใช้ด้วยตนเองนั้นใช้ VPC เริ่มต้น และ "ตอบชื่อ DNS ของทรัพยากรส่วนตัว" แสดง "IPv4 (A)" สำหรับอินสแตนซ์ที่ปรับใช้ด้วยตนเอง และ "-" สำหรับ Terraformed ทั้งสองดูเหมือนไม่เป็นพิษเป็นภัย แต่ฉันอาจคิดผิด
พื้นผิว {
required_providers {
aws = {
ที่มา = "hashicorp/aws"
รุ่น = "~> 3.27"
}
}
}
ผู้ให้บริการ "aws" {
โปรไฟล์ = "ค่าเริ่มต้น"
ภูมิภาค = "เรา-ตะวันตก-1"
}
ตัวแปร "cidr_vpc" {
คำอธิบาย = "บล็อก CIDR สำหรับ VPC"
ค่าเริ่มต้น = "10.1.0.0/16"
}
ตัวแปร "cidr_subnet" {
คำอธิบาย = "บล็อก CIDR สำหรับซับเน็ต"
ค่าเริ่มต้น = "10.1.0.0/20"
}
ทรัพยากร "aws_vpc" "toydeploy-vpc" {
cidr_block = var.cidr_vpc
enable_dns_hostnames = จริง
enable_dns_support = จริง
}
ทรัพยากร "aws_subnet" "toydeploy-subnet" {
vpc_id = aws_vpc.toydeploy-vpc.id
cidr_block = var.cidr_subnet
}
ทรัพยากร "aws_security_group" "toydeploy-sg" {
ชื่อ = "toydeploy-sg"
vpc_id = aws_vpc.toydeploy-vpc.id
ขาเข้า {
from_port = 22
to_port = 22
โปรโตคอล = "tcp"
cidr_blocks = [
"0.0.0.0/0"
]
}
# Terraform ลบกฎเริ่มต้น เราจึงเพิ่มใหม่อีกครั้ง
ทางออก {
from_port = 0
to_port = 0
โปรโตคอล = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
ทรัพยากร "aws_instance" "toydeploy" {
ami = "ami-083f68207d3376798" # อูบุนตู 18.04
instance_type = "t2.micro"
security_groups = ["${aws_security_group.toydeploy-sg.id}"]
subnet_id = aws_subnet.toydeploy-subnet.id
Associate_public_ip_address = จริง
key_name = "toydeploy"
}
หากไม่มีสิ่งใดด้านล่างที่แสดงว่าเป็นปัญหา และคุณสามารถชี้ให้ฉันเห็นตัวอย่างการทำงานได้ นั่นก็จะได้รับการชื่นชมเช่นกัน
แก้ไขแล้ว
การตรวจสอบอย่างละเอียดพบว่าตารางเส้นทางเป็นเพียงการจัดเส้นทางสำหรับซับเน็ตเท่านั้น ไม่ใช่ 0.0.0.0/0 การเพิ่มสิ่งต่อไปนี้ช่วยแก้ปัญหาได้
ทรัพยากร "aws_internet_gateway" "toydeploy-ig" {
vpc_id = aws_vpc.toydeploy-vpc.id
}
ทรัพยากร "aws_route_table" "toydeploy-rt" {
vpc_id = aws_vpc.toydeploy-vpc.id
เส้นทาง {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.toydeploy-ig.id
}
}
ทรัพยากร "aws_route_table_association" "toydeploy-rta" {
subnet_id = aws_subnet.toydeploy-subnet.id
route_table_id = aws_route_table.toydeploy-rt.id
}