Kelbimで特定のVPCのELBだけ管理する

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

次に http://codenize.tools から紹介するのは Kelbim です。

今回は特定のVPC配下のELBの情報をエクスポートして、別のVPCにも同じELBを作成してみます。

ちなみに本日時点で最新の0.2.8はAWS SDK for Rubyの1系(core)にしか対応していないので、bundlerを使って1系SDKを含めた環境を作ってその中で使う方法をとります。

1. インストール

1-1. bundlerのインストール

  • bundlerをインストールします

$ gem install bundler

1-2. kelbim用のbundler環境作成

  • 適当な場所にディレクトリを作ってGemfileを作ります
$ vi Gemfile

source "https://rubygems.org"

gem "kelbim"
gem "aws-sdk", "~> 1.0"
  • bundle installでgemをこの環境にインストール
$ bundle install --path vendor/bundle

2. VPCを指定してELBの定義のエクスポート

2-1. クレデンシャルの設定

  • クレデンシャル情報をexportするか、~/.aws/credential に書いておきましょう(kelbimのオプション-pでプロファイルを切り替えられます)
  • 今回は利用するVPCのクレデンシャルを渡します
$ export AWS_ACCESS_KEY_ID=<aws_access_key>
$ export AWS_SECRET_ACCESS_KEY=<aws_secret_access_key>

2-2. 環境が正しいか確認

  • 以下で表示されるELBがエクスポート対象で正しいか確認します(意図しないものが表示されたらクレデンシャルの設定を修正しましょう)
$ bundle exec kelbim -e -r ap-northeast-1 --show-load-balancers

2-3. ファイルにエクスポートする

$ bundle exec kelbim -e -o export-origin.elb -r ap-northeast-1 --ec2s vpc-<origin>

3. 編集しよう

  • export-origin.elbをimport-new.elbにコピーして編集します。
    • とりいそぎ先頭のVPC IDだけ編集しますが、必要に応じてリスナーやinstancesも修正してください。
ec2 "vpc-<origin>" do
(後略)

4. VPCを指定してELBの定義をインポート

4-1. クレデンシャルの設定

$ export AWS_ACCESS_KEY_ID=<aws_access_key>
$ export AWS_SECRET_ACCESS_KEY=<aws_secret_access_key>

4-2. dry-runしてみる

$ bundle exec kelbim -t -f import-new.elb

4-3. 実行して適用する

$ bundle exec kelbim -a -f import-new.elb

小ネタ

  • ELBの設定のときに、S3にログを出力する場合はあらかじめバケットに以下のようなポリシーを適用しておく必要があります。
{
    "Version": "2012-10-17",
    "Id": "AWSConsole-AccessLogs-Policy-1422514113174",
    "Statement": [
        {
            "Sid": "AWSConsoleStmt-1422514113174",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::582318560864:root"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::elb-logs-bucketname/*"
        }
    ]
}