パペットのリソース依存性

パペットのリソース依存性

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

パペット関数呼び出しで指定されたとおり参照ページ関数はコンパイル時に呼び出されるため、順序は関係なく、モジュールが実行される前に関数が呼び出されます。

関連情報