では、パッケージに対応した puppet モジュールの置き場所を決めましょう。例えば、
mkdir -p /etc/puppet/modules/
などとします。このディレクトリ以下に、モジュール名のディレクトリを作成していくことになりますが、 Debian で
の利用を考えると、「 ソースパッケージ名」を使うといいでしょう (バイナリパッケージが細かく分割されていたりする
ので)。
例えば、 apache2 のモジュールを作るのであれば、
mkdir -p /etc/puppet/modules/apache2/manifests
emacs /etc/puppet/modules/apache2/manifests/init.pp
のようにします。「 モジュール名/manifests/init.pp」はルールなので、別のファイル名にすることはできません。とり
あえず、先程作成した、 apache2 クラスの内容をこちらに移動させてみてください。
パッケージモジュールの内容を決める上では、次のことに注意するといいでしょう。
• パッケージ固有の内容に絞り、サイト固有の設定は可能な限り含めない
• 後で再利用できるようにパラメータを決める
4.7.2 サービスモジュール
パッケージモジュールを切り離した後は、ノード/サイト固有の設定が site.pp に残っている状態になっているはずで
す。そのうち、今作業しているノードだけでなく別のノードでも再利用しそうなロール (うちでは Web サーバはいつもこ
の設定で作るようにしてるんだ、とか) も、可能であればモジュールとして切り出しておきましょう。
puppet から見ると、用途に関係なくモジュールはモジュールなのですが、パッケージモジュールと区別するために、便
宜的にサービスモジュールと呼んでおきます。
puppet
の書式ガイドライン的には、モジュール名として頭に
s
をつける
ことになっています。
サービスモジュールはサイト固有の内容になりますので、パッケージモジュールほど境界を気にしなくてもいいで
しょう。
例えば、部分ミラーのロールを作るのであれば、
mkdir -p /etc/puppet/services/s_mirror/manifests
emacs /etc/puppet/services/s_mirror/manifests/init.pp
として、今回作成した reprepro の設定内容自体や、 apache2 のサイト設定などを放りこむところからはじめるといい
と思います。
4.8 ここからの育て方
ひとまず、今回のセッションで Debian アーカイブのローカルミラーがお手軽に作れるようになっているハズでので、
次のステップとして、
• reprepro の設定ファイル指定がダサすぎるのでなんとかする
• ローカルミラーを参照するように sources.list を設定する
• ローカルミラーに独自パッケージを追加できるように reprepro の設定を追加する
• 手動のままだった reprepro のコマンド実行をリソースに含める
• reprepro のコマンド実行を cron に登録してみる
• germinate を使って必要なパッケージを指定してミラーの対象にする
といった拡張からはじめていくと、とっかかりやすいのではないかと思います。公式のリファレンスを眺めながら頑張っ
てみましょう。
13