1Passwordのアイテムをdata sourceにするterraform-provider-opを作った

1Password CLI経由で1Passwordのアイテムをdata sourceとして使うterraform-provider-opを作った。

github.com

以下の用のPostgreSQL providerのパスワードを自分のマシンの1Passwordからとってこれる。

provider "op" {
}

data "op_item" "postgres" {
  title = "my-postgres"
}

provider "postgresql" {
  username = "scott"
  password = data.op_item.postgres.password
}

ローカルマシン以外の環境での実行が難しいので使いどころを選ぶが、便利なときは便利…のような気がする。

Terraform Shell plugin

よくよく調べたらすでに1PasswordにはShell pluginという仕組みがあってBetaであるものの1Password CLI経由でクレデンシャルをterraformに渡せるようだった。

developer.1password.com

あまりきちんと仕組みを把握していないが、以下のブログを読んだ感じ環境変数でクレデンシャルを渡せるように見えた。

blog.mmmcorp.co.jp

data sourceほどの柔軟性はなさそうだけれど、公式が提供しているしtfstateに残らないのはよいかもしれない。

op run

あと全然知らなかったけど、1Password CLIrunというコマンドがあって、op run --- hoge command と実行すると環境変数経由でhogeにクレデンシャルをわたす便利機能があった

export DB_PASSWORD="op://app-prod/db/password"
op run -- printenv DB_PASSWORD

developer.1password.com

www.taccoform.com

しらない便利機能が多い。

1Password Connect serverも調べよう