#はじめに
4月から新社会人になり研修終了後インフラを担当する部署へ配属され、すぐに使う機会があったツールで「最高に便利!!」と感じた2つを簡単にまとめました。
使用PC:Mac ※bundleインストール済み
##direnv
各ディレクトリに環境変数を定義し、作業を行ないたいディレクトリになった時に環境変数が有効になり、そのディレクトリから抜けると無効になるツールです。 なので、プロジェクト固有の環境変数を使用できます。
仕組み
direnvはカレントディレクトリと親ディレクトリに".envrc"ファイルの存在確認が取れると実行できるようになります。なので、実行できるときは設定した環境変数がエクスポートされます。
##piculet
piculetはAWSのセキュリティグループを管理するためのツールで、Ruby DSLを使用し、更新をすることができます。
仕組み
すでに設定している内容をRuby DSLにエクスポートし編集を行うことでAWSのセキュリティーグループを更新します。操作を1回行っても複数回行っても結果が、Ruby DSLの記述通りにAWSが設定されます。
DSLは以下のようになっています。
ec2 "vpc-XXXXXXXX" do
security_group "default" do
description "default VPC security group"
ingress do
permission :tcp, 80..80 do
ip_ranges(
"0.0.0.0/0",
)
end
permission :any do
groups(
"any_other_group",
"default"
)
end
end
#AWSのセキュリティーグループを設定
##はじめにdirenvの設定をします
$brew install direnv
AWSのセキュリティーグループファイルを置きたいディレクトリに移動する
$echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
$source ~/.bashrc
$direnv edit .
export AWS_ACCESS_KEY_ID=AWSアクセスキー
export AWS_SECRET_ACCESS_KEY=AWSシークレットアクセスキー
export AWS_REGION=リージョン名
$env | grep ^AWS
###direnvの設定が完了後、AWSセキュリティーグループの設定に入ります。
##piculet
$gem install piculet --no-ri --no-rdoc
$bundle exec piculet -e -o Groupfile
※確認・更新するときは毎回実行する。
$vim Groupfile
$bundle exec piculet -a Groupfile --dry-run
$bundle exec piculet -a Groupfile
#もうdirenvとpiculetは手放せません。その理由は
direnv
一度設定してしまえばAWSのIAMアカウントが多くても間違えることがほぼ無くなるのでトラブル対策にもなります。AWSセキュリティーグループだけでなく、他にAMIのバックアップをAWS CLIで行うときにも使え、2回目からAWSアクセスキー、AWSシークレットアクセスキーの入力の手間が省けるので良いと感じました。
piculet
作業履歴を残したいとき、AWSコンソール画面のスクリーンショット数が増えるとめんどくさいですが、piculetを使えば少なくとも更新前と更新後の結果をコピーするだけでいいからです。私の場合は--dry-runを行なったさいのテスト結果も一度コピーをとるのですが、スクリーンショットするより圧倒的に楽なのでありがたいです。