hoge-hogeoのひきこもごも

インフラエンジニアだけど形を持ったインフラを触ったことがない人の徒然

terraformでaws access_key, secret_keyの指定方法

個人的備忘録。本家のドキュメントが英語なので。

IAMの指定の仕方はいくつかある

  1. tfファイルに直書きする
  2. コマンド実行時にオプションで渡す
  3. ファイルに書いておく

1. tfファイルに直書きする

本家のexampleに一番最初に出てくる書き方。

どやーってgithubとかに上げたら後悔するやつ。

$ cat example.tf
provider "aws" {
  access_key = "hogeo"
  secret_key = "hogeo_secret"
  region     = "ap-northeast-1"
}

2. コマンド実行時にオプションで渡す

variables.tfをつくる

$ cat variables.tf
variable "access_key" {}
variable "secret_key" {}
variable "region" {
  default = "ap-northeast-1"
}

example.tfは変数に置き換える。

$ cat example.tf
provider "aws" {
  access_key = "${var.access_key}"
  secret_key = "${var.secret_key}"
  region     = "${var.region}"
}

apply実行時に-varオプションで渡す。

$ terraform apply -var 'access_key=hogeo' -var 'secret_key=hogeo_secret'

オプション忘れても、入力待ちになる

$ terraform apply
var.access_key
  Enter a value:

3. ファイルに書いておく

variables.tf書くのと、example.tfの変数化までは一緒だけど、コマンドラインのオプションで渡すんじゃなくて、ファイルに書くパターン。

terraform.tfvarsというファイル名をカレントにおいて、中にaccess_key, secret_keyを書くことで、IAMをレシピ?に書かずに済む。

$ cat terraform.tfvars
access_key = "hogeo"
secret_key = "hogeo_secret"

terraform.tfvarsというファイル名じゃないと、勝手に読んでくれないので、別のファイル名にしたいときは-var-fileオプションで指定してあげる。

↓はファイル名に「_org」とかつけちゃったのd、-var-fileオプションで指定したとき。

$ terraform destroy -var-file="terraform.tfvars_org"

今日はここまで。全然進まない。。。

本日の一言

勉強してると、部屋の片づけ始めて、カメラのSDカードとか見つかっちゃって、いつの間にか昔の写真見返して時間が過ぎてるよね。