LoginSignup
2

More than 5 years have passed since last update.

AWS OpsWorksでインスタンスを追加された時にALBに追加するChefのレシピ

Last updated at Posted at 2017-11-26

概要

2017年11月時点、AWS OpsWorksがALBに対応していない。
EC2インスタンスが起動後、Chefが実行されセットアップが済んでもALBのターゲットグループに追加されないということが起きる。

ALBのターゲットグループに追加、削除するレシピを作成することで対応できる。

レシピ作成

knife create cookbook alb

ALBに登録

alb/recipes/register.rb
aws_instance_id = node[:opsworks][:instance][:aws_instance_id]
target_group_arn = node[:alb][:target_group_arn]

bash 'register instance' do
  code <<-END
    aws elbv2 register-targets \
    --region ap-northeast-1 \
    --target-group-arn #{target_group_arn} \
    --targets Id=#{aws_instance_id}
  END
end

ALBに解除

alb/recipes/deregister.rb
aws_instance_id = node[:opsworks][:instance][:aws_instance_id]
target_group_arn = node[:alb][:target_group_arn]

bash 'deregister instance' do
  code <<-END
    aws elbv2 deregister-targets \
    --region ap-northeast-1 \
    --target-group-arn #{target_group_arn} \
    --targets Id=#{aws_instance_id}
  END
end

カスタムJSONの設定

{
  "alb" : {
    "target_group_arn" : "arn:aws:elasticloadbalancing:ap-northeast-1:11111111111:targetgroup/name/123e123e123e123e"
  }
}

AWS OpsWorks Stacks のライフサイクルイベント

SetupとShutdownに追加する。

Setup

alb::register

Shutdown

alb::deregister

IAM Policy

起動するEC2インスタンスのIAM Roleに付与する。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticloadbalancing:RegisterTargets",
                "elasticloadbalancing:DeregisterTargets"
            ],
            "Resource": "*"
        }
    ]
}

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2