Puppet-Ressourcenabhängigkeit

Puppet-Ressourcenabhängigkeit

Wenn ich „Puppet Apply“ ausführe, erhalte ich die folgende Fehlermeldung:

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.

Ich gebe an, dass loadyaml eine Funktion des stdlib-Moduls ist

Ich möchte jedoch die Dateiressource ausführen, bevor ich die Ressource definiere

Kann mir jemand helfen?

Klasse mod::princ (

    Datei { '/tmp/file.yaml':
        sicherstellen => Datei,
        Besitzer => 'root',
        Gruppe => 'Wurzel',
        Modus => '0644',
        Quelle => "puppet:///modules/othermod/file.yaml",
        vorher => Mod::Cl["Titel"],
    }->
    Mod::Cl{ "Titel" :
        tmp_file => "/tmp/datei.yaml",
    }

}

definiere mod::cl (
    Zeichenfolge $tmp_file,
){

    $tmp = loadyaml("$tmp_file")

    $tmp[var].each |Integer $i, Hash[Zeichenfolge,Zeichenfolge] $var|
    {
      $mark=$var['Markierung']
    }

}

Antwort1

Meiner Erfahrung nach funktionieren Dinge wie „before“/„require“ und sequencing(->) mit Puppet nicht besonders gut zusammen. Versuchen Sie, das Sequencing zu entfernen, da die Datei wahrscheinlich nicht erstellt wird …

Antwort2

Wie im Puppet-Funktionsaufruf angegebenReferenzseiteFunktionen werden zur Kompilierungszeit aufgerufen, daher spielt die Reihenfolge keine Rolle, die Funktion wird aufgerufen, bevor das Modul ausgeführt wird.

verwandte Informationen