はじめまして、ソフトウェア・エンジニアの松岡です。
私はコマース事業部で先日に発表したネットスーパー機能のインフラ、バックエンド、たまに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環境の特徴
特徴は次のとおりです。
- hashicorp/terraform というDockerイメージで作るのでTerraformの実行環境がポータブルです。
- VS Codeのリモートコンテナー機能 (Visual Studio Code Remote - Containers)を使うのでVS Codeの設定や拡張機能もポータブルです。
このように実行環境もエディターの設定もポータブルのため、いつでもどこでもそして誰でも同じ環境で開発することができます。また、一からTerraform環境を作るときも簡単にその環境を準備することができます。
作るまえにご準備するもの
Terraform環境を作る前にご準備していただくものは次のとおりです。
- AWS アカウント
- スイッチロールで切り替えるプロファイル
- AWS Vault
- VS Code
- Remote - Containers (VS Codeの拡張機能)
- Docker (Docker for Macなど)
作り方
ではさっそくはじめましょう。やることは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.json
はRemote - 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環境を作りましょう。
.devcontaier.json
を保存したディレクトリーをVS Codeで開いてください。- 開いたらコマンドパレットから
Remote-Containers: Reopen in Container
を実行してください。 - 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
またエンジニア、デザイナー向けのイベントも開催しています。こちらもご興味があればどうぞ!
明日のエントリーは#1が奥原さんの「新規事業で闘い続けるためのプロダクトマネージメント」、#2が梅森さんの「Androidのビルド用Dockerイメージダイエット計画」です、きっと大作ですね、どうぞお楽しみに!!!