Puppetとは
Puppetはサーバ構築や管理の自動化を行う構成管理ツールの1つです。2005年に最初のバージョンがリリースされたこの種の中でも歴史があるツールです。2017年9月現在の最新バージョンはバージョン5で、現在もPuppet社を中心に開発が続けられています。
Puppet社のWebページ
構成管理ツールとは
構成管理ツールとは具体的などのようなものでしょうか。
先ほど「サーバ構築や管理の自動化を行うためのツール」と述べましたが、それは一般的によく言われているメリットであって、本来的には「サーバーを意図した状態にする」ためのツールと言うことができます。
「意図した状態にする」とは、「あるアプリケーションのバージョンをすべ同じものにする」などを指します。例えば、あるサーバーがまだバージョン2.2だった場合はバージョン3.0にするが、別のサーバーがすでにバージョン3.0だった場合は、特に作業は行われません。また、すべてのサーバーがすでにバージョン3.0になっていたら、そのときは何も作業が行われません。
このように、ある操作を何回行っても結果が同じになるという概念を冪等性(べきとうせい)と呼びます。構成管理ツールはこの冪等性を実現することで、サーバーの構築・管理を効率化しようとするツールです。
Infrastructure as Code
これまでサーバーの構築・管理を行う際は、1台1台サーバーを確認し、手動で作業する必要がありました。しかし、構成管理ツールを導入すると、「意図した状態」をコードという形で記述し、すべての対象サーバーにそれを反映することが可能になります。
このように、ソフトウェア開発と同様にコードを書くことで、インフラを構築したり、管理を自動化する仕組みを「Infrastructure as Code」と呼びます。Puppetもこの「Infrastructure as Code」を実現するツールの1つと言えます。
マニフェストとは
Puppetでは独自言語を用いて、「サーバーの意図した状態」をマニフェストというコードに記述していきます。以下の例を見てみましょう。
package {'ntp':
ensure => installed,
}
service {'ntpd':
ensure => running,
enable => true,
require => Package['ntp'],
}
この部分では、packageリソースによってntpパッケージをインストールし、serviceリソースによってntpdサービスの設定を行っています。これを実行すると、Puppetエージェントをあらかじめ導入しておいたサーバーをマニフェストに記述された状態に設定できます。
構成管理ツール導入のススメ
Puppetをはじめとする構成管理ツールは、簡単に導入できるものではありません。特にPuppetの場合は独自言語でマニフェストを記述するため、その習得コストがかかります。また得体の知れないツールをサーバーに導入することに抵抗がある人がいるかもしれません。導入に困難がつきまとうツールではありますが、実際に導入できると、そのメリットは計り知れないツールとも言えます。
もし興味を持たれた方がいれば、まず自分でツールに触れてみてどのようなツールなのかを実感し、もし自分にメリットを与えるツールだと思えたら導入を検討してみてはいかがでしょうか。