manifestのTIPS1.manifestへのパラメータ受け渡し3ページの「2.manifestを作成」のセクションでも述べたが、manifest内で使用するパラメータ変数の引き渡しは、manifestのclass呼び出し時の引数で設定される。"FX702PFX801PPB100FX860PPB700PB500PB750PAI1000",}パラメータのデフォルト値はparams.ppファイルに定義しておく。{}manifest実行時に最初に処理されるinit.ppで、まず変数にparams.ppのデフォルト値が設定される。クラス呼び出し時に設定された引数が存在した場合、その値で上書きする。これにより、引数に設定されなかった変数はデフォルト値が使用されることとなる。その設定されたパラメータ値を、実際にインストール・設定を行う各クラスに継承する。Documentationに記載されているので、こちらも参照いただきたい。(1)yumコマンドでのパッケージの制御yumコマンドでのパッケージのインストールはpackageリソースを使用する。複数のパッケージをインストールする場合は、パッケージ名を[]内に記載することで再帰的に処理が実行される。パッケージが1個の場合は[]は不要である。7.2の場合、systemctlコマンド)の実行はserviceリソースで行う。下記の例ではサービスの起動とenableを設定している。}(3)node上でのコマンドを実行manifest内で任意のコマンドを実行する方法として、execリソースが提供されている。{}」で、execコマンドで共通に使用できるパラメータを定義できる。=>」の後ろの”〜”,内に記載する。行末に";"を付与することで複数行に記載することもできる。設定ファイルなどを新規に作成する場合、fileリソースのtemplateパラメータを使用する。以下のようなtemplateファイルを作成する。上位のmanifestから変数を受け取る場合、と記載しておくと、ファイル生成時にその部分が呼び出し元のmanifestの変数の値で置換される。</Files></VirtualHost>templateファイルはmanifest内から以下のように呼び出される。)」である点は注意が必要だ。moduleフォルダ外を参照する場合は、フルパスを指定することでも対応できる。再実行時の設定処理の実行要否の判定のために、onlyifのパラメータが提供されている。onlyifの条件式は、[]を使用することで複数条件も指定できる。複数条件の場合、条件間はand条件で処理され、全ての条件がtureの場合のみ、処理が実行されることになる。}onlyifパラメータはexecコマンド以外では使用できない。その他のコマンドでは、設定条件やファイルの日付、サイズ、チェックサムなどの値をpuppetのフォルダ内に保持しており、実行時に処理要否を判定している。そのため、manifest内には実行要否の判定処理を記述する必要があまりなくなっている。ファイルをバックアップし、編集を行う処理を行っていると、バックアップ元のファイルが更新されるため、バックアップの処理が再実行される(=編集済みファイルで上書きされる)状態になってしまう。それを回避する手段が以下である。'no'を設定することで、初回に生成されたファイルが存在すれば上書きされなくなる。(6)ファイルの文字列置換ファイル内の文字列の置換の機能として、file_lineリソースが提供されている。対象ファイルの行単位の追加、削除、置換に対応している。文字列の部分的な置換に対応していないため、使える場所は若干限定される。前述の通り、ファイル書き換え要否の判定がpuppetで詳細に行われるため、使える場所であれば積極的に使っていきたい。}(7)MySQL設定用のモジュールpuppetは各プロダクトのmanifestをモジュールとしてダウンロードして使用する機能を提供している。puppetserverをインストールしたサーバで、以下のコマンドを実行すると検索条件に一致したモジュールを参照できる。Labs公式のモジュールを使用している。公式なサンプルであり、かつMariaDBにも対応していることからこのモジュールを選定した。モジュールを使用することで、非常に簡単にMariaDBの設定を行える。以下のクラスを呼び出すだけで、使用しているOSのディストリビューション、バージョンを判定し、MariaDB(もしくはMySQL)のインストール、設定、起動、/root/.my.cnfファイルの作成まで行ってくれる。}(8)処理の順序、依存関係の定義Puppetでは、manifest中の処理を解析して処理順序を制御している。そのため、記述した順番通りには処理されないことから、依存関係のある処理では問題が発生する可能性がある。これを受けて、処理順序や依存関係を制御する機能が提供されている。順序の依存関係の定義の例は以下の通り。tarファイルが解凍されないと、編集対象のファイルが存在しないため、エラーになってしまう。付与することで設定できる。}パッケージのインストールの有無の依存関係の定義の例は以下の通り。Apache2(httpd)がインストールされていないと、"/etc/httpd/conf.d/"フォルダが存在しないため、ファイルを作成できない。設定することで、Apache2のインストール後に処理が行われるようになる。}他にも、mysql_database/mysql_user/mysql_grantなどの機能が提供されている。puppetlabs-mysql上のREADMEに記載されている。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。