次のページへChefのcookbookのTIPS1.recipeへのパラメータの受け渡し(1)node定義ファイル(./chef-repo/node/[hostname].json)から取得する方法node定義ファイル内で定義されたパラメータをrecipe内で取得することが可能となる。}}上記のように、定義を行うとrecipe内でnode[]の処理でjson形式のデータの取得が行える。node['wordpress']['wordpress_latest'](2)defaultパラメータ定義ファイル(./chef-repo/site-cookbooks/wordpress_sample/attributes/default.rb)から取得する方法defaultパラメータ定義ファイルに以下のように記述しておくと、node定義ファイルにパラメータ設定がなかった場合に設定値が補完される。補完する処理についてはrecipeに記述する必要はないが、node[]と[]の部分は統一しておくことが必須となる。CHEFに詳しく記載されているので、こちらを参照いただきたい。(1)yumコマンドでのパッケージの制御yumコマンドでのパッケージのインストールはyum_pakageリソースを利用する。recipe内では複数のパッケージをインストールするために、[]内にスペース区切りで記述している。:installend1個のパッケージの場合は[]はなくても動作する。install以外にupdata/removeなども設定することができる。-y”を実行する形を採っている。7.2の場合、systemctlコマンド)の実行はserviceリソース(https://docs.chef.io/resources.html#service)で行う。下記の例ではstart実行後にenableを設定している。:enable]endrecipeの中で同一サービスのserviceリソースを複数回記述すると、実行前のチェック処理でエラーとなってしまう。mariadbを呼び出す形で対処している。(3)node上でのコマンドを実行recipe内でnode側で任意のコマンドを実行させることが可能である。リソースは以下の2種類が提供されている。node上での単純なコマンドの実行bashcodeのパラメータに指定されたコマンドをbashコマンドで実行する。codeのパラメータをいったん、/tmp以下の一時ファイルに作成するため、シェルスクリプトの制御処理を記述することもできる。処理制御やnode側の環境変数が必要な一時シェルスクリプトの実行executeもbashも基本的な書式は同じである。commandやcodeの後ろにコマンドを記述する。コマンドが単一行の場合は"〜"または'〜'でくくる。複数行の場合は<<-文字列(EOC)〜文字列(EOC)の間の部分が1回のコマンドとして解釈されるので、<<-文字列(EOC)〜文字列(EOC)でくくるといいだろう(単一行でも使える)。設定ファイルなどを新規に作成する場合、fileリソースを使用する。contextパラメータにファイルの内容を直接記載することも可能だが、ファイルの内容全部をrecipeに記載するのは、保守性の面でも可視性の面でも、やや問題がある。その対策としてtemplateリソースを利用して作成する方法が提供されている。このrecipeでは/root/.my.cnfをmy.cnf.erbというtemplateファイルから作成する処理を記載している。name]/template直下のファイルが参照される。}endrecipeのvariablesで設定されたパラメータをtemplateの変数と置換することができる。変数はで記載する必要がある。このの前後を'〜'でくくると変換が行われないので、"〜"を使用する必要がある。再実行時の設定処理の実行要否の判定にはonly_if/not_ifのパラメータが準備されており、ほぼ全てのリソースで利用できる。"条件式"は条件式が“false”の場合に、not_ifの場合は逆に“true”の場合に処理が実行される。主な判定方法は「ファイルが存在するか?」と「検索をした結果が存在するか?」で行われる。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。