Terraform の Azure DevOps プロバイダー
Terraform に Azure DevOps プロバイダーが追加されました。
Microsoft からも公式にアナウンスがありましたが、(なぜか)Azure DevOps Blog ではなく、Open Source Blog から発表されたので、気が付かなかったという人もいるかもしれません。
このプロバイダーを使えば、チーム プロジェクト、グループ、リポジトリ、ビルド定義などを Terraform で管理できるようになります。まだまだ機能的に制限はありますが、プロジェクト作成時に毎回同じ設定を手作業でするのが大変...という管理者の方には便利かと思います *1。
インストール方法
まだ Terraform Registory には存在しないらしいので、自分でプラグインをインストールする必要があります。 GitHub ページの Release から入手します。
インストール方法は使われているプラットフォームなどによってことなりますが、私は Terraform を WSL2 (Pengwin) 上で使っているので、以下のような流れで導入しました。
mkdir ~/.terraform.d/plugins/linux_amd64 cd ~/.terraform.d/plugins/linux_amd64 wget https://github.com/microsoft/terraform-provider-azuredevops/releases/download/v0.1.3/terraform-provider-azuredevops_v0.1.3_linux_amd64.tar.gz tar zxvf terraform-provider-azuredevops_v0.1.3_linux_amd64.tar.gz chmod +x terraform-provider-azuredevops_v0.1.3
使い方
チームプロジェクトを新規に作成し、作成したプロジェクトに Git リポジトリを追加する場合は以下のような tf ファイルを記述します。
provider "azuredevops" { version = ">= 0.0.1" } resource "azuredevops_project" "project" { project_name = "Sample Project" description = "This is Sample Project" visibility = "private" version_control = "Git" work_item_template = "Scrum" } resource "azuredevops_git_repository" "repo" { project_id = azuredevops_project.project.id name = "Sample Empty Git Repository" initialization { init_type = "Clean" } }
対象の Azure DevOps 組織の URL や実行に使用するパーソナル アクセス トークン (PAT) は環境変数として設定します。*2
export AZDO_ORG_SERVICE_URL="https://dev.azure.com/<your org>/" export AZDO_PERSONAL_ACCESS_TOKEN="<your PAT>"
おまけ
現時点でのリソースの一覧を以下に示します。
なお、実際に使うとすぐに気が付きますが、ドキュメントに記載はあっても、使おうとするとリリース バージョンにまだ実装されていないことがあるので、ドキュメントは参考程度に参照するとよいと思います。
- azuredevops_agent_pool
- azuredevops_agent_queue
- azuredevops_git_repository
- azuredevops_branch_policy_build_validation
- azuredevops_branch_policy_min_reviewers
- azuredevops_build_definition
- azuredevops_group
- azuredevops_group_membership
- azuredevops_project
- azuredevops_project_features
- azuredevops_resource_authorization
- azuredevops_serviceendpoint_azurerm
- azuredevops_serviceendpoint_bitbucket
- azuredevops_serviceendpoint_dockerhub
- azuredevops_serviceendpoint_github
- azuredevops_serviceendpoint_kubernetes
- azuredevops_user_entitlement
- azuredevops_variable_group