Piculetで特定のVPCのSecurity Groupだけ管理する

cloudpackエバンジェリストの吉田真吾@yoshidashingo)です。

AWSなどのインフラをコードで管理できるツール群として「Codenize.tools」が有名です。このツール群はクックパッドのインフラエンジニアである菅原元気さんがOSSとして公開しているツール群で、クックパッドは元より、AWS界隈では知らないとモグリであると言われるほど有名なツール群です。

私はその中でも特に、Route 53のDNS情報が管理できる「Roadworker」とSecurity Groupが管理できる「Piculet」を使うことが多いです。

今日はその中からPiculetを紹介します。 以下でやることは、複数のVPCがあるアカウントAの特定のVPCのSecurity Groupを、複数のVPCがある別のアカウントBにインポートする作業です。

インストール

Macからコマンドで利用するため、gemでPiculetをMacにinstallします。

$ gem install piculet --no-ri --no-rdoc

VPCを指定してSecurity Groupのエクスポート

すでにAWS環境にSecurity Groupが多数設定されていることを前提に、まずはローカルファイルにエクスポートをします。

※下記のコマンドではPiculetに直接AWSのcredentialを渡して実行します。Piculetのコマンドだけで環境をまたいで実行できるためとても分かりやすいですが、コマンドのhistoryに残るため、実運用では環境変数をswitchするような方法が他にもありますので、その部分は各自検討してください。

$ piculet -e -o vpc-xxxx.sg --ec2s vpc-xxxx -k <AWS_ACCESS_KEY_ID:A> -s <AWS_SECRET_ACCESS_KEY:A>

設定ファイルのVPCのIDを編集する

$ cp -p vpc-xxxx.sg vpc-yyyy.sg
$ vi vpc-yyyy.sg
→ vpc-xxxx を vpc-yyyy に置換する

Security Groupのインポート(dry runでチェック)

$ piculet -a --dry-run -f vpc-yyyy.sg --ec2s vpc-yyyy -k <AWS_ACCESS_KEY_ID:B> -s <AWS_SECRET_ACCESS_KEY:B>

Security Groupのインポート(実際に適用する)

チェック内容に問題なければ実際に適用します。

$ piculet -a -f vpc-yyyy.sg --ec2s vpc-yyyy -k <AWS_ACCESS_KEY_ID:B> -s <AWS_SECRET_ACCESS_KEY:B>