この記事はTerraform Advent Calendar 2019 の9日目の記事です。
私の所属しているSEQSENSEではTravis CIを主に利用しています。 CIサービスを使うにあたって、ビルドで使う環境変数やSSH鍵などの管理は課題の一つです。
一つ一つ手動で設定していってもいいのですが、リポジトリ数が多くなると
などの問題が発生したりします。 それを解決するためにTravis CIの設定をコードナイズして一括管理するためのTerraform providerを作成しました。
よかったら、使ってみてください! *1
使い方
これはオレオレprovider (正式名称はThird-party plugin) のため、バイナリをGitHubのReleasesから落として来る必要があります。
curlなんかを使ってCLIでインストールする場合はこんな感じでしょうか。
$ latest=$(curl -s https://api.github.com/repos/kamatama41/terraform-provider-unofficial-travis/releases/latest | jq -r ".name") $ os=$(uname | tr '[:upper:]' '[:lower:]') $ curl -LO https://github.com/kamatama41/terraform-provider-unofficial-travis/releases/download/${latest}/terraform-provider-utravis_${latest}_${os}_amd64.zip $ unzip terraform-provider-utravis_${latest}_${os}_amd64.zip && rm terraform-provider-utravis_${latest}_${os}_amd64.zip
インストール後、実際のTFファイルの書き方はこんな感じになっています。
# Configure the unofficial Travis Provider (utravis) provider "utravis" { base_url = "https://api.travis-ci.com/" token = "${var.travis_api_token}" } # Add an environment variable to the repository resource "utravis_env_var" "my-repo" { slug = "myuser/my-repository" name = "FOO" value = "bar" public = true } # Add a private key to the repository resource "utravis_key_pair" "my-repo" { slug = "myuser/my-repository" value = "${file("~/.ssh/id_travis_rsa")}" }
- プロバイダ名は
utravis
utravis_env_var
は環境変数を設定するためのリソースですpublic
フラグでTravisのコンソール上で表示するかどうかを指定できます (デフォルトはfalse)
utravis_key_pair
はSSH Keyを登録するためのリソースです。value
に秘密鍵の中身を指定します