TerraformでEC2インスタンスを作成する際のSSH鍵の取り扱い方法についてまとめていきます。
自己紹介
- 都内のDevOps系の企業でエンジニアをやっています。
- 主にAWSとTerraformを扱っております。
- フルリモートで勤務しております。
- 大阪在住、年齢は27歳、趣味は古着屋巡りと映画鑑賞です。
本記事の内容
- 手順1
- マネジメントコンソール上でキーペアを作成し、それを使用する方法
- 手順2
- ローカルで公開鍵と秘密鍵を生成し、それを使用する方法
VPC
VPCの設定は以下を使用していきます。
キーペアの作成[手順1]
マネジメントコンソールから[EC2]>[キーペア]>[キーペアを生成する]を押下してキーペア作成ページに遷移します。
[キーペアを生成]を押すと自動的にローカルへの保存画面が表示されるので適切な場所に保存します。
※ ~/.ssh
ディレクトリに保存するのが一般的です。
EC2インスタンスの作成
main.tf
# --------------------------------
# EC2の作成
# --------------------------------
resource "aws_instance" "ssh-key-test-ec2" {
ami = "ami-03dceaabddff8067e" #amazon linux2
instance_type = "t2.micro"
subnet_id = aws_subnet.public-subnet-01.id
vpc_security_group_ids = [aws_security_group.vpc-01-ec2-sg.id]
associate_public_ip_address = true
key_name = "terraform_keypair"
tags = {
"Name" = "ssh-key-test-ec2"
}
}
terraform apply
します。
接続確認してみます。
成功しました。
こちらは簡単でしたね。
流れとしては
- マネジメントコンソールでキーペアを作成
- ローカルに秘密鍵を保存
- そのキーでアクセス
でした。
SSH鍵の生成[手順2]
上記の記事を参考に実際にやっていきます。
ターミナルでコマンドでSSH鍵を作成
公開鍵と秘密鍵が生成されたことが確認できました。
main.tf
# --------------------------------
# キーペアの作成
# --------------------------------
resource "aws_key_pair" "keypair" {
key_name = var.key_name # キー名
public_key = var.public_key_path # ローカル上のキーペアのファイルパス
}
# --------------------------------
# EC2の作成
# --------------------------------
resource "aws_instance" "ssh-key-test-ec2" {
ami = "ami-03dceaabddff8067e"
instance_type = "t2.micro"
subnet_id = aws_subnet.public-subnet-01.id
vpc_security_group_ids = [aws_security_group.vpc-01-ec2-sg.id]
associate_public_ip_address = true
key_name = var.key_name
tags = {
"Name" = "ssh-key-test-ec2"
}
}
キーペアのリソースを別途作成する必要あります。
terraform apply
します。
接続確認できました。
SSH鍵をを使用する方法難しいと思いましたがこちらもそこまで難しくありませんでした。
今日はここまで。