ちばのてっく

積極的にアウトプット

Terraformでキーペアつくってみた

EC2にSSH接続するためのキーペアをTerraformでつくってみた。

結論

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.43"
    }
  }
}

provider "aws" {
  region = "ap-northeast-1"
}

resource "tls_private_key" "this" {
  algorithm = "ED25519"
}

resource "local_file" "private" {
  filename        = "id_ed25519"
  content         = tls_private_key.this.private_key_openssh
  file_permission = "0600"
}

resource "aws_key_pair" "this" {
  key_name   = "by-terraform"
  public_key = tls_private_key.this.public_key_openssh
}

ポイント

  • tls_private_key
    • ssh-keygenコマンドに相当し、SSH接続に必要な秘密鍵と公開鍵を作成してくれる。
    • algorithmには、RSA、ECDSA、ED25519を選択できる。最も強度の高いED25519を採用した。
  • local_file
    • ファイルを作成してくれる。
    • contentにtls_private_keyで作成した秘密鍵を指定し、SSH接続用の秘密鍵をファイル出力する。
    • file_permissionはデフォルトでは777。ガバガバだとSSH接続時にエラーになると思うので、600に変更する。
  • aws_key_pair
    • キーペアを作成してくれる。
    • public_keyにtls_private_keyで作成した公開鍵を指定する。