Использование 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 декабря 2017 г.
debug1: Чтение данных конфигурации /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config строка 19: Применение параметров для *
debug1: подключение к порту 22 18.144.125.224 [18.144.125.224].
debug1: подключиться к адресу 18.144.125.224, порт 22: время ожидания подключения истекло
ssh: подключиться к хосту 18.144.125.224, порт 22: время ожидания подключения истекло
Я создал экземпляр вручную с тем же AMI и парой ключей и могу подключиться по SSH.Сравнивая настройки сети и безопасности в консоли, единственное различие, которое я заметил, заключается в том, что экземпляр, развернутый вручную, использует VPC по умолчанию, а «Ответить DNS-имя частного ресурса» показывает «IPv4 (A)» для экземпляра, развернутого вручную. и "-" для терраформированного. Оба кажутся доброкачественными, но я могу ошибаться.
терраформировать {
required_providers {
авс = {
источник = "hashicorp/aws"
версия = "~> 3.27"
}
}
}
провайдер "aws" {
профиль = "по умолчанию"
регион = "США-запад-1"
}
переменная "cidr_vpc" {
description = "Блок CIDR для VPC"
по умолчанию = "10.1.0.0/16"
}
переменная "cidr_subnet" {
description = "Блок 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
вход {
от_порт = 22
to_port = 22
протокол = "TCP"
cidr_blocks = [
"0.0.0.0/0"
]
}
# Terraform удаляет правило по умолчанию, поэтому мы добавляем его заново.
выход {
из_порта = 0
to_port = 0
протокол = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
ресурс "aws_instance" "toydeploy" {
ами = "ами-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 = истина
key_name = "игрушкаразвертывание"
}
Если ниже ничего не будет проблемой, и вы можете указать мне на рабочий пример, это тоже будет оценено.
Решено
При ближайшем рассмотрении оказалось, что в таблице маршрутизации указана только маршрутизация для подсети, а не 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
}