LoginSignup
1
0

Tarraformを使ってAWSにWebサーバを構築 #1 ~TerraformからAWSリソースを操作できるように設定する~

Last updated at Posted at 2023-06-28

目的

EC2にNginxがインストールされた状態を作り出し、ブラウザからデフォルトページが確認できることをゴールとする。
インフラ構築はTerraformでコード化することで再現性、再利用性、速度などが手作業に比べると高い。
GitHubリンク

手順

  1. TerraformからAWSリソースを操作できるように設定する
  2. Terraformをインストールする
  3. TerraformでEC2サーバを立ち上げてみる
  4. ネットワークを整える(VPC, サブネット, ルーティングテーブル,インターネットゲートウェイ)
  5. セキュリティグループ(ファイアウォール)を設定する
  6. Webサーバ用EC2を立ち上げる
  7. Webサーバが立ち上がる際にWebサーバソフトをインストールするように設定する

今回の到達点

TerraformからAWSリソースを操作できるように設定する

Step0. AWS CLIのインストール

AWS CLI インストール
TerraformではコマンドからAWSリソースに対して処理を行うが、AWS CLIを介する必要がある。
バージョンは2で特に問題ない。
インストールできたかの確認はコマンドプロンプトやターミナルで以下を実行。結果としてバージョンが表示されれば無事インストール完了

$ aws --version
aws-cli/2.11.18 Python/3.11.3 Windows/10 exe/AMD64 prompt/off
Step1. AWSにてデフォルトのIAMユーザのアクセスキーを作成

ログインなどに使用しているデフォルトユーザのアクセスキーを作成する。

AWSコンソールにアクセス
IAM > ユーザー > デフォルトユーザ > アクセスキーを作成

image.png

作成したアクセスキーIDとシークレットアクセスキーを控えておく(csvもダウンロードしておくと忘れたときに便利)。
image.png

Step2. AWSにてTerraform用IAMユーザの作成

TerraformからAWSに操作ができるようなIAMユーザを作成する。
AWSを操作することが可能なのは、AWSリソースかIAMユーザ(ルートユーザも可能だが非推奨)。
そのためTerraform用のIAMユーザを作成する。

AWSコンソールにアクセス
IAM > ユーザー > ユーザーを追加
ユーザ名 : terraform (これ以外でも自分が識別できれば任意のユーザ名で問題ない)
ポリシー : AdministratorAccess
image.png

Step3. Terraform用IAMユーザのアクセスキーを作成(Step1を参照)

Terraform用IAMユーザのアクセスキーを作成する。
このアクセスキーをTerraform側で設定することで、TerraformでのAWS操作を可能とする。

AWSコンソールにアクセス
IAM > ユーザー > 2で作成したユーザ > アクセスキーを作成

作成したアクセスキーIDとシークレットアクセスキーを控えておく(csvもダウンロードしておくと忘れたときに便利)。

Step4. デフォルトユーザのアクセスキーをAWS CLIに設定
$ aws configure
AWS Access Key ID [None]: [ここにデフォルトユーザのアクセスキーを入力]
AWS Secret Access Key [None]: [ここにデフォルトユーザのシークレットキーを入力]
Default region name[None]: ap-northeast-1
Default output format [None]: json
Step.5 Terraform用IAMユーザのアクセスキーをAWS CLIに設定
$ aws configure --profile terraform
AWS Access Key ID [None]: [ここにTerraform用IAMユーザのアクセスキーを入力]
AWS Secret Access Key [None]: [ここにTerraform用IAMユーザのシークレットキーを入力]
Default region name[None]: ap-northeast-1
Default output format [None]: json
Step.6

以下のファイルにアクセスキーの設定が反映されているかを確認
~/.aws/credentials

[default]
aws_access_key_id = [デフォルトユーザのアクセスキー]
aws_secret_access_key = [デフォルトユーザのシークレットキー]
[terraform]
aws_access_key_id = [Terraform用IAMユーザのアクセスキー]
aws_secret_access_key = [Terraform用IAMユーザのシークレットキー]
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0