Help us understand the problem. What is going on with this article?

AutoScalingのライフサイクルフックをAnsibleと連携させて使ってみた

More than 1 year has passed since last update.

これを使うに至った経緯

ほぼ毎日日報書いてましたが、要はそこに書いてる↓これ!

Try :triumph:

cloud-init使ってのインスタンス起動時初期設定させたい。

【理由1】

実は、ここ最近の担当プロダクト利用者の増加により、本番バッチサーバの負荷増大で、ある程度定期的にSQSにメッセージが蓄積する状態が発生し、その度にSQSからメッセージを取得して動作するワーカーを再起動してました
 →メッセージ蓄積したときだけ、AutoScaleでスケールアウトさせて、メッセージ減ったらスケールインやるべきっしょ :exclamation:

【理由2】

AutoScaleの動作でメッセージの蓄積は回避できましたが、次はスケールアウトしてスケールインを繰り返すために、毎回起動されるインスタンスのIPアドレスが変わります:exclamation:
そのため、バッチサーバのワーカー起動状況を確認や操作できるWEB管理画面が開かなくんなるんですなー :sweat_smile:

 →インスタンスが起動したタイミングでローカルとAutoScaleで紐づいてるサーバのIPアドレスとって、Config自動設定したいなー

ということで調査していくと、解決策として考えたのが、cloud-initということです。
しかし、調査を進めていくと、結局はローカルでシェルスクリプトが動作しているような状態でした。。。 :cry:

これはちょっと・・・(インスタンスにUser-data書いてるのと同じだし、インスタンス別で持ってるからその差分がどうとかではまりたくないしなー)ということで、シェルスクリプトっぽい処理が一括管理できる方法を調べていくと、、、
参考サイトでやってる手段が見つかったというわけです。

他にも、下記のようなLamdaでやる方法もありましたが、「社内でAnsible使い始めてる」ということもあり、今回はこれを選びました

どうやったの?

上記、参考サイトと同じです。(ありがとうございます :bow:)構成は↓こんな感じです。
6851caf3-ba51-03e1-358b-5803537a177c.png

感想とか

使ってるWEB管理ツールが悪いんじゃん?とか、もっと違うやり方もあるじゃんとかツッコミもあるかとは思いますが、
Ansible使う勉強という意味でも今回はこんな形で実装してみました。
ちょっとはまった?対応したところは、参考サイトのスクリプトが「EC2が起動してるけど、SSHができない場合」に対応していない(SSHできちゃう前提になっていた)ので、そこを自分の環境へ反映する際に修正したのと、「AutoScaleでスケールアウトではなく、最初起動したときもライフサイクルフックが動作してSQSにメッセージが飛ぶ考慮がされてない」 ので、それに対応しないと常に起動時のメッセージを受信して失敗していたところです。
本番反映はこれからだけど、ひとまず、こんなことができたので、共有がてら記事書いてみました。

参考サイト

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away