
puppet apply を実行すると、次のエラーが発生します:
Warning: Scope(Mod::Cl[title]): Can't load '/tmp/file.yaml' File does not exist!
Error: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Operator '[]' is not applicable to an Undef Value.
loadyamlはstdlibモジュールの関数であることを指定します
しかし、リソースを定義する前にファイルリソースを実行したい
誰か助けてくれませんか?
クラス mod::princ ( ファイル { '/tmp/file.yaml': 確認 => ファイル、 所有者 => 'root'、 グループ => 'ルート'、 モード => '0644'、 ソース => "puppet:///modules/othermod/file.yaml", 以前 => Mod::Cl["title"], }-> Mod::Cl{ "タイトル" : tmp_file => "/tmp/file.yaml", } } mod::clを定義する( 文字列 $tmp_file, ){ $tmp = loadyaml("$tmp_file") $tmp[var].each |整数$i、ハッシュ[文字列、文字列]$var| { $mark=$var['マーク'] } }
答え1
私の Puppet の経験では、「before」/「require」とシーケンス (->) は、一緒に使用するとあまりうまく機能しません。ファイルが作成されていない可能性が高いので、シーケンスを削除してみてください...
答え2
パペット関数呼び出しで指定されたとおり参照ページ関数はコンパイル時に呼び出されるため、順序は関係なく、モジュールが実行される前に関数が呼び出されます。