PuppetでApacheを管理してみる part1

久々にpuppetの話題に戻りたいと思います。
数回に分けて、Apacheの構成管理をやって見たいと思います。
今日の記事は、構成管理の方針だけを取り上げます。

どうやって管理するか

自分の勉強環境で、Apacheの構成管理をやります。
勉強環境の構成はこちらの記事を参照してください。
こんなシステム構成で色々勉強していく - ressyのナレッジ的なブログ

今回は、この方針でApacheを構成管理します。

  • WEB01でApacheを運用
  • DBS01とMGS01では運用しない
  • WEB01で使うコンフィグ(httpd.confなど)はMasterサーバ(=MGS01)で管理
  • puppetのmodule機能を使用する

module機能

Puppetでは、マニフェストファイルを分割して管理するためにmodule機能を持っています。
構成管理の対象が増えると、/etc/puppet/manifests/site.ppだけで全て記載すると、マニフェストの改修がやりにくくなります。
こういった時に、module機能を使用して例えば機能単位(Apache用のmodule、mysql用のmoduleなど)でファイルを分割すれば、マニフェストの管理・改修がやりやすくなるわけです。

続いて、module機能を具体的にどうやって使用するかです。
moduleを格納するディレクトリは以下のコマンドで確認できます。

# puppet config print | grep basemodulepath
basemodulepath = /etc/puppet/modules:/usr/share/puppet/modules

上記の場合、/etc/puppet/modules/usr/share/puppet/modulesが該当します。
今回は、/etc/puppet/modulesに、Apacheのモジュールを作成します。
ディレクトリ名はhttpとします。

# mkdir /etc/puppet/modules/http

さらに以下のディレクトリを作成します。

# mkdir /etc/puppet/modules/http/manifests
# mkdir /etc/puppet/modules/http/templates
# mkdir /etc/puppet/modules/http/files
# mkdir /etc/puppet/modules/http/lib
# mkdir /etc/puppet/modules/http/tests
# mkdir /etc/puppet/modules/http/spec

ディレクトリは以下を格納します。

  • manifests:モジュールのマニフェストを格納
  • templates:moduleで必要なconfigファイルなどを格納
    • Apacheの場合、httpd.confなどがそう
    • filesとは違い、動的ファイル(変数などでconfigの内容も管理したい場合)に使用する
  • files:moduleで必要なconfigファイルなどを格納
    • Apacheの場合、httpd.confなどがそう
    • templatesとは違い、静的ファイル(不変な場合)に使用する
  • lib:カスタムfactsやカスタムリソース型などのプラグインを格納
    • 例えば、filepackageなどのリソースタイプを拡張した独自のリソース型を定義できる
  • tests:moduleのマニフェストの使い方を書いたドキュメントなどを格納
  • spec:rspec-puppetで書かれたテストファイルを格納

moduleのディレクトリ構成は基本的に決まってます。
こちらを参考にすると良いでしょう。

Modules and Classes ~ モジュールとクラス — Documentation — Puppet

とりあえず使うかもって思ったディレクトリだけを作成しました(結局使わないかもディレクトリがあるかも)。

今回はここまで。
説明だけだと、moduleについてあまりイメージがわかないと思います。
次回以降、実際の設定を取り上げるのでそれを見ながら理解するのが良いかと思います。

参考

この記事は、以下を参考にしています。

Modules and Classes ~ モジュールとクラス — Documentation — Puppet

私とPuppet 基本編 その2 (Module,File,Templates,Variable) - Qiita