share facebook facebook twitter menu hatena pocket slack

2018.08.16 THU

direnvとpiculetを使いAWSのセキュリティーグループを設定する

茅根涼平

WRITTEN BY 茅根涼平

はじめに

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/

元記事はこちら

direnvとpiculetを使いAWSのセキュリティーグループを設定する

茅根涼平

茅根涼平

2018年4月に入社。構築担当です。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。