Folosind Terraform v1.0.11 pe Ubuntu 18.04
Dupa o se aplică terraform
cu principal.tf
de mai jos și după ce ați așteptat ca instanța să treacă verificări (și apoi încă un minut), încercările de SSH lovesc un perete.
$ ssh -v -i ~/.ssh/toydeploy.pem [email protected]
OpenSSH_7.6p1 Ubuntu-4ubuntu0.5, OpenSSL 1.0.2n 7 decembrie 2017
debug1: Citirea datelor de configurare /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config linia 19: Se aplică opțiuni pentru *
debug1: se conectează la 18.144.125.224 [18.144.125.224] portul 22.
depanare1: conectați-vă la adresa 18.144.125.224 portul 22: conexiunea a expirat
ssh: conectați-vă la gazda 18.144.125.224 portul 22: conexiune a expirat
Am adus manual o instanță cu aceeași AMI și pereche de chei și pot SSH.Comparând setările de rețea și de securitate din consolă, singurele diferențe pe care le-am observat sunt că instanța implementată manual folosește VPC-ul implicit, iar „Răspundeți la numele DNS al resursei private” arată „IPv4 (A)” pentru instanța implementată manual. și „-” pentru cel Terraformat. Ambele par benigne, dar s-ar putea să mă înșel.
terraform {
furnizori_obligatori {
aws = {
sursa = "hashicorp/aws"
versiune = "~> 3.27"
}
}
}
furnizorul „aws” {
profil = „implicit”
regiune = "us-west-1"
}
variabila „cidr_vpc” {
description = „Bloc CIDR pentru VPC”
implicit = „10.1.0.0/16”
}
variabila „cidr_subnet” {
description = "Bloc CIDR pentru subrețea"
implicit = "10.1.0.0/20"
}
resursă „aws_vpc” „toydeploy-vpc” {
cidr_block = var.cidr_vpc
enable_dns_hostnames = adevărat
enable_dns_support = adevărat
}
resursă „aws_subnet” „toydeploy-subnet” {
vpc_id = aws_vpc.toydeploy-vpc.id
cidr_block = var.cidr_subnet
}
resursă „aws_security_group” „toydeploy-sg” {
nume = "toydeploy-sg"
vpc_id = aws_vpc.toydeploy-vpc.id
intrare {
din_port = 22
spre_port = 22
protocol = "tcp"
cidr_blocks = [
„0.0.0.0/0”
]
}
# Terraform elimină regula implicită, așa că o re-adăugăm.
iesire {
din_port = 0
spre_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resursa „aws_instance” „toydeploy” {
ami = "ami-083f68207d3376798" # Ubuntu 18.04
tip_instanță = "t2.micro"
security_groups = ["${aws_security_group.toydeploy-sg.id}"]
subnet_id = aws_subnet.toydeploy-subnet.id
asociate_public_ip_address = adevărat
key_name = "toydeploy"
}
Dacă nimic de mai jos nu reiese ca o problemă și îmi puteți indica un exemplu de lucru, și acesta ar fi apreciat.
Rezolvat
O examinare mai atentă a arătat că tabelul de rutare a fost rutat numai pentru subrețea și nu 0.0.0.0/0. Adăugarea următoarelor a rezolvat problema.
resursă „aws_internet_gateway” „toydeploy-ig” {
vpc_id = aws_vpc.toydeploy-vpc.id
}
resursă „aws_route_table” „toydeploy-rt” {
vpc_id = aws_vpc.toydeploy-vpc.id
traseu {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.toydeploy-ig.id
}
}
resursa „aws_route_table_association” „toydeploy-rta” {
subnet_id = aws_subnet.toydeploy-subnet.id
route_table_id = aws_route_table.toydeploy-rt.id
}