LoginSignup
11
8

AWSで、Terraformを利用する方法をまとめてみた(1/10)

Last updated at Posted at 2023-04-03

Terraformとは?

Terraformは、クラウド上のインフラストラクチャをコードで定義するためのツール。

どのような機能があるのか?

1. プロバイダーの定義
AWS、Microsoft Azure、Google Cloud Platformなど、Terraformが対応するクラウドプロバイダーを指定出来る。
2. リソースの定義
EC2インスタンス、S3バケット、VPCなど、クラウドプロバイダーが提供するリソースをコードで定義出来る。
3. モジュールの使用
共通の機能を持つリソースを再利用可能なモジュールとして定義し、コードの重複を減らす事が出来る。
4. ステート管理
Terraformが管理するリソースの状態をファイルに保存し、次回のデプロイ時に状態を維持出来る。
5. デプロイ
Terraformが定義したリソースをクラウドプロバイダーにデプロイし、インフラストラクチャを構築。
コードによるインフラストラクチャの管理により、バージョン管理や変更履歴の管理が容易になる。

AWSを対象としたTerraformの環境構築手順
(Windows PC向け)

1. AWS CLIのインストール
Terraformを使用するためには、AWS CLIがインストールされている必要があります。
AWS CLIのインストール方法については、
AWS公式サイト(https://aws.amazon.com/cli/)を参照してください。
2. AWSアクセスキーの作成
AWSにログインし、IAMからアクセスキーを作成します。アクセスキーは、後でTerraformでAWSリソースにアクセスする際に使用します。
3. Terraformのダウンロード
Terraformの公式サイト(https://www.terraform.io/downloads.html)から、
Windows用のTerraformバイナリをダウンロードします。
4. バイナリのインストール
ダウンロードしたTerraformバイナリを展開し、インストール先となるディレクトリに移動します。例えば、C:\terraformというディレクトリを作成して、その中にTerraformバイナリを配置します。
5. Terraformの初期化
Terraformのコードが格納されたディレクトリで、terraform initコマンドを実行します。このコマンドにより、TerraformがAWSプロバイダを使用できるようになります。
6. AWSの認証情報の設定例
TerraformがAWSにアクセスするためには、AWSの認証情報を設定する必要があります。
次のようにコマンドプロンプトで環境変数を設定します。

set AWS_ACCESS_KEY_ID=<access-key> 
set AWS_SECRET_ACCESS_KEY=<secret-key> 

7. Terraformのコードの作成
Terraformで管理するAWSリソースをコードで定義します。
例えば、EC2インスタンスを作成する場合は、.tfファイルにaws_instanceリソースを定義します。
8. Terraformの実行
terraform applyコマンドを実行して、コードに従ってAWSリソースを作成します。
また、terraform planコマンドを実行することで、作成されるAWSリソースの変更点を確認することもできます。
9. Terraformのクリーンアップ
AWSリソースの変更を取り消す場合は、terraform destroyコマンドを実行してリソースを削除します。

手順

1. プロジェクトディレクトリの作成
Terraformを実行するためには、プロジェクトディレクトリを作成する必要があります。

mkdir myproject 
cd myproject 

2. AWS認証情報の設定
TerraformでAWSにアクセスするAWSアクセスキーとシークレットアクセスキーを設定する。
AWS CLIを使用してAWS認証情報を設定することができます。

$ aws configure AWS Access Key ID [None]: 
************ AWS Secret Access Key [None]:
 ************ Default region name [None]:
 ap-northeast-1 Default output format [None]: json

3.コード記載(サンプル)

AWSのAuto ScalingグループをALBに接続する方法

1.ALBリソースを作成します。

resource "aws_lb" "example" {
  name               = "example-lb"
  internal           = false
  load_balancer_type = "application"
  subnets            = [aws_subnet.example1.id, aws_subnet.example2.id]
  security_groups    = [aws_security_group.example.id]
}

2.AMIイメージを指定するLaunch Configurationリソースを作成します。

resource "aws_launch_configuration" "example" {
  name                 = "example-lc"
  image_id             = "ami-0123456789abcdef"  # ここにAMIイメージIDを指定
  instance_type        = "t2.micro"              # インスタンスタイプを指定
  security_groups      = [aws_security_group.example.id]
  key_name             = "example-keypair"
  associate_public_ip_address = true
  user_data = <<-EOF
              # インスタンスの初期化スクリプトをここに指定
              # 例えば、Apache Web Serverをインストールするシェルスクリプトをここに記述
              # EOF
              EOF
}

3.Auto Scalingグループリソースを作成します。
例として、最小数1、最大数3のAuto Scalingグループを作成

resource "aws_autoscaling_group" "example" {
  name                 = "example-asg"
  launch_configuration = aws_launch_configuration.example.id
  min_size             = 1
  max_size             = 3
  target_group_arns    = [aws_lb_target_group.example.arn]
  vpc_zone_identifier  = [aws_subnet.example1.id, aws_subnet.example2.id]
  health_check_type    = "EC2"
}

4.ALBターゲットグループを作成します。

resource "aws_lb_target_group" "example" {
  name     = "example-tg"
  port     = 80
  protocol = "HTTP"

  health_check {
    path = "/"
  }
}

Auto ScalingグループがALBに接続されます。

作成したコードを実行する

Terraformが管理するリソースの定義
main.tfには、Terraformが管理するリソースを定義するコードが含まれています。
AWSのEC2インスタンスやRDSなどのリソースです。上記サンプルコードが該当します。

Terraform初期化
Terraformプロジェクトを初期化します。

terraform init

terraform initコマンドを実行して、必要なプロバイダやモジュールの初期化を行います。このコマンドを実行することで、main.tfで指定されたプロバイダのバージョンを解決し、必要なモジュールをダウンロードすることができます。

Terraformの構文確認
Terraformコードの構文を確認します。

terraform validate

Terraformの実行計画の確認
Terraformの実行計画を確認します。

terraform plan

terraform planコマンドを実行して、変更内容を確認します。このコマンドを実行することで、Terraformがどのような変更を加えるかを表示することができます。

Terraformの実行
Terraformコードを実行します。

terraform apply

terraform applyコマンドを実行して、実際に変更を加えます。このコマンドを実行することで、main.tfに定義されたリソースが作成、更新、削除されます。

Terraformの削除
Terraformコードで作成されたリソースを削除します。

terraform destroy

terraform destroyコマンドを実行して、作成したリソースを削除することができます。このコマンドを実行することで、main.tfに定義されたリソースが削除されます。

AWSで、Terraformを利用する方法をまとめてみた(2/10)
https://qiita.com/kimuni-i/items/6298ed10adc6ad450488
AWSで、Terraformを利用する方法をまとめてみた(3/10)
https://qiita.com/kimuni-i/items/4d2f90506eb2dd4ee702
AWSで、Terraformを利用する方法をまとめてみた(4/10)
https://qiita.com/kimuni-i/items/b97089a820cc06ed2d9c
AWSで、Terraformを利用する方法をまとめてみた(5/10)
https://qiita.com/kimuni-i/items/11efb60b9a731d212211
AWSで、Terraformを利用する方法をまとめてみた(6/10)
https://qiita.com/kimuni-i/items/943daf8f4e80af12b70e
AWSで、Terraformを利用する方法をまとめてみた(7/10)
https://qiita.com/kimuni-i/items/b2cc6e1e4b5d5c1a92cb
AWSで、Terraformを利用する方法をまとめてみた(8/10)
https://qiita.com/kimuni-i/items/2934372c385ba0561425
AWSで、Terraformを利用する方法をまとめてみた(9/10)
https://qiita.com/kimuni-i/items/edbdc88f0bca9c0354d2
AWSで、Terraformを利用する方法をまとめてみた(10/10)
https://qiita.com/kimuni-i/items/2f900d792c38ad93979c

11
8
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
11
8