こんにちは!株式会社PROMPT-X 鹿児島本社の大原です。
今回は、Terraformの開発環境をVSCodeのDevContainersで構築する方法をご紹介します。
「チームで開発環境を統一したい」「新しいメンバーがすぐに開発を始められるようにしたい」といった悩みを持っている方に特におすすめのプラクティスです。
目次
概要
TerraformでAWSリソースを管理する開発環境を、VSCodeのDevContainersを使って構築します。DevContainersを使うことで、開発者間での環境差異を最小限に抑え、「自分の環境では動くのに...」といった問題を防ぐことができます。
今回紹介する環境は、AWSを対象としていますが、他のクラウドサービスにも応用可能です。その場合は、必要に応じて適切に編集してください。
ファイル群の準備
ディレクトリ構成
まずは、以下のディレクトリ構成でファイルを作成します。
.
└── .devcontainer
├── devcontainer.json
├── Dockerfile
└── postCreateCommand.sh
各ファイルの作成
それでは、各ファイルを順番に作成していきましょう。
1. devcontainer.json
まず、DevContainerの設定ファイルであるdevcontainer.json
を作成します。
{
"name": "Terraform AWS",
"build": {
"dockerfile": "Dockerfile"
},
"containerEnv": {
// AWS認証情報、Terraformバージョンをを適切に変更すること
"AWS_ACCESS_KEY_ID": "changeIt",
"AWS_SECRET_ACCESS_KEY": "changeIt",
"AWS_DEFAULT_REGION": "ap-northeast-1",
"TERRAFORM_VERSION": "1.6.5"
},
"customizations": {
"vscode": {
"extensions": [
"hashicorp.terraform"
]
}
},
// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "cd .devcontainer && /bin/bash -vx postCreateCommand.sh"
}
ここで注意すべき点:
-
AWS_ACCESS_KEY_ID
とAWS_SECRET_ACCESS_KEY
は必ず変更してください! -
AWS_DEFAULT_REGION
は適宜変更可能です -
TERRAFORM_VERSION
は使用したいバージョンに合わせて変更してください
⚠️ セキュリティ上の注意: 実際の運用では、認証情報をコードにハードコーディングするのではなく、環境変数や認証情報管理サービスを使用することをお勧めします。
2. Dockerfile
次に、コンテナイメージを定義するDockerfile
を作成します。
FROM mcr.microsoft.com/vscode/devcontainers/base:1.2.3-ubuntu24.04
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" \
&& unzip awscliv2.zip \
&& ./aws/install \
&& rm -fr aws awscliv2.zip
このDockerfileでは:
- VSCodeのDevContainers用のUbuntu 24.04ベースイメージを使用
- AWS CLIをインストール(最新版)
必要に応じて、他のツールやライブラリも追加できます。
3. postCreateCommand.sh
最後に、コンテナ作成後に実行されるスクリプトpostCreateCommand.sh
を作成します。
#!/bin/bash
git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv \
&& echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bashrc \
&& echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bash_profile \
&& source ~/.bash_profile \
&& tfenv install ${TERRAFORM_VERSION} \
&& tfenv use ${TERRAFORM_VERSION} \
このスクリプトでは:
- tfenvをインストール
- パスを設定
- 指定したバージョンのTerraformをインストール
tfenvを使用することで、プロジェクトごとに異なるTerraformバージョンを簡単に切り替えられます。
まとめ
これで、VSCodeのDevContainersを使ったAWS向けTerraform開発環境の構築が完了しました!
この環境を使うことで:
- チーム内での開発環境を統一できる
- 新しいメンバーが簡単に開発を始められる
- 「自分の環境では動くのに...」といった問題を防げる
さらに発展させるアイデア:
- AWS SAMやServerless Frameworkなど、他のAWSツールを追加
- テストフレームワークやlinterを導入
- CI/CDパイプラインと連携させる
皆さんの開発環境づくりの参考になれば幸いです。質問やご意見があれば、コメントでお気軽にどうぞ!👍
おまけ
「え!こんなに簡単にTerraform環境が作れるの?」と思った方、私も最初は驚きました(笑)。この記事が誰かの助けになれば嬉しいです。「いいね」もらえたら、次の記事のモチベーションになります😊
私たちについて
PROMPT-Xは、東京・鹿児島・高知の3拠点で時系列データベースCLOUDSHIPと可視化ソフトRealBoardを軸としたIoT/DXプラットフォーム向けソフトウェアの開発・販売を行うソフトウェアメーカーです。
クラウド (主にAWSやGC) や、IoT関連の開発支援サービスやソリューションの受託開発サービスも提供しています。
現在、鹿児島・高知での開発エンジニア採用を強化中です!カジュアル面談も随時お受けできますので、お気軽にご連絡ください。