これから数回に渡って、独自のリソースタイプを作成して、Puppetを拡張する方法について解説します。Puppetのバージョンは現在の安定版である0.24.4を前提としています。
今回はリソースタイプを拡張し、カスタムリソースを適用するための全体的な流れについて解説します。カスタムリソースタイプはRubyプログラムで作成しますが、プログラムの詳細については次回以降で解説します。
Puppetサーバ側の設定
カスタムリソースタイプはPuppetサーバ上のモジュールパスに置かれますので、カスタムリソースタイプ用のディレクトリを作成します。
次に、Puppetクライアントがカスタムリソースタイプを同期できるようにするために、/etc/puppet/fileserver.confに以下のように記述し、ファイルサーバにマウントします。pathパラメータは不要です。
これにより、/etc/puppet/modules/*/plugins以下のファイルが、puppet://$server/pluginsで参照できるようになります。*の部分はどんな名前でも構いません。複数のディレクトリが/etc/puppet/modules以下に存在する場合でも、puppet://$server/pluginsですべて参照できます。
Puppet クライアント側の設定
Puppetクライアントでは、カスタムリソースタイプを同期するために、/etc/puppet/puppet.confに以下のように記述します。
カスタムリソースタイプの作成
今回はサンプルとして、filesimpleというリソースタイプを作成してみます。このリソースタイプは、fileタイプに似ていますが、ensureとmodeのみがパラメータとして利用できます。
カスタムリソースタイプの作成は、タイプの作成とプロバイダの作成から構成されます。
タイプの作成
以下の内容の/etc/puppet/modules/custom/plugins/puppet/type/filesimple.rbを作成します。このファイルでは、filesimpleタイプの定義を行い、どういったパラメータが使えるか、といったことを主に定義します。
プロバイダの作成
以下の内容の/etc/puppet/modules/custom/plugins/puppet/provider/filesimple/posix.rbを作成します。このファイルではfilesimpleタイプのリソースを適用する場合に、具体的にどのような処理を行うのかを記述します。
カスタムリソースの適用
作成したfilesimpleタイプのリソースを定義し、実際にシステムに適用してみます。
Puppetサーバ側での作業
Puppetサーバ側で、以下の内容の/etc/puppet/manifests/site.ppを作成し、filesimpleリソースを定義します。
puppetmasterdを起動します。
Puppetクライアント側での作業
puppetdを実行してPuppetサーバに接続し、カスタムリソースタイプの同期とカスタムリソースの適用を行います。
カスタムリソースタイプが同期されていること、filesimpleリソースが適用されてファイルが作成されていることが見てとれます。
以上がカスタムリソースタイプを作成し、実際に適用するまでの流れとなります。次回はタイプやプロバイダのRubyプログラムについて、詳細に解説する予定です。
- 参考リンク