Cloud Automation as Codeを実現するツール「Catlass」を作りました

Cloud Automation as Codeを実現するツール「Catlass」を作りました
こんばんは。てるい@氷点下の札幌です。

この記事は、Cloud Automator Advent Calendar 2017の12日目の記事です。

Cloud Automatorは使いやすいが、使いづらい

突然ですが、Cloud Automatorのジョブをアカウントを跨いでコピーしたり、ジョブをテンプレートから一括で定義したかったり、ジョブのバージョン管理をしたくなることはありませんか?私はあります。

Cloud Automatorは分かりやすい機能設計とユーザフレンドリーなナビゲーションUIで非常に簡単に使い始めることができます。それはとても素晴らしいことではあるのですが、AWSなんかでもよくあるように複数アカウントで大量のリソースを扱いたいと思った時にはGUIだけでは管理が難しくなってきます。

我々はどうしてきたのか

例えばAWSだと、私たちはCloudFormationやterraform、またはAPIを駆使したcodenize.toolsのようなツールによって定義をコード化し、管理を自動化してきました。

では、Cloud Automatorはどうでしょうか?Cloud AutomatorもAPIが公開されています。ということは、コード化できるということです。

ということで

作りました。
名前に特に深い意味はありません。「CA」という文字を入れたかったので「カ」とか「キャ」から始まるカッコイイ単語でカトラス(Cutlass)というのが浮かんだので、それをもじった感じです。なので、「カトラス」とか「キャトラス」とか読んでもらえれば(ちなみにこれを聞いて「ソード・カトラス」が浮かんだ人とは仲良くなれそうな気がしますが、ここは会社のブログなのでこれ以上は自重しておきます)

使い方など

細かい使い方はREADMEを読んでもらうとして、ざっくり流れや特徴を説明していきたいと思います。

インストール&設定

Gemなのでこれだけです(要Ruby環境) そして、Cloud AutomatorのAPIキーを発行して CA_API_KEY という環境変数にセットします。

現在の定義を書き出す

以下のコマンドで CAfile というファイルに現在の定義が書き出されます。

定義を反映する

手元で CAfile に追加/変更/削除した定義をCloud Automatorに反映するのは以下のコマンドになります。なお、恒例?の --dry-run オプションをつけると反映せずに手元とCloud Automator側との差分だけ見られます。

設定ファイル例

こんな感じです。特徴としては、Cloud Automatorの内部的なIDを意識せずに使えるように ジョブ名でマッチングする仕様 になっています。つまり、ジョブ名は一意であることが求められ、ジョブ名を変えると別の定義として扱われることに注意が必要です。また、Rubyの内部DSLとなっているため、冗長な記述をループやメソッドで簡略化したり、 aws-sdkAws::EC2::Client.describe_instaces などを実行した結果を利用することでCA単体ではできないタグ以外の要素でフィルタリングした結果を使って定義を組み立てたりもできます。

最後に

Cloud Automatorのジョブが増えてきて管理にお困りの方、ジョブのコピーや一括定義をやりたい方は是非試してみてください。ただし、まだβクオリティで私の個人プロジェクトなので、いずれ会社としての管理に移行できればと思っていますが、ご利用は自己責任でお願い致します。

AWS運用自動化サービス「Cloud Automator」無料トライアルはこちらから

COMMENT ON FACEBOOK