0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCodeのDevContainersでAWS向けTerraform開発環境を構築

Posted at

こんにちは!株式会社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_IDAWS_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関連の開発支援サービスやソリューションの受託開発サービスも提供しています。

現在、鹿児島・高知での開発エンジニア採用を強化中です!カジュアル面談も随時お受けできますので、お気軽にご連絡ください。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?