2022.03.27  

【Terraform】ブロック一覧(resource, data, provider, locals, output, variables,)

Terraform,  AWS    

TerraformでAWSの構築行う際に利用するブロックについてまとめました。

参考動画

ブロック名 説明
locals 外部からの変更が行えない変数を設定する。
variables 外部から変更可能な変数を設定する 。
provider 使用する製品(aws等)を宣言し、接続環境の設定(profile、regionなど)を行う。
resource 第一引数にAWSのサービス名、第二引数にラベル(任意の名前)を記述することで。 AWSサービスを構築できる。ec2を作成する場合、第一引数に"aws_instance"と記述する。
data jsonなどで外出ししたい設定を記載しておき、外部のresourceブロックから読み込ませたりするのに利用する 。
output 作成したリソース情報をterraform apply後にコンソールへ出力する。ファイルなどにも出力可能。

localsの定義例

変数はlocals {"変数名" = "値"}のかたちで定義します。
変数の呼び出しは"${local.変数名}"と記述します。

locals {
  env = "development"
  my_name = "hoge"
}

resource "aws_instance" "hoge" {
  ami = "ami-0ae111ac6fd3e34c9"
  instance_type = "t2.micro"
  tags = {
    Name ="${local.env}_${local.my_name}"
  }
}

variablesの定義例

変数はvariables "変数名" {type = 変数の型 default ="変数のデフォルト値"}のかたちで定義します。
変数の呼び出しは"${var.変数名}"と記述します。

variables "env" {
  type = string
  default = "development"
}

resource "aws_instance" "hoge" {
  ami = "ami-0ae111ac6fd3e34c9"
  instance_type = "t2.micro"
  tags = {
    Name ="${var.env}_test"
  }
}

providerブロックの定義例

下記例では、awsを利用して環境my_profileのリージョンap-northeast-1に接続するように設定しています。※profileは~/.aws/config~/.aws/credentialsに設定されている情報。

provider "aws" {
  profile = "my_profile"
  region = "ap-northeast-1"
}

dataブロックの定義例

下記例では、ポリシードキュメントをdataで定義し、 IAMポリシーの設定時にそれを読み込ませています。

# ポリシードキュメントの定義
data "aws_iam_policy_document" "allow_describle_regions" {
  stement { 
    actions = ["ec2:DescribeRegions"]
    resources = ["*"]
    }
  }

# IAMポリシーの定義(上記dataを参照する)
resource "aws_iam_policy" "my_policy" {
  name = "my_policy"
  policy = data.aws_iam_policy_document.allow_describle_regions.json
}

outputブロックの定義例

下記例は、ec2インスタンス作成後にコンソールへそのidを出力します。

# ec2インスタンスの定義
resource "aws_instance" "my_ec2" {
  ami = "ami-0ae111ac6fd3e34c9"
  instance_type = "t2.micro"
}

# terraform apply後に上記で作成したec2インスタンスのidをコンソールに出力する
output "ec2_instance_id_view" {
  value = aws_instance.my_ec2.id
}
コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信