PuppetはRubyで実装、Apache Licenseの元で配布(2.7.0以降)されています。Puppet Labsによって開発が推進されており、商用の「Puppet Enterprise」とOSS版とがあります(本連載ではOSS版を用います)。
PuppetはUNIX系OSのシステム管理を自動化します(Windowsでも動作しますが、UNIX系と一部違いがあります)。パッケージのインストール/アンインストール、設定ファイルやアプリケーションデータなどの配布や修正、サービスの起動設定や再起動処理、特定コマンドの実行といった、システム管理で必要な作業を人間の代わりに実行します。
これらの作業を「Puppet言語」と呼ばれる、独自の宣言型言語によって記述します。このPuppet言語で記述されたファイルを「マニフェスト」と呼びます。特定の作業を実行するマニフェストを汎用化してモジュール化し、汎用の開発言語のライブラリのような感覚で呼び出すこともできます。
Puppet言語ではPuppetの機能を「リソース」という概念で管理しています。例を挙げるとユーザー作成と管理をしたい場合には「ユーザーリソース」を呼び出して適切な情報を定義するといった具合です。
Puppetについては、次回以降に詳しく説明します。
では、実際にここで紹介した自動化技術を利用すると、どの程度サーバーの環境構築を効率化できるのでしょうか? 筆者の所属するNTT OSSセンタでは、PXE、Kickstart、Puppetを組み合わせた仕組みを使い、Web3層(LB/Webサーバー×2台、アプリケーションサーバー×2台、DBサーバー×1台)を手作業と自動構築のニ通りで構築し、それぞれかかった時間を計測する検証を実施しましたので、ここで紹介します。
評価は公平を期すため、自動構築の場合は1台目構築時に自動構築で必要なサーバーを準備する時間を加算して計測し、2台目以降は1台目で準備したサーバーを流用する前提で計測しました。
また作業者のスキルによる差をなくす目的で、手動と自動の双方の作業を1人の同じ作業者が実施しました。
検証の結果、同じシステムを構築する場合、手動構築と比較して自動構築では3分の1の時間で作業が完了しました。作業者が不慣れであった場合はさらに差が広がると予想できます。また作業ミスによる中断も発生するかもしれません。これらの結果から、自動構築は満足できる結果をもたらせると判断しています。
今回は自動構築の概要説明でした。次回からは自動構築に必要なサーバーを構築して、実際にサーバーを自動構築します。次回はPXEブートに必要なサーバーとKickstartについてお話します。お楽しみに。
K男 自動化ってどういうものか想像できたかな?
R子 う〜ん、何となく分かったような分からないような……。
K男 まあ、話だけ聞いても理解しにくいのは分かるよ。それじゃ実際にサーバー構築して実感してみよっか。体験するのが一番! とりあえず明日までに手作業で10台作っておいてね。はい、これ手順書。
R子 えっ? えええええっ!?(泣)
菅原亮(すがはら りょう)
所属:NTT OSSセンタ シニア・エキスパート
1973年生まれ。10歳の時プログラミングに目覚める。
1994年にFM-TOWNS上でLinuxを使い始めて以来、仕事趣味問わずOSSシステムを構築するようになる。
2012年よりOSSシステムの構築自動化に取り組み始め、昔の苦労を懐かしみつつ自動化の普及促進に取り組んでいる。
個人ではNTSyslog日本語対応版など主にWindows用アプリを手掛ける。
趣味は家庭菜園と料理の手動構築で愛車はシルビア。
Copyright © ITmedia, Inc. All Rights Reserved.