
Usando Terraform v1.0.11 en Ubuntu 18.04
Después de terraform apply
ver lo main.tf
siguiente, y después de esperar a que la instancia pase las comprobaciones (y luego otro minuto), los intentos de SSH se topan con una pared.
$ ssh -v -i ~/.ssh/toydeploy.pem [email protected]
OpenSSH_7.6p1 Ubuntu-4ubuntu0.5, OpenSSL 1.0.2n 7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 18.144.125.224 [18.144.125.224] port 22.
debug1: connect to address 18.144.125.224 port 22: Connection timed out
ssh: connect to host 18.144.125.224 port 22: Connection timed out
Abrí una instancia manualmente con la misma AMI y par de claves, y puedo ingresar mediante SSH. Al comparar la configuración de red y seguridad en la consola, las únicas diferencias que he notado son que la instancia implementada manualmente usa la VPC predeterminada. y "Responder nombre DNS del recurso privado" muestra "IPv4 (A)" para la instancia implementada manualmente y "-" para la instancia Terraformed. Ambos parecen benignos, pero puede que me equivoque.
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.27"
}
}
}
provider "aws" {
profile = "default"
region = "us-west-1"
}
variable "cidr_vpc" {
description = "CIDR block for VPC"
default = "10.1.0.0/16"
}
variable "cidr_subnet" {
description = "CIDR block for subnet"
default = "10.1.0.0/20"
}
resource "aws_vpc" "toydeploy-vpc" {
cidr_block = var.cidr_vpc
enable_dns_hostnames = true
enable_dns_support = true
}
resource "aws_subnet" "toydeploy-subnet" {
vpc_id = aws_vpc.toydeploy-vpc.id
cidr_block = var.cidr_subnet
}
resource "aws_security_group" "toydeploy-sg" {
name = "toydeploy-sg"
vpc_id = aws_vpc.toydeploy-vpc.id
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = [
"0.0.0.0/0"
]
}
# Terraform removes the default rule, so we re-add it.
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "toydeploy" {
ami = "ami-083f68207d3376798" # Ubuntu 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 = true
key_name = "toydeploy"
}
Si nada de lo siguiente aparece como un problema y puede indicarme un ejemplo práctico, también se lo agradecería.
Resuelto
Un examen más detenido mostró que la tabla de enrutamiento solo enrutaba para la subred y no para 0.0.0.0/0. Agregar lo siguiente resolvió el problema.
resource "aws_internet_gateway" "toydeploy-ig" {
vpc_id = aws_vpc.toydeploy-vpc.id
}
resource "aws_route_table" "toydeploy-rt" {
vpc_id = aws_vpc.toydeploy-vpc.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.toydeploy-ig.id
}
}
resource "aws_route_table_association" "toydeploy-rta" {
subnet_id = aws_subnet.toydeploy-subnet.id
route_table_id = aws_route_table.toydeploy-rt.id
}
Respuesta1
El tiempo de espera de la conexión suele indicar un problema de red. Controlar:
- Grupo de seguridad/NACL abiertos a su IP en el puerto 22
- VPC tiene puerta de enlace a Internet
- La subred tiene una ruta hacia la puerta de enlace de Internet.
- La instancia tiene una IP pública
- La ruta está configurada correctamente
Esta es la línea clave de tu intento de conexión que te indica lo que está sucediendo.
ssh: connect to host 18.144.125.224 port 22: Connection timed out