dependencia de recursos títeres

dependencia de recursos títeres

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.

información relacionada