Terraform v0.13開発版でプロバイダーの自動インストール/更新を試す
今年の1月にTerraform Registryでプロバイダー(3rd含む)を配布できるようにするというアナウンスがありました。
ベータテストへの参加を募集していたので申し込んでおいたのですが、本日(2020/5/15)参加できるようになったとの連絡をいただいたので早速プロバイダーの公開&自動インストールを試しました。
Terraform Registryでのプロバイダーの配布
従来はterraform init
を実行してもgithub.com/terraform-providers配下のプロバイダーのみが自動インストールされるだけで、コミュニティが開発しているプロバイダーは~/.terraform.d/plugins/
配下に格納しておくなど手動でのインストール作業が必要でした。
これがTerraform Registryにあらかじめプロバイダーの登録を行っておくことで自動でインストール/更新が可能となりました。
試しにさくらのクラウド向けプロバイダーをTerraformRegistryで公開してみました。
(ベータテスト中は上記のプロバイダー自体が予告なく削除される可能性もあります)
プロバイダーのインストール/更新
公開したプロバイダーのインストール/更新を試してみます。
Terraform v0.13開発版のビルド
試すにはTerraform v0.13の開発版が必要です。今はビルド済みのバイナリが提供されていないため、GitHubからソースをクローンしてビルドする必要があります。 Goの開発環境を用意して以下でビルドします。
$ git clone https://github.com/hashicorp/terraform.git ; cd terraform
$ make dev
これで$GOPATH/bin/terraform
が作成されます。
tfファイルの準備
以下のようなブロックをtfファイルに記述する必要があります。
terraform { required_providers { sakuracloud = { source = "sacloud/sakuracloud" version = "~> 2" } } }
terraform init
の実行
あとはterraform init
を実行するだけです。
インストールされましたね!
インストールされたプラグインはカレントディレクトリ配下の.terraform/plugins
配下のディレクトリ内に格納されます。
これは便利ですね! 3rd プロバイダーは更新が面倒なために一度インストールしたらなかなか更新してもらえないという問題があったのですが、 これで更新も行えるようになるため非常に楽になると思います。 (もちろんバージョンをピンすることもできます)
ということで正式リリースがとても楽しみです!!
プロバイダー開発者向け: Terraform Registryでの配布までの作業
ここからはプロバイダー開発者向けにTerraform Registryでプロバイダーを配布するまでに必要な作業をまとめておきます。
全体的には以下のような作業が必要となります。
- HashiCorp社にベータテストへの参加を申し込む(こちらの記事を参照)
- 受付メールがきたら以下をHashiCorp社の担当者さんに伝える
- (HashiCorpさん側でTerraform Registryでのベータテストを有効にしてもらう)
- プロバイダーのビルド/署名(GoReleaserのテンプレートが提供される)
- (初回のみ) Terraform Registry上からプロバイダーの登録
Note: これ以外にもプロバイダーのリポジトリ内にドキュメントを指定のフォーマットで準備しておく必要があります。
プロバイダーのテンプレートなどを参考に準備しておきましょう。
これらはベータテスト参加時に提供されるドキュメント(多分一般公開されてるやつ)に書いてありますのでそちらに従って作業していけば大丈夫です。
Terraform Registry上での公開は以下のような感じです。
まず、ベータテストに参加すると右上のPublish
メニュー内にProvider
というメニューが生えます。
これを選ぶと次にGitHub上のオーガニゼーションを選択する画面が出てきます。
プロバイダーのリポジトリがあるオーガニゼーションを選択しましょう。
オーガニゼーションを選択すると、公開するプロバイダーのリポジトリを選択する画面になります。
あとはPublishボタンを押すだけです。 規約に同意したらチェックを入れてPublishボタンを押せば公開されます。
ドキュメントもterraform.ioのように綺麗に表示されてますね。
なお、古くからプロバイダーを書いている場合、ドキュメントの手直しが少々必要かもしれません。 具体的には各リソースのドキュメント(.md)の先頭にサブカテゴリー(サイドバー)の定義を書いていく必要があります。 この辺はTerraformのドキュメントを参照の上適切に直しておきましょう。
ということでTerraform v0.13の機能を先取りで試してみました。
従来の3rdプロバイダーは更新が面倒なために、古いバージョンを使っていること起因の問題がよく発生していました。 これを解消できますのでかなり期待しています。
v0.13のリリースが待ち遠しいですね!
以上です。