Microsoft Terraform VS Code拡張機能のインストールと注意点|Azureリソースグループ作成まで解説

Visual Studio CodeでAzure向けTerraformを使うなら、今回押さえるべき結論は「Microsoft Terraform Visual Studio Code extensionを入れるだけでなく、認証方式・実行場所・AzAPI移行支援まで確認する」ことです。公式情報では、Microsoft Terraform拡張機能とAzure Resources拡張機能を使い、VS CodeからTerraform構成の作成、実行、Azureリソースグループの作成・確認・削除まで行う流れが整理されています。特に、従来のAzure Account拡張機能に依存した認証から、VS Code組み込みのMicrosoft Authentication ProviderとAzure Resources拡張機能を使う方向に変わっている点は、管理者・開発者ともに確認が必要です。(Microsoft Learn)

目次

まず押さえるべきポイント

Microsoft Terraform Visual Studio Code extensionは、Azure向けTerraform作業をVS Code内で進めやすくする拡張機能です。公式のインストール手順では、拡張機能の導入、Terraformコードの作成、initplanapply、リソース確認、destroyまでの基本的な流れが示されています。別の利用ガイドでは、AzureRMとAzAPIプロバイダーの言語支援、Azure Export for Terraform、プレフライト検証、AzureRMからAzAPIへの移行支援も説明されています。(Microsoft Learn)

実務で重要なのは、次の3点です。

確認ポイント影響取るべき対応
Azure Account拡張機能への依存が前提ではなくなるサインインやCloud Shell利用の手順が以前と異なる可能性があるAzure Resources拡張機能の有無とサインイン状態を確認する
Terraformコマンドの実行場所Cloud Shell前提の手順をそのまま使うと失敗する可能性がある現在の拡張機能ではローカル統合ターミナル実行を前提に確認する
AzAPI関連機能の拡充AzureRMからAzAPIへの移行や既存AzureリソースのTerraform化に使える生成コードとTerraform stateを必ずレビューする

Microsoft Terraform拡張機能のMarketplaceおよびGitHub READMEでは、Cloud Shell連携は現在利用できず、Terraformコマンドはローカルの統合ターミナルで実行されると明記されています。一方、インストール記事にはCloud Shellに関する手順も残っているため、チーム展開時は「実際の拡張機能バージョンではどのターミナルで動くか」を先に確認するのが安全です。([Visual Studio Marketplace][2])

何が変わるのか

認証はAzure Account拡張機能中心からAzure Resourcesと組み込み認証へ

公式のインストール記事では、Azure Account拡張機能の非推奨化に伴い、認証はVS Code組み込みのMicrosoft Authentication ProviderとAzure Resources拡張機能で処理されると説明されています。Azure Account拡張機能自体も、2025年1月に非推奨になる案内が出され、拡張機能側は組み込みMicrosoft Authentication Providerへ移行する必要があるとされています。(Microsoft Learn)

この変更の実務上の影響は、単に「別の拡張機能を入れる」だけではありません。AzureポータルやAzure CLIではサインイン済みでも、VS Code側のAzure Resourcesビューでは再ログインが必要になる場合があります。また、プレフライト検証やエクスポートなどAzure CLI認証を使う機能では、az login済みであることも確認する必要があります。(Microsoft Learn)

Cloud Shell前提の運用は見直しが必要

インストール記事ではMicrosoft Terraform: PushでCloud Shellへワークスペースファイルを送る流れが説明され、azureTerraform.files設定に合致するファイルがCloud Shellへコピーされるとされています。(Microsoft Learn)

ただし、現在のMarketplace/READMEではCloud Shell連携が利用できず、Terraformコマンドはローカル統合ターミナルで実行されると案内されています。拡張機能の設定にもazureTerraform.terminalがありますが、説明上は有効な設定としてintegratedが示されています。([Visual Studio Marketplace][2])

そのため、チーム内の手順書に「VS CodeからCloud Shellで実行」と書かれている場合は、次のように修正しておくと混乱を避けられます。

旧手順でありがちな前提見直し後の推奨
Terraform CLIはCloud Shellにあるのでローカル不要ローカルまたはDev Container内にTerraform CLIを入れ、PATHに通す
Azure認証はAzure Account拡張機能で完結Azure Resources拡張機能とVS CodeのMicrosoft認証、必要に応じてaz loginを確認
Push後にCloud Shellで実行現在の拡張機能では統合ターミナル実行を前提に検証
Cloud Shellにコピーされるファイルだけを気にするローカル実行時の作業ディレクトリ、状態ファイル、環境変数も確認

対象者と影響範囲

この更新で影響を受けるのは、Terraformコードを書く開発者だけではありません。拡張機能の配布、許可、更新管理を行うIT管理者や、AzureRMからAzAPIへの移行を検討するプラットフォームチームにも関係します。

対象者影響する作業確認すべきこと
Azure開発者VS Code上でのTerraform作成、initplanapplyTerraform CLI、Azure CLI、Azure Resources拡張機能、認証状態
IaC担当者既存AzureリソースのTerraform化、AzAPI移行生成されたHCL、typeapi-version、Terraform state
管理者拡張機能の許可、更新、ネットワーク制御extensions.allowed、VSIX配布、プロキシ、更新ポリシー
セキュリティ担当拡張機能の権限、認証、RBAC拡張機能の信頼、最小権限、az loginの対象テナント
教育・標準化担当チーム向け手順書、研修資料Cloud Shell前提の記述、ローカル実行前提の記述差分

VS Code拡張機能はVS Code本体と同じ権限で動作するため、企業環境では「便利だから全員に自由に入れさせる」のではなく、許可する拡張機能、バージョン、更新タイミングを管理する視点が必要です。VS Codeでは組織向けに許可拡張機能やプライベートMarketplace、ポリシー管理を利用できます。(Visual Studio Code)

インストール前に確認する前提条件

Microsoft Terraform拡張機能を安定して使うには、拡張機能だけでなく周辺ツールもそろえる必要があります。公式情報では、Visual Studio Code、Microsoft Terraform拡張機能、Terraform CLI、Azure CLIとaz loginが前提として示されています。また、インストール記事ではAzureサブスクリプション、Terraform環境、Node.jsの準備も挙げられています。(Microsoft Learn)

項目確認コマンド・確認方法不足している場合の症状
Visual Studio CodeVS Codeを起動できるか拡張機能を利用できない
Microsoft Terraform拡張機能拡張機能ビューでMicrosoft Terraformを検索コマンドパレットにMicrosoft Terraform:系コマンドが出ない
Azure Resources拡張機能拡張機能ビューでAzure Resourcesを確認Azure認証やリソース選択で詰まる
Terraform CLIterraform -versioninitplanが実行できない
Azure CLIaz versionaz loginエクスポート、認証、プレフライト検証で失敗する
GraphVizdot -Vvisualize機能でグラフ生成できない
Node.jsnode -v依存関係のインストールや一部処理でプロンプトが出る可能性がある

Marketplaceでは、Terraformコマンド実行にはTerraform、visualize機能にはGraphVizが必要で、どちらもPATHに含めるよう案内されています。([Visual Studio Marketplace][2])

Visual Studio CodeにMicrosoft Terraform拡張機能をインストールする手順

画面からインストールする

基本手順はシンプルです。

  1. Visual Studio Codeを起動する
  2. 左側の拡張機能ビューを開く
  3. Microsoft Terraformを検索する
  4. 発行元がMicrosoftのMicrosoft Terraformを選び、インストールする
  5. 続けてAzure Resourcesを検索し、Azure Resources拡張機能も確認する
  6. 検索ボックスに@installedを入力し、両方がインストール済みか確認する

公式手順でも、Microsoft Terraform拡張機能とAzure Resources拡張機能の両方がインストール済み一覧に表示されることを確認する流れが示されています。(Microsoft Learn)

コマンドラインでインストールする

複数端末や開発用VMに展開する場合は、VS Code CLIを使うと確認しやすくなります。VS Codeではcode --install-extensionで拡張機能をインストールでき、拡張機能はpublisher.extension形式のIDで指定します。(Visual Studio Code)

code --install-extension ms-azuretools.vscode-azureterraform
code --install-extension ms-azuretools.vscode-azureresourcegroups
code --list-extensions --show-versions

チームで標準化する場合は、リポジトリの.vscode/extensions.jsonに推奨拡張機能を書く方法もあります。VS Codeはワークスペースを初めて開いたユーザーに推奨拡張機能のインストールを促せます。(Visual Studio Code)

{
  "recommendations": [
    "ms-azuretools.vscode-azureterraform",
    "ms-azuretools.vscode-azureresourcegroups"
  ]
}

Azureリソースグループを作成して動作確認する

インストール後は、最初に小さなAzureリソースグループを作成して、認証、Terraform CLI、拡張機能コマンドが正しく動くか確認するのがおすすめです。公式インストール記事でも、拡張機能を使ってAzureリソースグループを作成し、確認し、最後に削除する流れが扱われています。(Microsoft Learn)

サンプル用フォルダーを作成する

任意の作業フォルダーを作り、VS Codeで開きます。

mkdir tf-vscode-rg-demo
cd tf-vscode-rg-demo
code .

providers.tfを作成する

AzureRMプロバイダーを使う最小構成です。公式サンプルではAzureRMプロバイダーに~>4.0が使われています。(Microsoft Learn)

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 4.0"
    }
  }
}

provider "azurerm" {
  features {}
}

main.tfを作成する

日本リージョンで試す場合の例です。社内標準リージョンがある場合は、japaneastを適切なリージョンに変更してください。

variable "resource_group_name" {
  type    = string
  default = "rg-vscode-terraform-demo"
}

variable "location" {
  type    = string
  default = "japaneast"
}

resource "azurerm_resource_group" "demo" {
  name     = var.resource_group_name
  location = var.location
}

output "resource_group_name" {
  value = azurerm_resource_group.demo.name
}

VS Codeのコマンドパレットから実行する

コマンドパレットを開き、次の順に実行します。

実行順コマンドパレットの項目CLIでの対応
初期化Microsoft Terraform: Initterraform init
構成確認Microsoft Terraform: Validateterraform validate
実行計画Microsoft Terraform: Planterraform plan
適用Microsoft Terraform: Applyterraform apply
削除Microsoft Terraform: Destroyterraform destroy

公式ガイドでは、Microsoft Terraform: Initterraform initを実行するのと同じ位置づけで、Microsoft Terraform: Planは現在のディレクトリのTerraform構成から実行計画を作成すると説明されています。ApplyDestroyでは確認プロンプトにyesを入力する流れです。(Microsoft Learn)

Azure CLIで作成結果を確認する

apply後、次のコマンドでリソースグループを確認します。

az group show --name rg-vscode-terraform-demo

確認が終わったら、不要な課金やリソース残存を避けるために削除します。

terraform destroy

サンプルでも、作成したリソースグループはテスト完了後にMicrosoft Terraform: Destroyで削除する流れが案内されています。(Microsoft Learn)

実務で使うときの便利な機能

AzAPIプロバイダーの入力支援

Microsoft Terraform拡張機能は、AzAPIプロバイダー向けにリソースタイプやAPIバージョン、プロパティ名、値の候補表示、ホバー説明、スキーマ検証を提供します。azapi_resourceを書く場面では、AzureのREST API仕様に近い構成をHCLで扱うため、入力ミスや必須プロパティ漏れを早期に見つけられるのが利点です。(Microsoft Learn)

特に便利なのは、次のようなケースです。

利用シーン効果
新しいAzureリソースをAzAPIで扱うリソースタイプとAPIバージョンの候補を見ながら記述できる
ARM JSONやREST APIレスポンスをもとにTerraform化するJSONを貼り付けてazapi_resource形式へ変換できる
手書きのbodyが複雑スキーマエラーや型の誤りを入力中に発見しやすい

ただし、ARMテンプレートに複数リソース、パラメーター、変数が含まれる場合は、変換後に手動クリーンアップが必要とされています。生成されたtypebodyparent_idは、apply前に必ず確認してください。(Microsoft Learn)

既存AzureリソースのTerraform化

拡張機能はAzure Export for Terraform、つまりaztfexportと統合され、既存のAzureリソースをTerraform構成とstateにエクスポートできます。出力プロバイダーとしてAzureRMまたはAzAPIを選べるため、Terraform管理されていない既存リソースをIaC管理へ移す入口として使えます。(Microsoft Learn)

実務では、エクスポート直後のコードをそのまま本番管理に入れないことが重要です。次の観点でレビューしましょう。

レビュー項目確認内容
命名リソース名、変数名、モジュール名がチーム標準に合っているか
state既存リソースが正しくTerraform stateに関連付いているか
providerAzureRMで管理するのか、AzAPIで管理するのか
差分terraform planで意図しない更新や再作成が出ないか
機密情報生成コードや.tfvarsに秘密情報が含まれていないか

AzureRMからAzAPIへの移行支援

利用ガイドでは、azurerm_*リソースブロックに対してAzAPI相当の構成を生成する機能が説明されています。ただし、この機能はHCL作成を支援するもので、Terraform stateファイルは更新しません。stateを更新しないままazurerm_*azapi_resourceへ置き換えると、Terraformが既存リソースを削除済み、新しいAzAPIリソースを新規作成対象として扱い、基盤リソースの再作成につながる可能性があります。(Microsoft Learn)

移行時は、次の順番を守ると事故を減らせます。

  1. 既存構成とstateをバックアップする
  2. 対象リソースを1種類または1モジュールに絞る
  3. 拡張機能でAzAPI構成を生成する
  4. typeapi-versionbodyを公式スキーマやプロバイダー文書と照合する
  5. terraform state mvまたはimportブロックでstate移行を行う
  6. 1回ごとにterraform planを実行し、再作成が出ないことを確認する

管理者が確認すべき展開・運用ポイント

許可する拡張機能を明確にする

企業環境では、Microsoft Terraformと似た名前の拡張機能、HashiCorp製のTerraform拡張機能、個人発行の補助ツールなどが混在しやすくなります。VS Codeではextensions.allowedアプリケーション設定を使い、組織でインストール可能な拡張機能を制御できます。設定されている場合、一覧にない拡張機能はインストールがブロックされます。(Visual Studio Code)

管理対象端末では、少なくとも次を明文化しておくとよいでしょう。

{
  "extensions.allowed": {
    "ms-azuretools.vscode-azureterraform": true,
    "ms-azuretools.vscode-azureresourcegroups": true
  }
}

実際のポリシー形式や配布方法は組織の管理方式に依存します。VS CodeはIntune、Active Directory Group Policy、macOSのMDMなどを通じたポリシー展開に対応しています。(Visual Studio Code)

更新タイミングを管理する

VS Codeは拡張機能の更新を自動確認し、既定では自動更新します。手動更新にしたい場合は、拡張機能ビューやextensions.autoUpdateextensions.autoCheckUpdatesを使って更新確認や自動更新の扱いを制御できます。(Visual Studio Code)

本番IaCを扱うチームでは、次の運用が現実的です。

環境推奨運用
個人検証端末自動更新を許可し、新機能を早めに確認
チーム標準端末月次またはスプリント単位で更新確認
本番運用端末検証済みバージョンを固定し、更新前にplan結果を確認
オフライン環境VSIXで配布し、更新手順を別途管理

VSIXから拡張機能をインストールすることも可能ですが、VSIX経由でインストールした拡張機能は既定で自動更新が無効になります。閉域網や固定バージョン運用では便利ですが、セキュリティ修正の取り込み漏れに注意が必要です。(Visual Studio Code)

ローカル実行前提の開発環境を用意する

現在の拡張機能ではTerraformコマンドがローカル統合ターミナルで実行されるため、端末側にTerraform CLI、Azure CLI、必要に応じてGraphVizを入れてPATHに通す必要があります。Dev ContainerやWSLを使うチームでは、コンテナ内またはWSL側に同じツールを入れ、VS Codeがどの環境で拡張機能とターミナルを動かしているかを確認してください。([Visual Studio Marketplace][2])

開発者が失敗しやすいポイント

VS Codeでサインイン済みでもAzure CLIは未認証

Azure Resources拡張機能でサインインできていても、ターミナルで実行するTerraformやaztfexport、プレフライト検証がAzure CLI認証を必要とする場合があります。利用ガイドでも、Azure CLIのインストールとaz loginが前提として示されています。(Microsoft Learn)

作業開始時は、次を習慣化するとトラブルを減らせます。

az account show
terraform -version
code --list-extensions --show-versions

複数テナントや複数サブスクリプションを扱う場合は、az account set --subscription <subscription-id>で対象を明示してからplanを実行しましょう。

生成されたTerraformコードをそのまま本番適用する

拡張機能の候補表示、ARM JSON変換、Azure Export for Terraformは便利ですが、生成結果は「レビューの出発点」です。特に、既存Azureリソースを取り込む場合は、命名、モジュール分割、変数化、タグ、state管理、RBACを整理しないまま適用すると、あとから保守しにくい構成になります。

まずは開発サブスクリプションでterraform planまで確認し、本番では差分レビューを必ず挟みましょう。

AzAPI移行でstateを動かし忘れる

AzureRMからAzAPIへの移行では、HCLの置換だけでは不十分です。公式ガイドでも、状態を移行するにはterraform state mvを使うかimportブロックを追加し、各状態変更後にterraform planで意図しない再作成がないか確認するよう説明されています。(Microsoft Learn)

移行作業では、次のようなチェック表を使うと安全です。

チェックOK条件
移行対象を限定した1回の変更で複数種類のリソースをまとめて移行していない
state移行方法を決めたstate mvimportブロックのどちらを使うか決めている
plan結果を保存した再作成、削除、意図しない変更がない
ロールバック方法がある変更前のHCLとstateバックアップがある
レビュー済みtypeapi-versionbodyを確認している

プレフライト検証の使いどころ

Microsoft Terraform拡張機能はaztfpreflightと連携し、Terraform planをAzureのリソース制約に照らして検証できます。無効なプロパティ値、クォータ違反、ポリシーコンプライアンス違反などを、リソース作成・変更前に検出できると説明されています。(Microsoft Learn)

使いどころは、次のような場面です。

場面期待できる効果
新しいリージョンやSKUを使う値の誤りや制約違反を早めに見つける
Azure Policyが厳しい環境に展開するポリシー違反をapply前に把握する
大きな変更を本番前に確認するクォータや制約で失敗するリスクを下げる
AzAPIで細かいプロパティを扱うスキーマや値のミスを減らす

ただし、プレフライト検証はレビューや承認プロセスの代替ではありません。検証を通過しても、コスト、命名規則、セキュリティ、運用監視、削除保護などは別途確認が必要です。

チーム展開時の推奨チェックリスト

項目確認内容
拡張機能ms-azuretools.vscode-azureterraformとAzure Resourcesを標準化している
実行環境Terraform CLI、Azure CLI、GraphVizが必要な端末またはコンテナに入っている
認証VS CodeのAzureサインインとaz loginの両方を確認している
ターミナルCloud Shell前提ではなく、ローカル統合ターミナル実行を検証している
更新管理自動更新、手動更新、VSIX配布の方針が決まっている
拡張機能制御extensions.allowedやプライベートMarketplaceの要否を判断している
state管理ローカルstateではなく、チームで管理できるバックエンドを使っている
移行作業AzAPI移行時にstate移行とterraform plan確認を必須にしている
サンプル削除検証用リソースグループはdestroyで削除している

次に取るべき行動

新規に始める場合は、まずVS CodeにMicrosoft Terraform拡張機能とAzure Resources拡張機能を入れ、ローカル統合ターミナルでterraform initplanapplydestroyまで小さなリソースグループで確認してください。既存チームで運用している場合は、Cloud Shell前提の手順、Azure Account拡張機能前提の認証、AzureRMからAzAPIへの移行手順、拡張機能の更新管理を見直すのが優先です。

Microsoft Terraform Visual Studio Code extensionは、Azure向けTerraformの作成、検証、既存リソースの取り込み、AzAPI移行を効率化できます。ただし、拡張機能が生成・補助する内容をそのまま本番に反映するのではなく、実行環境、認証、state、RBAC、terraform planを確認することで、安全に活用できます。

[2]: https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azureterraform “
Microsoft Terraform – Visual Studio Marketplace

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次