当我执行木偶应用时,出现错误:
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': 确保=>文件, 所有者 => '根', 组 => '根', 模式=>“0644”, 源=>“puppet:///modules/othermod/file.yaml”, 之前 => Mod::Cl["标题"], }-> Mod::Cl{ “标题” : tmp_file =>“/tmp/file.yaml”, } } 定义 mod::cl ( 字符串 $tmp_file, ){ $tmp = loadyaml("$tmp_file") $tmp[var].each |整数 $i,哈希[字符串,字符串] $var| { $mark=$var['标记'] } }
答案1
根据我对木偶的经验,“之前”/“需要”和排序(->)之类的东西不能很好地协同工作。尝试删除排序,因为可能没有创建文件......
答案2
正如傀儡函数调用中所指定的参考页,函数在编译时调用,因此无论顺序如何,函数都会在模块执行之前调用。