この記事を読むのに必要な時間:およそ 1 分
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の場合は独自言語でマニフェストを記述するため,その習得コストがかかります。また得体の知れないツールをサーバーに導入することに抵抗がある人がいるかもしれません。導入に困難がつきまとうツールではありますが,実際に導入できると,そのメリットは計り知れないツールとも言えます。
もし興味を持たれた方がいれば,まず自分でツールに触れてみてどのようなツールなのかを実感し,もし自分にメリットを与えるツールだと思えたら導入を検討してみてはいかがでしょうか。