Puppetってなんぞや?
今日から、Puppetまわりのことを色々書いていこうと思います。
前回のブログでは、自前の勉強用環境(CentOS)を使っていくって話をしましたが、いきなり使う前にpuppetってなんぞやって話をします。
※実機を使った話は、2〜3回くらい先かも。
構成管理
サーバを構築・運用するにあたり、
- 各種パッケージのインストール・アップデート
- 各種設定ファイルの編集
- 各種パラメータのチューニング
- サービスの停止起動
- パッケージのアップデート
などなどサーバを構成するいろんな要素を管理(構成管理)する必要があるわけです。
原始的に構成管理をする場合、手作業で行うことになりますが色々と問題があります。
例えば、
- 設計書・手順書など作業の拠り所とするドキュメントの作成が必要
- 設定作業に時間がかかる
- オペレーションミスが起きやすい
- 構成変更の頻度や量が多いと、設計書・手順書・実機間の一貫性担保が大変
といったところでしょうか。
これが2〜3台程度のサーバだけで運用されるならまだしも、サーバ数十台など規模が大きくなるとなおさらです。
システムを一度構築し、運用が始まったら当分構成変更することはないというのであれば、百歩譲って手作業でいいかもしれません(いや百歩譲ってもダメかも)。
しかし、近年は、利用者のニーズが常に変わったり・新しいことが求められるなど、システムに求められるものは目まぐるしく変化しています。
こうなってくると、構成管理をいかに効率化するかが求められてきます。
Puppet(構成管理の自動化)
Puppetは、Puppet Labsという企業が開発している、構成管理を自動化できるツールです。
Puppetでは、マニフェストと呼ばれるサーバのあるべき姿(設定とかもろもろ)記載したファイルを利用し、マニフェストに従ってサーバの構成を変更したりできます。
一例として、下の図使ってざっくりと説明します(ちなみにagent/master構成と呼ばれるやつです)。
masterサーバが、構成管理対象のサーバ(agentサーバ)へマニフェストを配布し、agentサーバにはマニフェスト通りの構成情報が適用されます。
これにより、マニフェストによって、各サーバの構成管理及びその自動化を実現できます。
少し極端な言い方ですが、マニフェストさえ作っておけば、サーバ台数が数十台だろうと数百台だろうと、作業負荷はそんなに増えないわけです。
手作業と比較しても、作業スピード・作業量の面で格段に負荷が減ることがイメージできるかと思います。
(Puppetを使うための事前設定等やマニフェスト作成はありますが、それを差し引いても断然効率的です。)
ちなみに
ここでは、agent/master構成で説明しましたが、それ以外の方式もあります。
例えば、「Vagrantで仮想環境を立てて、ホストOS上に配置したマニフェストをマウントして、仮想環境へ適用する」なんて使い方もできます。
今日はここまで
Puppetとはなんぞやっって話を、触りの部分だけしました。
次は、マニフェストの話を取り上げる予定です。