Puppetで行うLinuxシステムの自動設定と設定管理 4ページ
クライアント/サーバー構成で有用なマニフェスト設定
最後に、クライアント/サーバー構成でpuppetを利用する場合に有用なマニフェスト設定項目を紹介しておこう。
特定のホストのみに適用する設定
マニフェスト内では「if」や「case」などの比較構文を利用することで、特定の条件下でのみ実行されるリソースを定義できる。詳しくは比較構文に関するドキュメントを参照してほしいが、たとえば特定のIPアドレスのホストのみで実行されるリソースを定義するには、以下のようにする。
if if $ipaddress != "192.0.2.1" { != "192.0.2.1" { file { "/etc/puppet-test": content => "This file is create by puppet for test.", mode => "644", owner => "root", group => "root" } }
この場合、ホストが「192.0.2.1」以外の場合のみ、「/etc/puppet-test」というファイルが作成される。
ファイルをpuppetサーバーからコピーして設定
puppetmasterサービスには簡易的なファイルサーバー機能が用意されており、このファイルサーバー経由でファイルを取得してクライアント側に配置する、といった処理が可能だ。
ファイルサーバー機能を有効にするには、サーバー側の「/etc/puppet/fileserver.conf」ファイルを編集し、ファイル公開用のディレクトリとその名称、アクセス権限を指定しておく必要がある。たとえば、「/etc/puppet/exported_files」ディレクトリを公開用ディレクトリとして利用し、「files」という名称で参照する場合、以下の内容をfileserver.confに追加しておく。
[files] path /etc/puppet/exported_files allow *
ここで、「allow *」という行は、すべてのクライアントからアクセスを許可することを示している。アクセス許可について詳しくはファイルサーバー機能のドキュメントを参照してほしい。
ファイルサーバーで提供されるファイルは、マニフェスト内で「puppet:///<ディレクトリ名>/<ファイル名>」というURLで参照できる。クライアント側で指定したディレクトリ内からファイルを取り出すには、マニフェストファイル内で「file」リソースタイプのリソースを定義する。たとえば、ファイルサーバーから「puppet-sample.txt」を取り出し、「/etc/puppet-test」というファイルに格納するには、以下のようなリソースを定義すれば良い。
file { "/etc/puppet-test": source => "puppet:///files/puppet-sample.txt", mode => "644", owner => "root", group => "root" }
Puppetのメリットの1つは設定が目に見える形で残ること
Puppetのメリットの1つに、クライアント/サーバー型で設定を集中管理できるという点があるが、それ以上に重要なのが、Puppetでは設定内容が必ず「マニフェストファイル」という目に見える形で残される点だ。それ自体がサーバーのデプロイのための要件を定義したファイルとなり、またマニフェストファイルは可読性の高いフォーマットになっているため、担当者はサーバーの要件を簡単に確認できる。
設定管理ツールというと、多数のサーバーを使っている大規模な環境向けという印象があるかもしれないが、Puppetは設定の記述も用意であり、またクライアント/サーバーともに簡単に構築できる。今回は解説していないが、クライアントがサーバーにアクセスするだけでなく、サーバーからクライアントに向けてマニフェストを実行するように指示を出すことも可能だ。これにより、特定のサーバーだけをPuppetサーバー経由で設定する、といった作業も簡単に行える。
さまざまな環境でサーバー管理を容易化できるPuppetを、ぜひ試して見てはいかがだろうか。