Da minha experiência com coisas fantoches como "antes" / "exigem" e o sequenciamento (- >) não funciona muito bem em conjunto. Tente remover o sequenciamento, pois provavelmente o arquivo não está sendo criado ...
Olá a todos,
Quando faço uma marionete, recebo o erro:
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.
Eu especifico que loadyaml é uma função do módulo stdlib
No entanto, quero executar o recurso de arquivo antes de definir recurso
Alguém pode me ajudar?
class mod::princ ( file { '/tmp/file.yaml': ensure => file, owner => 'root', group => 'root', mode => '0644', source => "puppet:///modules/othermod/file.yaml", before => Mod::Cl["title"], }-> Mod::Cl{ "title" : tmp_file => "/tmp/file.yaml", } } define mod::cl ( String $tmp_file, ){ $tmp = loadyaml("$tmp_file") $tmp[var].each |Integer $i, Hash[String,String] $var| { $mark=$var['Mark'] } }
Da minha experiência com coisas fantoches como "antes" / "exigem" e o sequenciamento (- >) não funciona muito bem em conjunto. Tente remover o sequenciamento, pois provavelmente o arquivo não está sendo criado ...
Conforme especificado na função de fantoches, chame página de referência , as funções são chamadas em tempo de compilação, por isso não Não importa qual seja a ordem, a função será chamada antes que o módulo seja executado.