Terraform

Terraform リソースの命名規則を考える

異論は認めるし、手探りなので特にこれと言った答えはない。 Terraformではリソースに名前をつける(terraform_res_nameの部分)。 resource "aws_s3_bucket" "terraform_res_name" { bucket = "enq-${var.env}-${var.service}-private" acl = "private" tags …

Terraformで循環参照のエラーが出た時

これは、リソースを変数で参照して整合性?を保とうとしたときに良くなる。 variable "env" { type = "string" default = "dev" } variable "service" { type = "string" default = "foo" } resource "aws_cloudfront_origin_access_identity" "origin_acces…

Terraformでテンプレートを使ってポリシーを定義する

Terraformにはテンプレート機能がある。よく使われるのは、ポリシーの設定などで、ヒアドキュメントで記述されるようなものを、別ファイルに記述し変数を与えて埋めていく。 ポリシーを定義する 例えば、ユーザやグループにポリシーを設定するために、まずポ…

Terraform で変数を使う

Terrafromでは変数が利用でき、variableを定義して、値を注入する。 一番シンプルな例は次の通り。 provider "aws" { region = "ap-northeast-1" } variable "foo" {} resource "aws_s3_bucket" "s3_bucket" { bucket = "${var.foo}" acl = "private" } vari…

Terraform でループして複数のリソースを作成する

TerraformでListの変数を使ってループさせたい時がある。 例えば、ユーザアカウントを複数作りたいとき。 以下のようなリソース定義を必要な分だけ書かないといけない。10個あったら10個。メッチャ大変。 resource "aws_iam_user" "developer" { name = "foo…

TerraformのstateをS3でリモート管理する

Terraformの管理下にあるリソースの情報は tfstate ファイルに保存されている。たとえば、チームでこのtfstateを共有したいときにどうすべきかというのが課題になる。 tfstate ファイルをS3バケットに保存する(version >= 0.9.0) Terraform 0.9.0 から terra…

Terraform に入門してみる

Terraformを使うのでとりあえず入門記事を漁って見る。 Terraform簡易チュートリアル on AWS - Qiita EC2の起動から削除までを一通り説明している最小構成のチュートリアルだと思う。一番最初にやるのがよいかな。内容は事前準備、Terraformの導入、Terrafor…