システム管理者はタスク自動化のためにコードを書き、多くの開発者は自身のシステムを実行している。このような状況の中で、開発と運用の融合であるdevopが洗練された構成管理や実際に利用できるオーケストレーションツールとして具体化してきた。
このまとめのために、私たちはオーケストレーションを実行するアプリケーションに注目した。そして、単純にひとつのマシンでワンライナーを実行するものから、アプリケーションの新しいバージョンが使えるようになったら、ローリング・リスタートを制御してアプリケーションの更新を行うようなものまで幅広く調べた。
オーケストレーションのプラットフォームを選択するのは制御対象のシステムの生態に依存する。Linuxの世界では、軽量な非商用の選択肢がある。
ControlTierはオーケストレーションやそれ以上のことが可能だが、開発のペースは遅い。主要なコントリビュータがこのプロジェクトをフォークしてRunDeckを作った。これは“ControlTierの最も人気のある機能のスピンオフ、または改善”だ。単に“サーバでこのコマンドを実行する”というようなアドホックなオーケストレーションに加えて、RunDeckは複雑なワークフローと自動化を実現できる。例えば、“午後10時に1台だけ残して、その他のサーバを停止してパッチを適用し、停止したサーバを起動する”というような処理を自動化できる。構成管理向けにRunDeckはPuppetと統合できる。両方ともApacheライセンスの製品だ。
FabricはPythonコミュニティで人気のあるBSDライセンスの製品だ。“アプリケーション配置やシステム管理タスクでのSSHの使用の合理化”を目的として設計されたこの製品は、たくさんのサーバで単純なスクリプトを実行することで運用を簡単にしたい場合に向いている。同時に、この製品はプログラミングライブラリとしても利用できるので、より複雑なプログラムに組み込むこともできる。
FuncはRed HatとCentOSを含む派生環境と深い関係がある。この製品はGPLv2ライセンスで最近バージョン0.28がリリースされた。Funcには他のオーケストレーションツールにはある動的な性質が欠けている。例えば、複数の関連するサーバでコマンドを実行するには、サーバグループを定義しなければならない。このように中央集権的に一括管理するのは、サプライチェーンマネジメントの観点からは状態を把握しやすいが、構成管理システムでメンテナンスするには冗長かもしれない。
OpsCodeのChefはKnifeと共に利用する。名前が示すようにこのツールはChefと一緒に使われることが多いが、Chef(例えば、構成管理にPuppetを利用している場合、Knifeを使える)とは別に利用して、任意のコマンドをSHH経由で実行することができる。この製品はCreative Commonsライセンスだ。
Puppet LabsのMCollectiveは依然として広く使われており、最近、Perl、Python、PHPのような言語で新しいアクションを記述できる機能が追加された。サポートする言語が増えたことで、開発者はさらに多くの開発者がMCollectiveのユーザになり、既存の監視やレポートも簡単にMCollectiveに移植できるだろう。他の選択肢とは違って、MCollectiveは内部ノードの通信にSSHを使わない。代わりにメッセージキューイングシステムを使う。こうすることで軽量のメッセージ通信や、非同期の並列メッセージ処理が可能になる。その結果、MCollectiveはとても高性能だ。この製品はApacheライセンスだ。
従来の“開発”と“運用”の概念を混ぜ合わせたプログラミング可能なシステム管理がさらに一般的になりつつある。このようなツールをひとつかそれ以上しっかりと実装しておくことで、システムはより安定し、予測可能になり、管理しやすくなるだろう。
あなたのチームはここに紹介したツールを使っているだろうか。これらのツールについてどう思うか。更なる情報はここInfoQのOperationsとDevOpsで収集できる。