クラウドでの設定管理ツールPuppet
Puppetの基本要素、マニフェストとは
Puppetにおけるシステム設定管理用のスクリプトを「マニフェスト」と呼びます。各政党が選挙前に掲げる選挙公約としてのマニフェストと同じ単語です。政党が有権者に対して、当選後に実行する政策を事前に公約するように、Puppetもシステムの最終形をマニフェストで宣言します。
宣言内容とシステムの現状に相違がある場合は、Puppetがマニフェスト通りに設定してくれます。どう設定するのかを宣言するのではなく、システムのあるべき姿を宣言するだけで、設定作業は別途、Puppetが実行してくれます。なお、Puppetによる設定の実行に必要な作業内容を示したスクリプトを「レシピ」と呼びますが、今回は、その説明は割愛します。
ここでマニフェストの一番シンプルな例を紹介してみます。
マニフェスト1:マニフェストの最小構成
上記の例は、サーバーに対して、
- /etc/httpd/conf/httpd.conf というファイルの所有者をapacheに設定し
- さらにapacheというグループに所属するように設定し
- 読み取りと書き込み権限を所有者に付与し
- 読み取りのみの権限をその他のユーザーに付与する
というマニフェストです。
マニフェストは、このような非常にシンプルなものから設定は可能ですが、もちろん、システム管理者の必要に合わせ、より詳細な設定も可能になります。
マニフェストの利用例
マニフェスト2:WEBサーバーのマニフェスト例
先ほどに比べ、少し複雑になりました。httpdサービスの設定とその状態確認に関するマニフェストですが、ひとつずつ見ていきましょう。まず、httpdパッケージを必要としていること、そしてパッケージを保存しているレポジトリにおける常に最新のもの(latest)でなければいけないことを指示しています。簡素化するために、レポジトリの場所は、別途設定されていることを想定してください。
次に、httpd.confという設定ファイルを/httpd/httpd.confからコピーし、所有者以外の権限を読み取り専用にしています。また、その設定を実行する前に、httpdパッケージがインストールされていることも条件付けしています。
次のユーザーとグループの設定はぜひとも注目していただきたい個所です。通常、このような設定は不要とする考え方もあります。なぜなら、httpdパッケージのインストール工程の中に、同様の設定が組み込まれているからです。しかしながら、マニフェストに同様の設定をすることにより、システム管理者が不注意で設定変更を実施してしまった場合でも、これらの設定が確実に維持されることが保障されるのです。設定管理ポリシー施行の自動化の利便性が如実に表現されている個所ともいえます。このようにツールの力を借りてポリシーを強制施行することがシステム管理標準化を維持するためには必須といえます。
最後に、上のマニフェストは、httpdサービスが実行中の状態になっていることを確認することを指示しています。最後のsubscribe指示により、httpd.confに修正や変更が加えられたり、httpdパッケージがアップデートされたりした時に、最新の状態を維持するため、再起動し、設定を反映することが指示されています。