構成管理ツールを使ってみよう

Puppetとは

Puppetはサーバ構築や管理の自動化を行う構成管理ツールの1つです。2005年に最初のバージョンがリリースされたこの種の中でも歴史があるツールです。2017年9月現在の最新バージョンはバージョン5で、現在もPuppet社を中心に開発が続けられています。

Puppet社のWebページ
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の場合は独自言語でマニフェストを記述するため、その習得コストがかかります。また得体の知れないツールをサーバーに導入することに抵抗がある人がいるかもしれません。導入に困難がつきまとうツールではありますが、実際に導入できると、そのメリットは計り知れないツールとも言えます。

もし興味を持たれた方がいれば、まず自分でツールに触れてみてどのようなツールなのかを実感し、もし自分にメリットを与えるツールだと思えたら導入を検討してみてはいかがでしょうか。