はじめに
4月から新社会人になり研修終了後インフラを担当する部署へ配属され、すぐに使う機会があったツールで「最高に便利!!」と感じた2つを簡単にまとめました。
使用PC:Mac ※bundleインストール済み
direnv
各ディレクトリに環境変数を定義し、作業を行ないたいディレクトリになった時に環境変数が有効になり、そのディレクトリから抜けると無効になるツールです。 なので、プロジェクト固有の環境変数を使用できます。
仕組み
direnvはカレントディレクトリと親ディレクトリに”.envrc”ファイルの存在確認が取れると実行できるようになります。なので、実行できるときは設定した環境変数がエクスポートされます。
piculet
piculetはAWSのセキュリティグループを管理するためのツールで、Ruby DSLを使用し、更新をすることができます。
仕組み
すでに設定している内容をRuby DSLにエクスポートし編集を行うことでAWSのセキュリティーグループを更新します。操作を1回行っても複数回行っても結果が、Ruby DSLの記述通りにAWSが設定されます。
DSLは以下のようになっています。
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
.envrcを作成
$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
※確認・更新するときは毎回実行する。
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を行なったさいのテスト結果も一度コピーをとるのですが、スクリーンショットするより圧倒的に楽なのでありがたいです。
参考元
https://so-wh.at/entry/20131105/p1
https://direnv.net/