クラシル開発ブログ

クラシル開発ブログ

VS Codeで作るAWS Vault付きのポータブルなTerraform環境

f:id:matsuokashuhei:20201203101901p:plain

はじめまして、ソフトウェア・エンジニアの松岡です。

私はコマース事業部で先日に発表したネットスーパー機能のインフラ、バックエンド、たまにiOSなどわりといろいろなことを担当しています。 また今年の7月にサービスを終了したクラシルストアでは開発だけでなく、販売する商品の管理などストアの運営や、カスタマーサポートなどもやってました。

いろいろなことをやることは大変ですが、視点が増えることで新たに気づくことや考えが深まることがあり、そこには大変さ以上の恩恵があるので好きでやっています。

これは「dely #1 Advent Calendar 2020」の6日目のエントリーです。

「dely #2 Advent Calendar 2020」もあるのでぜひご覧ください。こちらの今日のエントリーはfukuさんのエンジニアの僕が初めてプロダクトマネージャーをする上で特に意識したことです。大作でした、最高です。

昨日は#1が安尾友佑さんのエンジニアがゼロから始めるプロダクトマネジメントで、#2は伊ヶ崎(@_ikki02)さんのdelyクラシル、最近のデータ基盤の話でした。こちらも大作でした。

今回の私のエントリーでは「VS Codeで作るAWS Vaultの一時認証つきのポータブルなTerraform環境の作り方」を紹介します。

*紹介する作り方はMacの場合を想定しています。WindowsやLinuxの場合は差異を適宜読み替えてください。

紹介するTerraform環境の特徴

特徴は次のとおりです。

このように実行環境もエディターの設定もポータブルのため、いつでもどこでもそして誰でも同じ環境で開発することができます。また、一からTerraform環境を作るときも簡単にその環境を準備することができます。

作るまえにご準備するもの

Terraform環境を作る前にご準備していただくものは次のとおりです。

作り方

ではさっそくはじめましょう。やることは1つです。

次の内容の .devcontaier.json というファイルを作り、任意の場所に保存してください。

aws-vault execに渡すプロファイルのsample-profileは適宜変えてください。

{

    "image": "hashicorp/terraform:0.13.5",
    "runArgs": [
        "--env-file",
        "sample-profile.env"
    ],
    "extensions": [
        "HashiCorp.terraform"
    ],
    "settings": {
        "[terraform]": {
            "editor.formatOnSave": true,
            "editor.tabSize": 2,
        }
    },
    "initializeCommand": "aws-vault exec sample-profile -- env | grep AWS > sample-profile.env"
}

.devcontaier.jsonRemote - Containers の設定ファイルです。設定の内容は次のとおりです。

  • hashicorp/terraform:0.13.5 というDockerイメージを使います。0.13.5の部分はTerraformのバージョンですので適宜、バージョンを選んでください。
  • Dockerイメージのビルドのときにenvファイルを渡します。
  • HashiCorp.terraform というVS Codeの拡張機能をプリインストールします。またこの拡張機能向けの設定も追加します。
  • コンテナーを作るときに aws-vault exec sample-profile -- env | grep AWS > sample-profile.env というコマンドを実行して、上記のDockerイメージに渡すenvファイルを作ります。

.devcontaier.json の詳しい解説はdevcontainer.json reference をご覧ください。

それではTerraform環境を作りましょう。

  1. .devcontaier.json を保存したディレクトリーをVS Codeで開いてください。
  2. 開いたらコマンドパレットからRemote-Containers: Reopen in Containerを実行してください。
  3. AWS VaultがOSのセキュア情報 (Keychain Accessなど)へアクセスするためのパスワードをたずねてきたら、パスワードを入力してください。

これで出来上がりです!!!

VS Codeが完全に立ち上がったらターミナルでterraform versionでTerraformの実行環境を、env | grep AWS でAWSの一時的な認証情報を確認してください。

ご利用の注意

1つ注意です。

aws-vaultで作るIAM の一時的なセキュリティ認証情報 はVS Codeを開くときに作ります。 この認証情報は1時間くらいで有効期間が切れてしまいます。切れたらコマンドパレットからRemote-Containers: Rebuild Containerを実行してください。これを行うと再び認証情報が作られます。

認証情報が切れるなら --server オプションを使えばいいじゃないと思った方もいらっしゃるかと思います。 ごつっこみありがとうございます!!!

適用できるかどうかを調査中です。適用できたときは開発ブログで報告させていただきます。

それでは快適なTerraform開発を!!!

最後に

お知らせです。

dely ではエンジニアやデザイナーを絶賛募集中です!ご興味があれば次のリンクからお気軽にご応募くださいませ!

www.wantedly.com join-us.dely.jp

またエンジニア、デザイナー向けのイベントも開催しています。こちらもご興味があればどうぞ!

bethesun.connpass.com

明日のエントリーは#1が奥原さんの「新規事業で闘い続けるためのプロダクトマネージメント」、#2が梅森さんの「Androidのビルド用Dockerイメージダイエット計画」です、きっと大作ですね、どうぞお楽しみに!!!