kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Terraform TLS Provider: Terraform で EC2 キーペアを生成する

Terraform TLS Provider を使うと Terraform で秘密鍵などを生成できる🔒️

registry.terraform.io

ちなみにドキュメントには以下のように書いてあって,tfstate にシークレットが含まれるためプロダクション環境での利用は避けると良さそう.

Because of these limitations, use of these resources for production deployments is not recommended.

今まで Terraform TLS Provider を使ったことがなく,今回は検証として Amazon EC2 のキーペアを Terraform でデプロイしてみた❗️

👾 main.tf

tls_private_key リソースで秘密鍵を生成する.アルゴリズムは RSA にしておく.そして aws_key_pair リソースで Amazon EC2 のキーペアを登録すれば OK👌最後に local_file リソースで .pem ファイルをローカルに出力する.

resource "tls_private_key" "main" {
  algorithm = "RSA"
}

resource "aws_key_pair" "main" {
  key_name   = "sandbox-key-pair"
  public_key = tls_private_key.main.public_key_openssh
}

resource "local_file" "private_key" {
  filename = "sandbox-key-pair.pem"
  content  = tls_private_key.main.private_key_pem
}

Terraform TLS Provider で生成した .pem ファイルを紐付けた Amazon EC2 インスタンスを起動して期待通りに接続できた \( 'ω')/

$ chmod 400 sandbox-key-pair.pem
$ ssh -i ./sandbox-key-pair.pem ec2-user@18.183.161.108
   ,     #_
   ~\_  ####_        Amazon Linux 2023
  ~~  \_#####\
  ~~     \###|
  ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'