Previous slide
Next slide
Toggle fullscreen
Open presenter view
Terraform Provider for Azure の
開発と貢献方法
Tatsuro Shibamura @shibayan
自己紹介
芝村 達郎 @shibayan
Azure 系フリーランスエンジニア
Microsoft MVP for Microsoft Azure
Blog :
https://blog.shibayan.jp
GitHub :
https://github.com/shibayan
今日は Terraform Provider for Azure の話
Terraform Provider for Azure について
Azure のリソースを Terraform で管理するために使います
https://github.com/hashicorp/terraform-provider-azurerm
でアクティブに開発中
リポジトリのホスト元が変わりました (
terraform-providers
=>
hashicorp
)
最近はかなりコミュニティドリブンで開発されてます
azure
rm
は Resource Manager API を使っていることを表しています
昔は
terraform-provider-azure
もあった
Azure における IaC 向けツールの選択肢は地味に多い
Azure ネイティブサポートの
ARM Template
最終的に ARM Template にコンパイルされる DSL の
Bicep
汎用言語でリソースを定義できる
Pulumi
喋ってる人は Terraform と
Terraform Cloud
が大好きです
よく耳にする不満
他の IaC 向けツールに比べて新サービス・機能に対応するのが遅い
ARM Template
や
Bicep
はタイムラグなしで新機能が利用可能
Pulumi
は API 定義からの自動生成になったのでタイムラグが最小限
Terraform は Provider の対応を待つ必要がある
対応していない機能が多い
Terraform では利用頻度の低い機能は後回しになりがち
新サービス・新機能に対応するのが遅い
Terraform Provider における新サービス・機能の追加の流れ
新しいサービス・機能が実装される
Azure REST API 定義 (Swagger) が更新される <= (Bicep / Pulumi はここで OK)
更新された API 定義を元に Azure SDK for Go が更新される
Terraform Provider に新リソース・プロパティが追加される
新しいバージョンの Terraform Provider がリリース
Terraform Provider での対応が遅れる理由
API 定義の更新から Azure SDK の更新までにタイムラグがある
平均して数週間遅れでリリースされている
新リソースの追加にはテストケースを含め作業が多い
リソース定義・単体テスト・受け入れテスト・ドキュメントなど
そもそも Azure REST API と API 定義の出来が悪い
API 定義にミスがあることも多い
一貫性のない API 設計になっていることが多い
Terraform Provider で Azure REST API の
ダメな部分をカバーしている
要するに Azure REST API の設計が悪い
(ことが多い)
対応していない機能が多い
古いリソースほど抜け漏れが出てしまう
メンテナーが Azure 全てのアップデートを知っているわけではない
新しく追加された機能は Issue や PR が無いとそもそも気付かれない
特に Azure Storage や App Service は多い傾向
プロパティの追加だけで解決出来るので、簡単に貢献できる!
必要な機能が無ければ Issue を作成し、PR を投げています
Terraform Provider へ貢献する
Issue を作成して Reaction をたくさん集める(誰でもできる!)
ドキュメントの typo やプロパティの記載漏れを修正(簡単!)
既存リソースへ新しいプロパティを追加(Azure の知識があれば簡単)
新規リソースを追加(Azure と Provider 両方の知識が必要、難しい)
喋ってる人は
2
と
3
を主に行っています
Terraform Provider への貢献の例
開発環境を用意する
Go 1.16.x がインストールされていて、Bash / Make が使える環境なら OK
Windows にも対応しているが、最近はテストが通らない
WSL と VS Code を利用した開発環境の構築が簡単
Terraform Provider for Azure の開発環境を VS Code Dev Container で構築する
さらに詳しく知りたい方は
Terraform Provider for Azure に貢献してみた話 - Speaker Deck
Twitter で @shibayan に聞いてくれてもよいです
まとめ
Terraform Provider for Azure への貢献は簡単!
ご清聴ありがとうございました