はじめまして。株式会社 paperboy&co. の宮下と申します。
この連載では,最近注目を集めているRuby製のシステム自動管理ツールPuppetについて,その概要から具体的なシステム管理への適用まで,実際の現場で利用するために必要な情報をお届けします。
システム管理とは
システム管理と一口に言っても,以下のような様々なタスクから構成されます。
- ハードウェアの設置
- ネットワークへの接続
- OSのインストール/設定
- ネットワークの設定
- OSへの最新パッチ適用
- ソフトウェアのインストール/設定
- OS/ソフトウェアのアップデート
- OS/ソフトウェの設定変更
細かく言えば,他にもタスクは色々ありますが,これらのタスクを通じてシステムを「あるべき状態」に維持するのがシステム管理である,と言えるのではないでしょうか。
システム自動管理ツールの必要性
それでは,システム管理の自動化はなぜ必要なのでしょうか? 手作業でのシステム管理には次の様な問題が常につきまといます。
- システム管理に費やす時間
- 単一サーバでも手作業では時間がかかる
- ましてや数十台,数百台ともなると…
- タスク間の待ち時間
- 待ち時間中に並行して別の作業も可能だが,作業効率は格段に落ち,ミスも発生しやすくなる
- 実際の設定と「あるべき状態」との乖離
- 作業漏れ
- 人為的なミス
- 作業者のスキルのばらつき
- 手順書の更新忘れ
- 上記問題に起因するトラブルの顕在化
システム管理を自動化することによって,こういった問題を解決することが可能となります。
もちろん,システム管理タスクは,自動化ツールを導入しなくても,自前でスクリプトを書くなどして自動化することも可能ですが,システム自動管理ツールを導入することによって,以下の様なメリットが享受できます。
- 使い捨てスクリプトの量産を防ぐことによる手間の軽減
- 管理タスクを誰もが同じ形で定義でき,管理品質を均一化できる
- 管理タスクを誰もが見える形で定義でき,変更履歴の追跡や監査が可能になる
- 商用製品であれば組み込みの機能により実現
- オープンソースなツールであればSubversionのようなSCM(Software Configuration Management System) 等と連携することにより実現
オープンソースなシステム自動管理ツールPuppet
システム自動管理ツールには,OpsWare,BladeLogicといったGUIベースの商用製品や,Cfengineというオープンソースで歴史のあるツールがありますが,本連載では,次世代Cfengineとして最近注目を集めている,Puppetをご紹介します。
Puppet開発元のウェブサイト(http://puppet.reductivelabs.com/)
Puppetの特徴としては以下のものが挙げられます。
- GPLに基づいたオープンソースであり,Rubyでできている
- 独自の宣言型言語によりシステムを管理
- クライアント/サーバ型アーキテクチャ
- 抽象化レイヤー
- 依存関係の処理
- LDAPサポート
- MLやIRCといったコミュニティの活動や,開発が活発
特に重要ないくつかの項目について,もう少し詳しく見ていきます。

