
Cuando aplico la marioneta, aparece el error:
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.
Especifico que loadyaml es una función del módulo stdlib
Sin embargo, quiero ejecutar el recurso del archivo antes de definir el recurso.
Puede ayudarme alguien ?
clase mod::princ ( archivo { '/tmp/file.yaml': asegurar => archivo, propietario => 'raíz', grupo => 'raíz', modo => '0644', fuente => "puppet:///modules/othermod/file.yaml", antes => Mod::Cl["título"], }-> Mod::Cl{ "título" : tmp_file => "/tmp/file.yaml", } } definir mod::cl ( Cadena $tmp_file, ){ $tmp = loadyaml("$tmp_file") $tmp[var].cada |Entero $i, Hash[String,String] $var| { $marca=$var['Marca'] } }
Respuesta1
Según mi experiencia con títeres, cosas como "antes"/"requerir" y secuenciación (->) no funcionan muy bien juntas. Intente eliminar la secuenciación ya que probablemente el archivo no se esté creando...
Respuesta2
Como se especifica en la llamada a la función de marionetapágina de referencia, las funciones se llaman en el momento de la compilación, por lo que no importa cuál sea el orden, la función se llamará antes de que se ejecute el módulo.