目的
EC2にNginxがインストールされた状態を作り出し、ブラウザからデフォルトページが確認できることをゴールとする。
インフラ構築はTerraformでコード化することで再現性、再利用性、速度などが手作業に比べると高い。
GitHubリンク
手順
- TerraformからAWSリソースを操作できるように設定する
- Terraformをインストールする
- TerraformでEC2サーバを立ち上げてみる
- ネットワークを整える(VPC, サブネット, ルーティングテーブル,インターネットゲートウェイ)
- セキュリティグループ(ファイアウォール)を設定する
- Webサーバ用EC2を立ち上げる
- 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 > ユーザー > デフォルトユーザ > アクセスキーを作成
作成したアクセスキーIDとシークレットアクセスキーを控えておく(csvもダウンロードしておくと忘れたときに便利)。
Step2. AWSにてTerraform用IAMユーザの作成
TerraformからAWSに操作ができるようなIAMユーザを作成する。
AWSを操作することが可能なのは、AWSリソースかIAMユーザ(ルートユーザも可能だが非推奨)。
そのためTerraform用のIAMユーザを作成する。
AWSコンソールにアクセス
IAM > ユーザー > ユーザーを追加
ユーザ名 : terraform (これ以外でも自分が識別できれば任意のユーザ名で問題ない)
ポリシー : AdministratorAccess
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ユーザのシークレットキー]