TerraformでおすすめのVSCode拡張機能について

採用はこちら

TerraformをVS Codeで扱う場合、拡張機能を適切に導入すると、コード補完やフォーマット、エラー確認、Git管理、セキュリティチェックなどを効率化できます。

ただし、Terraform関連の拡張機能を大量にインストールすればよいわけではありません。

基本的には、HashiCorp公式のTerraform拡張を中心にして、必要に応じてError LensやGitLens、Trivyなどを追加する構成がおすすめです。

Terraformをこれから始める人から実務で利用する人まで、用途別におすすめのVS Code拡張機能を紹介します。

目次

Terraformで最もおすすめなのは「HashiCorp Terraform」

TerraformをVS Codeで開発するのであれば、最初にインストールしておきたいのが「HashiCorp Terraform」です。

HashiCorpが公式に提供しているVS Code拡張機能で、Terraformコードの編集を支援するさまざまな機能が搭載されています。

Terraform関連のVS Code拡張機能の中では、最も優先度が高い拡張機能と考えてよいでしょう。

HashiCorp Terraformの主な機能

HashiCorp Terraformでは、主に以下のような機能を利用できます。

  • Terraformコードのシンタックスハイライト
  • IntelliSenseによるコード補完
  • コードナビゲーション
  • 定義への移動
  • コードフォーマット
  • Module Explorer
  • Terraform Stacks関連機能
  • Terraform Search関連機能
  • Terraform Policy関連機能

Terraformのコードを書く場合、リソース名や属性名をすべて暗記するのは現実的ではありません。

公式拡張機能による補完を利用すれば、入力候補を確認しながらコードを書けるため、記述ミスを減らしやすくなります。

たとえば、AWS Providerを利用する場合は次のようなTerraformコードを記述します。

resource "aws_instance" "example" {
  ami           = "ami-xxxxxxxx"
  instance_type = "t3.micro"
}

公式拡張機能を導入しておけば、Terraformの構文やProviderに関する情報をもとに入力を支援してもらえます。

Terraform Language Serverは拡張機能に含まれている

HashiCorp Terraformでは、Terraform Language Serverを利用して高度なコード解析を行っています。

Language Serverによって、単純なシンタックスハイライトだけではなく、コード補完やコードナビゲーションなどが可能になります。

現在の公式Terraform拡張にはTerraform Language Serverがバンドルされているため、通常はterraform-lsを別途インストールする必要はありません。

一方で、Terraform本体であるTerraform CLIは別途インストールしておく必要があります。

つまり、基本的には次のような構成になります。

VS Code
  ↓
HashiCorp Terraform拡張
  ↓
Terraform Language Server
  ↓
Terraform CLI

Terraform拡張機能だけをインストールしても、Terraform CLIそのものが使えるようになるわけではない点には注意しましょう。

Terraform CLIもインストールしておく

TerraformをVS Codeで利用する場合、Terraform CLIも必要です。

ターミナルで次のコマンドを実行して、Terraformが利用できるか確認できます。

terraform version

正常にバージョン情報が表示されれば、Terraform CLIを利用できる状態です。

Terraformでよく使用するコマンド

Terraform開発では、代表的に次のようなコマンドを使用します。

terraform init
terraform fmt
terraform validate
terraform plan
terraform apply

VS Code拡張機能は、これらのTerraform開発をエディター側から支援するものと考えると分かりやすいでしょう。

Providerの補完を利用するならterraform initを実行する

Terraform公式拡張の補完機能を十分に利用するためには、プロジェクトでterraform initを実行しておくことが重要です。

TerraformではProviderごとに利用できるリソースや属性が異なります。

公式Terraform拡張はProviderのスキーマ情報などを利用して補完を行うため、Terraformプロジェクトを初期化しておくことで、より適切な補完を利用できるようになります。

terraform initの実行例

Terraformプロジェクトのディレクトリを開いたら、ターミナルで次のコマンドを実行します。

terraform init

これによって必要なProviderやModuleなどの初期化が行われます。

AWSやAzure、Google CloudなどのProviderを利用している場合は、特に重要な作業です。

TerraformではプロジェクトフォルダをVS Codeで開く

TerraformをVS Codeで利用する際は、.tfファイルだけを単独で開くのではなく、Terraformプロジェクトのフォルダ全体を開くのがおすすめです。

VS Codeでは、メニューから次のように操作できます。

ファイル
↓
フォルダーを開く
↓
Terraformプロジェクトを選択

Terraform Language Serverはプロジェクト全体の情報を利用してコードを解析します。

そのため、ファイル単体で編集するより、プロジェクトフォルダを開いた方が補完やコードナビゲーションなどを利用しやすくなります。

Error Lens

Terraformのエラーや警告を見つけやすくしたい場合には、「Error Lens」が便利です。

Error LensはTerraform専用の拡張機能ではありません。

VS CodeやLanguage Serverなどが生成したエラーや警告などの診断情報を、コード上で目立つように表示するための拡張機能です。

Error Lensはエラーを検出する拡張ではない

ここは混同しやすいポイントです。

Error Lens自体がTerraformコードを解析してエラーを探しているわけではありません。

Terraform Language Serverなどが検出した問題を、より確認しやすい形で表示します。

イメージとしては次のようになります。

Terraform Language Server
  ↓
エラーや警告を検出
  ↓
VS Code Diagnostics
  ↓
Error Lens
  ↓
コード上で分かりやすく表示

Terraformのコード量が増えてくると、エラーをすぐに見つけられることは大きなメリットになります。

Terraform以外の言語でも利用できる

Error LensはTerraform専用ではないため、JavaScriptやTypeScript、Python、Goなどでも利用できます。

Terraformとアプリケーションコードを同じVS Codeで編集する場合にも便利です。

GitLens

Terraformコードの変更履歴を詳しく確認したい場合には、「GitLens」がおすすめです。

TerraformはInfrastructure as Codeであり、インフラ設定をコードとしてGitで管理するケースが一般的です。

そのため、誰が、いつ、どの設定を変更したのか確認できることは非常に重要です。

GitLensで変更履歴を確認しやすくなる

たとえば、Terraformコードに次のような設定があるとします。

instance_type = "t3.large"

以前はt3.microだった場合、次のような疑問が発生することがあります。

いつ変更されたのか
誰が変更したのか
どのコミットで変更されたのか
なぜ変更されたのか

GitLensを利用すると、Git blameやファイル履歴、コミット履歴などをVS Code上から確認しやすくなります。

インフラ変更の経緯を追跡したい場合に便利です。

GitLensは必須ではない

VS Codeには標準でGit機能が搭載されています。

そのため、基本的なコミットや差分確認だけであればGitLensは必須ではありません。

Git履歴を詳しく調査したい場合や、大規模なチーム開発で変更履歴を追跡したい場合に導入するとよいでしょう。

Aqua Trivy

Terraformのセキュリティチェックを行いたい場合には、「Aqua Trivy」が有力な選択肢です。

TrivyはTerraformだけでなく、コンテナや依存関係、IaC、シークレットなどを幅広くチェックできるセキュリティツールです。

実務でTerraformを利用する場合には、導入を検討する価値があります。

Terraformの設定ミスを検出できる

Terraformコードは、文法的には正しくても、セキュリティ上望ましくない設定になっている場合があります。

たとえば、クラウドリソースが意図せず公開されていたり、暗号化が適切に設定されていなかったりするケースです。

Trivyを利用すると、TerraformなどのInfrastructure as Codeについて、セキュリティ上の設定ミスをチェックできます。

terraform validateとは役割が異なる

terraform validateとTrivyは役割が異なります。

terraform validateは、Terraformの設定が構文的・論理的に正しいかを確認するためのコマンドです。

一方、Trivyはセキュリティ上の問題を確認するために利用します。

そのため、どちらか一方を利用するのではなく、組み合わせるのがおすすめです。

たとえば、次のような流れで利用できます。

terraform fmt
terraform validate
trivy config .

Terraformとしての正しさと、セキュリティ上の安全性をそれぞれ確認できます。

シークレット検出にも利用できる

Terraformでは、誤って認証情報をコードに記述してしまうリスクがあります。

たとえば、アクセスキーやパスワードなどをTerraformファイルへ直接記述するのは避けるべきです。

Trivyはシークレット検出にも対応しているため、認証情報の誤コミット防止にも役立ちます。

tfsecは新規導入ならTrivyを優先する

Terraformのセキュリティチェックツールとしては、「tfsec」も有名です。

tfsecはTerraform専用の静的解析ツールとして長く利用されてきました。

ただし、現在はAqua SecurityがTrivyへの機能統合を進めているため、新しく環境を構築するのであればTrivyを優先する方がよいでしょう。

tfsecが向いているケース

tfsecをすでにCI/CDなどへ組み込んでいる既存プロジェクトでは、引き続き利用するケースもあります。

一方、新規プロジェクトなら基本的にはTrivyを第一候補として考えるのがおすすめです。

整理すると次のようになります。

新規プロジェクト
→ Trivyがおすすめ

既存プロジェクトですでにtfsecを利用
→ tfsecを継続する選択肢もある

TerraformのセキュリティチェックとしてtfsecとTrivyを両方必ず導入する必要はありません。

YAML

TerraformそのものではYAMLファイルを使用しないことも多いため、YAML拡張機能は必須ではありません。

ただし、TerraformをCI/CDやKubernetesと組み合わせる場合には便利です。

おすすめなのが、Red Hatが提供している「YAML」拡張機能です。

CI/CDでTerraformを実行する場合に便利

TerraformはGitHub ActionsやGitLab CI、Azure Pipelinesなどで自動実行することがあります。

たとえばGitHub Actionsでは、次のようなYAMLファイルを記述します。

name: Terraform

on:
  push:
    branches:
      - main

jobs:
  terraform:
    runs-on: ubuntu-latest

YAML拡張機能を導入しておけば、シンタックスハイライトだけでなく、入力補完やバリデーション、フォーマットなどを利用できます。

Kubernetesを利用する場合にも便利

TerraformとKubernetesを組み合わせて利用している場合にも、YAMLファイルを編集する機会が多くなります。

そのため、Terraform単体では不要でも、DevOps環境全体をVS Codeで管理するのであれば導入する価値があります。

HashiCorp HCL

HashiCorpからは「HCL」というVS Code拡張機能も提供されています。

ただし、Terraformだけを使用する場合には必須ではありません。

Terraformの.tfファイルについては、公式Terraform拡張によってシンタックスハイライトなどが提供されるためです。

Terraform以外のHCLを編集する場合に使う

HashiCorp HCLは、主に.hclファイルのシンタックスハイライトに利用できます。

Terraform以外にも、次のようなHashiCorp製品を扱う場合には導入を検討できます。

Nomad
Packer
その他のHCLファイル

Terraformのみを使用する場合は、基本的にHashiCorp Terraform拡張だけで十分です。

Terraform Preview

Marketplaceには「HashiCorp Terraform」とよく似た名前の「HashiCorp Terraform Preview」もあります。

Terraform Previewは、新しい機能や修正をStable版より早く試すための拡張機能です。

通常はStable版を利用する

Preview版は新機能を先行して利用できる一方、不安定になる可能性があります。

また、Stable版とPreview版を同時に利用することはできません。

通常のTerraform開発では、次のStable版を選べば問題ありません。

HashiCorp Terraform

Preview版は、新機能を試したい場合や、特定の修正を検証したい場合に利用するものと考えるとよいでしょう。

Terraformファイルを保存時に自動フォーマットする

Terraformでは、コードの書式を統一するためにterraform fmtを利用します。

VS Code側で保存時フォーマットを設定しておけば、ファイルを保存するたびに自動でコードを整形できます。

settings.jsonの設定例

VS Codeの.vscode/settings.jsonなどへ、次のように設定できます。

{
  "[terraform]": {
    "editor.defaultFormatter": "hashicorp.terraform",
    "editor.formatOnSave": true,
    "editor.formatOnSaveMode": "file"
  }
}

これによって、Terraformファイルを保存した際に自動的にフォーマットできます。

イメージとしては次のようになります。

Terraformコードを書く
↓
Ctrl + Sで保存
↓
自動フォーマット

チーム開発ではコードスタイルを統一しやすくなるため、特におすすめの設定です。

tfvarsも自動フォーマットする

.tfvarsファイルも扱う場合は、terraform-vars向けの設定も追加できます。

{
  "[terraform]": {
    "editor.defaultFormatter": "hashicorp.terraform",
    "editor.formatOnSave": true,
    "editor.formatOnSaveMode": "file"
  },
  "[terraform-vars]": {
    "editor.defaultFormatter": "hashicorp.terraform",
    "editor.formatOnSave": true,
    "editor.formatOnSaveMode": "file"
  }
}

Terraformプロジェクト全体でフォーマットを統一したい場合には、この設定が便利です。

Terraform初心者におすすめのVS Code拡張機能

Terraformをこれから勉強するのであれば、最初から大量の拡張機能を導入する必要はありません。

まずは次の構成がおすすめです。

最小構成

HashiCorp Terraform

Terraformの基本的なコード補完やフォーマット、コードナビゲーションを利用できます。

Terraformを勉強し始める段階なら、まずはこれだけでも十分です。

使いやすさを改善する構成

HashiCorp Terraform
Error Lens
GitLens

HashiCorp TerraformでTerraformコードを編集し、Error Lensでエラーを見やすくし、GitLensで変更履歴を確認できます。

個人開発や学習用途では、使いやすい構成です。

実務でおすすめのVS Code拡張機能

AWSやAzure、Google CloudなどのインフラをTerraformで本格的に管理する場合には、次のような構成が考えられます。

実務向けの基本構成

HashiCorp Terraform
Error Lens
GitLens
Aqua Trivy

それぞれの役割は次のとおりです。

HashiCorp Terraform
→ Terraformコードの編集・補完・フォーマット

Error Lens
→ エラーや警告を見やすく表示

GitLens
→ Gitの変更履歴を確認

Aqua Trivy
→ Terraformのセキュリティチェック

Terraform開発に必要な基本機能をバランスよく補えます。

CI/CDも利用する場合

GitHub ActionsやGitLab CIなどを利用する場合は、さらにYAML拡張を追加すると便利です。

HashiCorp Terraform
Error Lens
GitLens
Aqua Trivy
YAML

Terraformだけでなく、CI/CD設定もVS Codeで編集しやすくなります。

Terraform向けVS Code拡張機能の選び方

Terraform向けの拡張機能は、すべてインストールする必要はありません。

用途によって選ぶのがおすすめです。

Terraform開発の基本機能が欲しい場合

「HashiCorp Terraform」を利用します。

TerraformをVS Codeで利用するなら、最優先で導入したい拡張機能です。

エラーを見つけやすくしたい場合

「Error Lens」を追加します。

Terraform Language Serverなどが検出した問題を、エディター上で分かりやすく確認できます。

Gitの変更履歴を詳しく確認したい場合

「GitLens」を追加します。

Terraformコードの変更履歴やGit blameを詳しく確認したい場合に便利です。

セキュリティチェックを行いたい場合

「Aqua Trivy」を追加します。

Terraformの設定ミスやシークレットなど、セキュリティ上の問題をチェックできます。

CI/CDやKubernetesも扱う場合

「YAML」を追加します。

GitHub ActionsやGitLab CI、KubernetesなどのYAMLファイルを編集しやすくなります。

Terraform以外のHCLも扱う場合

「HashiCorp HCL」を追加します。

NomadやPackerなどのHCLファイルを編集する場合に利用できます。

TerraformならまずHashiCorp Terraformを導入する

TerraformをVS Codeで利用するのであれば、最もおすすめなのはHashiCorp公式の「Terraform」拡張機能です。

Terraformのシンタックスハイライト、コード補完、コードナビゲーション、フォーマットなど、基本的な開発機能をまとめて利用できます。

そのうえで、必要に応じて拡張機能を追加していくのがおすすめです。

具体的には、次のように選ぶと分かりやすいでしょう。

Terraformの基本機能
→ HashiCorp Terraform

エラーや警告を見やすくする
→ Error Lens

Git履歴を詳しく確認する
→ GitLens

Terraformのセキュリティをチェックする
→ Aqua Trivy

CI/CDやKubernetesのYAMLを編集する
→ YAML

Terraform以外のHCLを編集する
→ HashiCorp HCL

Terraform初心者であれば、まずはHashiCorp Terraformだけを導入し、必要になった機能を後から追加する方法がおすすめです。

実務でTerraformを利用する場合には、「HashiCorp Terraform + Error Lens + GitLens + Aqua Trivy」を基本構成として検討すると、開発効率と安全性の両方を高めやすくなります。

以上、TerraformでおすすめのVSCode拡張機能についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次