Puppetってなんぞや?

今日から、Puppetまわりのことを色々書いていこうと思います。

前回のブログでは、自前の勉強用環境(CentOS)を使っていくって話をしましたが、いきなり使う前にpuppetってなんぞやって話をします。
※実機を使った話は、2〜3回くらい先かも。

構成管理

サーバを構築・運用するにあたり、

  • 各種パッケージのインストール・アップデート
  • 各種設定ファイルの編集
  • 各種パラメータのチューニング
  • サービスの停止起動
  • パッケージのアップデート

などなどサーバを構成するいろんな要素を管理(構成管理)する必要があるわけです。
原始的に構成管理をする場合、手作業で行うことになりますが色々と問題があります。
例えば、

  1. 設計書・手順書など作業の拠り所とするドキュメントの作成が必要
  2. 設定作業に時間がかかる
  3. オペレーションミスが起きやすい
  4. 構成変更の頻度や量が多いと、設計書・手順書・実機間の一貫性担保が大変

といったところでしょうか。
これが2〜3台程度のサーバだけで運用されるならまだしも、サーバ数十台など規模が大きくなるとなおさらです。

システムを一度構築し、運用が始まったら当分構成変更することはないというのであれば、百歩譲って手作業でいいかもしれません(いや百歩譲ってもダメかも)。
しかし、近年は、利用者のニーズが常に変わったり・新しいことが求められるなど、システムに求められるものは目まぐるしく変化しています。
こうなってくると、構成管理をいかに効率化するかが求められてきます。

Puppet(構成管理の自動化)

Puppetは、Puppet Labsという企業が開発している、構成管理を自動化できるツールです。
Puppetでは、マニフェストと呼ばれるサーバのあるべき姿(設定とかもろもろ)記載したファイルを利用し、マニフェストに従ってサーバの構成を変更したりできます。

一例として、下の図使ってざっくりと説明します(ちなみにagent/master構成と呼ばれるやつです)。

f:id:ressy-tech:20161026011045p:plain masterサーバが、構成管理対象のサーバ(agentサーバ)へマニフェストを配布し、agentサーバにはマニフェスト通りの構成情報が適用されます。
これにより、マニフェストによって、各サーバの構成管理及びその自動化を実現できます。
少し極端な言い方ですが、マニフェストさえ作っておけば、サーバ台数が数十台だろうと数百台だろうと、作業負荷はそんなに増えないわけです。
手作業と比較しても、作業スピード・作業量の面で格段に負荷が減ることがイメージできるかと思います。
(Puppetを使うための事前設定等やマニフェスト作成はありますが、それを差し引いても断然効率的です。)

ちなみに

ここでは、agent/master構成で説明しましたが、それ以外の方式もあります。
例えば、「Vagrantで仮想環境を立てて、ホストOS上に配置したマニフェストをマウントして、仮想環境へ適用する」なんて使い方もできます。

今日はここまで

Puppetとはなんぞやっって話を、触りの部分だけしました。
次は、マニフェストの話を取り上げる予定です。