【Terraform】S3のdeploy

IT
  • Terraformを初めて触るので、ひとまず簡単なもので確認したい
  • 普段AWSを使用しているので、S3をTerraformからdeployしてみる
  • 実施memo
  • 前提
    • Terraformをインストールしていること
    • https://andynotes-blog.com/terraform-install/
    • ローカル環境からdeployする
    • 今回、terraformの操作に集中するため、AWSの認証はdefaultクレデンシャルを使用した
    • defaultクレデンシャルを設定しておけば、terraformが自動で参照する

実施手順

  • ①作業ディレクトリの作成
  • ②構成ファイル(main.tf)の作成
  • ③作業ディレクトリの初期化(terraform init)
  • ④実行計画の作成(terraform plan)
  • ⑤リソースの作成(terraform apply)
  • ⑥リソース作成の確認

①作業ディレクトリの作成

  • Terraform実行時に複数のファイルが作成される
  • Terraform実行ディレクトリとしてディレクトリを用意する
  • 名前はなんでも良い
    • 今回はterraform-s3-exampleとした

②構成ファイル(main.tf)の作成

  • 今回の構成ファイルは下記のように記述
provider "aws" {
  region = "ap-northeast-1"  # 使用するAWSリージョン
}

resource "aws_s3_bucket" "s3-terraform-test" {
  bucket = "【バケット名】"  # ユニークなS3バケット名
}
  • resource "aws_s3_bucket" "s3-terraform-test" {}について
    • リソースの設定を記述する
    • aws_s3_bucket
    • リソースの種類の設定値、今回はS3のためaws_s3_bucket
    • 別のリソースの場合は別の名称になる
    • s3-terraform-test
    • tfファイルでの定義名。任意の値でOK
    • プログラムコードで設定する関数名や変数名のイメージ
    • bucket = "【バケット名】"
    • バケット名を設定。この名称でデプロイされる
  • 中心となる構成ファイルを「main.tf」とするのは慣例ではあるが、mainの名称ではなくても問題ない
    • 〇〇.tfであれば、任意の名前でOK
    • Terraformは、ディレクトリ内のすべてのtfファイルを自動的に読み込み、統合して1つの構成として扱うため

③作業ディレクトリの初期化(terraform init)

  • main.tfと同じディレクトリ階層でコマンドterraform initを実行
    • main.tfが無いとエラーになるため、main.tf作成後にコマンドを実行する
    • ↑tfファイルが無いとエラーになるという意味です(ファイルの名前は任意です)
  • Terraform has been successfully initialized!と表示されたらOK

④実行計画の作成(terraform plan)

  • コマンドterraform planの実行
    • tfファイルと同じディレクトリ階層で実行
    • AWS側にリソースがないため、S3バケットが新しく追加される旨が表示される
  • planの段階ではリソースは作成されない

⑤リソースの作成(terraform apply)

  • コマンドterraform apply
    • tfファイルと同じディレクトリ階層で実行
    • planで提示された変更内容(今回はS3バケットの新規作成)を適用するか聞かれるのでYesと入力

⑥リソース作成の確認

  • AWSコンソールにアクセスして、S3バケットが設定した名前で作成されていれば成功

コメント

タイトルとURLをコピーしました