カテゴリー別アーカイブ: RDS

serverspecでRDSのパラメータをテストするカスタムリソースを作ってみた

最近、「にわかChef使い」「オレ流運用」から脱却し、

「汎用Chef使い」「モダンな運用」を目指して、

構成の見直しや今までに書き溜めたcookbookのリファクタリングをしています。

 

…で、リファクタリングするならテスト書かなきゃダメでしょう!

(っていうか今まで書いてなかったんかいって話ですがw)

 

ということで、serverspecでテストも書き始めました。

 

そんな中に、

「RDSのパラメータの設定もChefでやっちゃえば設定周りは全部chef-solo実行するだけになるから楽じゃね?」

って勢いで作ったレシピがありまして、

これのテストをどうしたもんかなあ…と思ってGoogle先生に聞いても、

なんか良い方法を教えてくれなかったので、作ってみました。

 

serverspecの拡張方法はきっとGoogle先生が教えてくれるはず!と思ったら、

やっぱりありました。

 

これを参考に、作ったらこんな感じになりました↓

こんな感じで使えます↓

シンプルで良い感じです。

 

参考にさせていただいた記事にも書かれている(下の*1)ように、

「本来であれば、serverspec をフォークし、新しいリソースタイプを追加した上で pull リクエストを送るのが筋」なのかとも思いましたが、

以下の理由から辞めました。

  1. serverspecに本質的には関係の無いAWS SDKという依存関係を持ち込むのは良くない
  2. serverspecはSSHで対象のサーバに繋いでテストするツールな訳だが、
    RDSのパラメータ取得するのにSSH要らない
    (Chefで設定するのも一気に全部できて楽だからというだけで、同じ理由で冗長であるw)

まあ、↑じゃなくてもチキンなので多分できなかったでしょうがw

 

テストの実行は、

  1. git push
  2. Jenkinsさんが検知
  3. Jenkins先生がEC2にサーバ立ててChef実行
  4. Jenkins様がテストして結果を教えてくれる

っていう所謂自動テスト•CI的な所もチャレンジしていて、一応動いてるんですけど、

微妙に安定稼働していないのと試行錯誤してやったのでまとめきれていないので、

また今度書こうと思います。