ACEに聞け!CloudFormation編で話して来たよ #jawsdays – JAWS DAYS 2014 参加レポート Vol.10

よく訓練されたアップル信者、都元です。

先日3月15日、新宿で開催されたJAWS DAYS 2014、その「ACEに聞け!」というトラックでCloudFormationについてお話してきました。

後から自覚したんですが、ACEに聞け!って初心者用トラックだったんですね。そんなんブッチ切ってCloudFormationの最深部に近いところまで潜って行ったのは若干やり過ぎたかも。中盤、大半の人がポカーンとしていた気がしてなりませんw

セッション内容のあらすじ

全体の流れは、自己紹介からCloudFormationの概要、CFn用のHelper Scriptsの紹介、そしてこのセッション用に作った Blue-Green Deployment 環境用のテンプレートの紹介とデモ。という感じです。

途中、EC2のuser-dataにbashスクリプト等を仕込んで、サーバを自己組織化 *1するお話をしました。詳しくはAmazon EC2のUser Dataにシバンを指定してスクリプトを実行するあたりを御覧ください。

この自己組織化の精神を、釣り気味にまとめたのが「SSHしたら負けかなと思っている」という言葉です。起動するだけで諸々のインストール・設定・起動等が自動的に完了するため、SSHする必要は無い、というところにゴールを求めて欲しい、ということです。SSHするときは、何か想定外のことが起きていて、それを調査しに行く時だけです。

さて、user-dataでは若干機能が弱いので、cfn-initを使いましょうねという流れに入り、それと合わせてcfn-signalというスクリプトもご紹介しました。この辺りの詳細は以前CloudFormationのヘルパースクリプトcfn-initによるインスタンスの初期化というエントリでまとめました。

流れは更に深淵へ。cfn-hupの仕組みについても言及。要するに、CloudFormationのスタック更新 (stack update) アクションがあった場合に、AWSリソースのプロパティ更新だけでなく、EC2インスタンス内の状態も更新したい、という要求に応えるためのスクリプトです。これは実はまだ当ブログに紹介エントリを書いていませんw 近々書きたいですね。

個人的に最深部はCloudFormationのCustom resourceだと思ってるんですが、そこまでは潜りませんでした。そこはいつかまたw

さて、機能を深堀りしたところで、この知識を使ってテンプレートの実例をご紹介しました。CloudFormationで作る、Blue-Green Deploymentを実現するためのLAMP環境です。こちらの詳細はまた別エントリとして細かくまとめていますので、今しばらくお待ちください。

尚、セッション中に下記のようなスライドが突如現れて頭が真っ白になるハプニングがありましたorz

slide34

このスライドが目に飛び込んできて数秒の間があったと思いますが、その一瞬では「あー、大体作り終えて流れを見なおしてる時に "こういうページあった方がいいな" とか思って追加したな…。そしてその中身を書いた覚えがない。そりゃこうなるわな。」などという思いが走馬灯のように駆け抜けておりました。

いやー、スライドは直前まで見直すべきですねぇ…。

脚注

  1. 何も手を入れていない汎用のAMIを使って、EC2インスタンスを起動するだけで、そのサーバが機能するように自分をconfigureすること。