見出し画像

【105】【AWS】【Terraform】キーペアの設定

この記事を読むとキーペア設定について理解を深めることができます。

EC2インスタンスへの接続方法

AWSで仮想サーバーを構築しました。
どうやって接続するのでしょうか?
Macの場合、

SSH クライアント
EC2 Instance Connect
AWS Systems Manager Session Manager

この3つの選択肢がありますが、
SSHクライアントが一般的です。

必須の設定

AWSのインスタンスにSSH接続するためには、プライベートキーを見つけ、アクセス許可を設定する必要があります。
要するに公開鍵認証を行うわけです。
Terraformを使う場合は、ローカルの環境でキーペアをまず作成しましょう。
キーペアの作成や公開鍵認証についてはこの記事で。

これで公開鍵と秘密鍵を作成しました。
Terraform上に鍵の値を直接書くのは危険ですので、秘匿情報をターミナルで入力するようにします。
具体的には下記のコードを書きます。

variable "key_name" {
 description = <<DESCRIPTION
your_key.pubを入力してください。
.pubがつく公開鍵の方です。
秘密鍵と間違えないように。
DESCRIPTION
}

variable "public_key" {
 description = <<DESCRIPTION
cat ~/.ssh/your_key.pub
で出力された値を直打ちして下さい。
(パス名のみだと、私の環境ではエラーがでました。)
DESCRIPTION
}

作成したキーペアをterraformに設定しましょう。

resource "aws_key_pair" "auth" {
key_name   = var.key_name
public_key = var.public_key
}

そして、設定したキーペアをインスタンスと関連付けます。

key_name      = aws_key_pair.auth.id

過去の記事で作ったインスタンスに設定します。

terraform {
required_providers {
 aws = {
  source  = "hashicorp/aws"
  version = "~> 3.27"
 }
}
required_version = ">= 0.14.9"
}
provider "aws" {
profile = "default"
region  = "ap-northeast-1"
}
resource "aws_instance" "app_server" {
// このamiはUbuntuです
ami           = "ami-0df99b3a8349462c6"
instance_type = "t3.micro"
key_name      = aws_key_pair.auth.id
associate_public_ip_address = true
subnet_id = aws_subnet.public.id
vpc_security_group_ids = [aws_security_group.docker_ubuntu.id]
tags = {
 Name = "ExampleAppServerInstance"
}
}
resource "aws_key_pair" "auth" {
key_name   = var.key_name
public_key = var.public_key
}

関連記事

参考文献

実践Terraform AWSにおけるシステム設計とベストプラクティス (技術の泉シリーズ(NextPublishing)) オンデマンド (ペーパーバック) 

Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂3版

最後に
私がブログを書く目的は、素晴らしい本や、素晴らしい方々の技術記事を知って頂きたいからです。ぜひ、上記の参考文献を見て下さい。(noteなので広告とかは一切ありません。)

現在、株式会社grabssに行くために最後の悪あがきをしています!!

過去の活動

30日間でブログ記事を100件投稿しました。
トータルの投稿数
この記事は105件目の投稿です。

よろしければ、スキボタン及びサポートお願いします。勉強の励みになります。


この記事が気に入ったらサポートをしてみませんか?