はじめに
どうも、@to-fmakです。今回は、APIを利用してTerraform CloudのWorkspaceの設定変更を行いましたので、その手順について紹介します。
具体的には、WorkspaceのTerraformバージョンを変更する方法と、最近開発した一括設定変更用の自動化ツールについて紹介します。
※本記事の内容はすべて執筆時点(2024年10月)の情報に基づいています。
WorkspaceのTerraform Version設定について
Terraform CloudのWorkspaceでは、以下のような方法でTerraformのバージョンを設定することができます。
Automatically updating
-
~>1.9.0 latest(1.9.8)
など:マイナーバージョン(例:1.9)まで固定し、パッチバージョン(例:1.9.8)は最新を使用する -
latest
:最新のバージョンを常に使用する
All released versions
過去にリリースされたすべてのバージョンから、特定のバージョンを選択することができます。
デフォルトの設定
By default, HCP Terraform uses the latest Terraform version. You can alternatively select an exact version or use a version constraint.
デフォルト設定では、最新のバージョンが自動的に適用されます。
API経由での設定方法
以下の手順でWorkspaceのTerraformバージョンを更新します。
アクセストークンの取得
APIを使用してTerraform CloudのWorkspace設定を変更するには、まずTerraform Cloud APIのアクセストークンを取得する必要があります。
Terraform CloudのUser SettingsからAPIトークンを生成します。
Workspace IDの確認
対象のWorkspaceのIDをAPI経由で取得するか、Terraform CloudのGUIで確認します。WorkspaceのIDをAPI経由で取得コマンドは以下です。
curl \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/vnd.api+json" \
--request GET \
https://app.terraform.io/api/v2/organizations/{YOUR_ORG_NAME}/workspaces/{YOUR_WORKSPACE_NAME} | jq -r '.data.id'
※jqを使用していますので、インストールされていない場合は事前インストールが必要です。
APIリクエストの送信
以下のようなAPIリクエストを利用して、WorkspaceのTerraformバージョンを更新します。
curl \
--header "Authorization: Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/vnd.api+json" \
--request PATCH \
--data '{
"data": {
"type": "workspaces",
"id": "{YOUR_WORKSPACE_ID}",
"attributes": {
"terraform_version": "1.9.8"
}
}
}' \
https://app.terraform.io/api/v2/workspaces/{YOUR_WORKSPACE_ID}
Automatically updatingにしたい場合、terraform_versionの値を以下のように記述できます。
"terraform_version": "~>1.9.0"
Terraform Version Updater for Terraform Cloud
指定したOrganization内の指定したWorkspace(複数指定可能)のTerraform Versionを一括で変更するツールを作成しました。
詳細はrepo内のREADME.mdをご参照ください。
参考URL
エンジニア募集
Gakken LEAP では教育をアップデートしていきたいエンジニアを絶賛大募集しています!!
ぜひお気軽にカジュアル面談へお越しください!!