AWS, terraform) Как подключиться к новому экземпляру из другого экземпляра, который создал новый экземпляр? - PullRequest
0 голосов
/ 29 мая 2019

Я не могу подключиться к instance2 из instance1 , который создает instance2 с помощью terraform, потому что instance1 не имеет key_name.pem, кроме key_name.pub.

Как мне загрузить key_name.pem в instance1?

Вот что я сделал:

  1. Я создал экземпляр AWS 1

  2. генерировать ключ ssh

ssh-keygen -t rsa -b 4096 -C "roy" -f "$HOME/.ssh/test_key" -N ""
  1. terraform apply (ключевой ресурс)
# main.tf
provider "aws"{
    region = "ap-northeast-2"
}

resource "aws_key_pair" "test_key" {
key_name = "test_key"
public_key = "${file("~/.ssh/test_key.pub")}"
}
  1. terraform apply (создать экземпляр)
provider "aws"{
    region = "ap-northeast-2"
}
resource "aws_instance" "ec2" {
ami = "ami-06e7b9c5e0c4dd014"
instance_type = "t2.nano"
key_name = "test_key"
tags {
Name = "ec2_instance"
}

1 Ответ

0 голосов
/ 30 мая 2019

Вы можете использовать user_data при создании instance1 . Это может быть обычный скрипт bash, в котором вы создаете файл id_rsa ( key_name.pem ) для пользователя ubuntu (если вы используете Ubuntu AMI).

#!/bin/bash

#create id_rsa

echo "[KEY_DATA]" > /home/ubuntu/.ssh/id_rsa
chmod 0600 /home/ubuntu/.ssh/id_rsa

Но зачем вам вообще нужен закрытый ключ? Terraform не нужен закрытый ключ ...

На всякий случай, если вы используете instance1 в качестве бастиона SSH: Вы должны использовать пересылку SSH вместо копирования вашего закрытого ключа в экземпляр: выполните ssh -A instance1_ip, а затем ssh instance2_ip из экземпляра один. Таким образом, вам не нужен закрытый ключ на instance1 .

...