このリポジトリは、Terraformを使用してAWS上にインフラストラクチャを構築するための設定ファイルを含んでいます。 以下の図は、このTerraform設定で作成されるインフラストラクチャの概要を示しています。
+-------------------------------------+
| Route 53 |
+-------------------------------------+
|
|
+------------------------------+
| ALB (ACM) |
+------------------------------+
|
|
+--------------+
| VPC |
+--------------+
|
|
+-----------------+-----------------+
| |
+--------------------+ +----------------------+
| Public Subnet | | Private Subnet |
| (Availability Zone)| | (Availability Zone) |
+--------------------+ +----------------------+
| |
+--------------------+ |
| EC2 Instance | |
| (Web Server) | |
+--------------------+ |
+----------------------+
| RDS Instance |
| (Database Server) |
+----------------------+
このリポジトリには、以下のファイルが含まれています。
main.tf
: Terraformのバージョンとプロバイダーの設定を定義します。network.tf
: VPC、サブネット、ルートテーブル、インターネットゲートウェイなどのネットワークリソースを定義します。security_group.tf
: Webサーバーとデータベース用のセキュリティグループを定義します。variables.tf
: Terraformで使用される変数を定義します。terraform.tfvars
: 変数の値を設定するファイルです。
このTerraform設定は、以下のリソースを作成します。
-
VPC
- 指定されたCIDRブロックを持つVPCを作成します。
-
サブネット
- パブリックサブネットとプライベートサブネットを作成します。
- パブリックサブネットにはインターネットからのアクセスが可能です。
- プライベートサブネットはインターネットから直接アクセスできません。
-
ルートテーブル
- パブリックサブネットとプライベートサブネット用のルートテーブルを作成します。
- パブリックサブネットのルートテーブルには、インターネットゲートウェイへのルートが含まれます。
-
インターネットゲートウェイ
- VPCにインターネットゲートウェイを作成し、パブリックサブネットへのインターネットアクセスを可能にします。
-
セキュリティグループ
- Webサーバー用のセキュリティグループを作成し、HTTP、HTTPS、SSHのインバウンドトラフィックを許可します。
- データベース用のセキュリティグループを作成し、Webサーバーからのみ3306ポートへのアクセスを許可します。
variables.tf
ファイルには、設定で使用される変数が定義されています。terraform.tfvars
ファイルで、これらの変数に値を割り当てることができます。
主な変数は以下の通りです。
profile
: AWSプロファイル名region
: AWSリージョンproject
: プロジェクト名environment
: 環境名vpc_cidr
: VPCのCIDRブロックpublic_subnets
: パブリックサブネットのマッピングprivate_subnets
: プライベートサブネットのマッピングavailability_zones
: アベイラビリティゾーンのマッピング
- このリポジトリをクローンします。
terraform.tfvars
ファイルを作成し、変数に適切な値を設定します。terraform init
コマンドを実行して、Terraformを初期化します。terraform plan
コマンドを実行して、実行計画を確認します。terraform apply
コマンドを実行して、インフラストラクチャを作成します。
Terraformを使用してAWS上にVPC、サブネット、セキュリティグループなどのリソースを作成し、Webサーバーとデータベースのインフラストラクチャを構築することができます ※NSについては、自分でRoute53に移管する必要がある