本記事では、Visual Studio Code (以下、VSCode) の拡張機能 Dev Containers を使った、Microsoft Azure向けのTerraform実行環境の構築方法について紹介します。
Terraformとは
HashiCorpが提供しているIaC(Infrastructure as Code)ツールです。
Microsoft Azure、AWS、OCIなどの主要なパブリッククラウドに対応しています。
Dev Containersとは
Dev Containers は、コンテナ(docker)を利用して開発環境を構築できるVSCodeの拡張機能です。
Dev Containersの主なメリットは以下の通りです。
- 他のメンバーに同じ環境を簡単に共有可能
- コンテナ定義ファイルを共有するだけで開発環境を再現でき、新メンバーの開発環境準備が容易になります
- ローカル環境をクリーンに保つことが可能
- コンテナにツール、ライブラリ等をインストールするので、ローカル環境にそれらをインストールする必要がなくなります
- 開発環境の再構築が容易
- 開発環境が壊れた場合、コンテナを再構築するだけで元の状態に戻すことができます
VSCodeの前提条件
本記事は以下の前提で検証を行っています。
- WindowsにVSCode がインストール済み
- 拡張機能「Japanese Language Pack for VS Code」をインストールして日本語表示を設定済み
事前準備
Dockerが必要になるので、今回は手軽にWindowsに導入可能なDocker Desktopをダウンロードし、インストールします。
Docker Desktop: The #1 Containerization Tool for Developers | Docker
Dev Containers インストール
VSCodeを起動し、画面左側より拡張機能アイコンをクリックします。
検索ボックスに”dev containers”と入力し、検索結果に表示される"Dev Containers"の「インストール」ボタンをクリックすればインストールされます。
Terraform開発環境コンテナ構築
Ctrl+Shift+P キーでコマンドパレットを開き、"add dev"と入力し、検索結果から「開発コンテナー:開発コンテナー構成ファイルを追加」を選択します。
以下の画面が表示されたら「フォルダーを開く」をクリックします。
任意の空フォルダを指定し、「フォルダーの選択」をクリックします。
ctrl+shift+p キーで再度コマンドパレットを開き、「ワークスペースに構成を追加する」を選択します。
ベースになるコンテナイメージは「ubuntu」を選択します。
バージョンは、既定のバージョンを選択します。
追加するパッケージとして"Terraform(via asdf)"を選択します。これがTerraform本体です。
AzureログインのためにAzure CLIも選択します。選択したら「OK」をクリックします。
以下画面が表示された場合、"既定値を保持する"を選択します。
.devcontainerフォルダが作成され、配下にコンテナーの構成や設定を格納するファイル "devcontianer.json"が生成されたことを確認します。
devcontainer.json を開きます。nameパラメータは"Terraform"に修正します。
name:"Terraform"
HashiCorp.terraformという、Terraform構文チェックなど、コーディングをサポートしてくれる拡張機能の追加設定を行います。
※ 必須ではありませんが、コーディングに役立つ機能なので、追加しておくと便利です。
"customizations": {
"vscode": {
"extensions": [
"HashiCorp.terraform"
]
}
}
ctrl+shift+p キーでコマンドパレットを開き、”開発コンテナー:コンテナーでリビルドして再度開く”を選択すると、コンテナがビルドおよびデプロイされます。
※事前にDocker Desktopを起動しておいてください
デプロイ後、"ターミナル" - "新しいターミナル"をクリックし、ターミナルを開きます。
terraform -version コマンドを実行できれば、Terraform実行環境の構築完了です。
あとは、az login コマンドでAzureにログインし、Terraformコードを記述したtfファイルを準備すれば、リソースのデプロイが可能です。
リソースのデプロイについては、下記記事も紹介していますので、参考にしてください。
Terraformを使用したMicrosoft Azureへのリソースデプロイ ~part1~ - JBS Tech Blog
最後に
今回は、 Dev Containers を用いてAzure向けTerraform実行環境を構築しました。
他のメンバーが同じ環境を構築したい場合は、tfファイルと手順内で生成した.devcontainerフォルダ(コンテナ定義ファイル"devcontainer.json"が含まれるフォルダ)を共有すれば構築が可能です。
坂本 典久(日本ビジネスシステムズ株式会社)
クラウドソリューション事業本部所属。 SQL ServerやPostgreSQLなどのデータベース設計・構築、Azureなどのクラウドを中心としたシステムの設計・構築に携わっています。
担当記事一覧