2016-05-20 11 views
3

Ich benutze Puppet für meine Vagrant Provisioning. Früher habe ich bei https://forge.puppet.com/puppet/archive/types das Archiv-Modul zum Herunterladen und extrahieren Glasfischen wie folgt aus:Puppet-Datei-Ressource erfordert Archiv-Ressource

archive { '/tmp/glassfish-4.1.1.zip': 
    ensure  => present, 
    extract  => true, 
    extract_path => '/opt/', 
    source  => 'http://download.java.net/glassfish/4.1.1/release/glassfish-4.1.1.zip', 
    cleanup  => true, 
    creates  => '/opt/glassfish4', 
} 

Danach Ressource angewendet wird, möchte ich wie dieses

file { 'domain.xml': 
    ensure => file, 
    path => '/opt/glassfish4/glassfish/domains/domain1/config/domain.xml', 
    source => 'puppet:///modules/glassfish/domain.xml', 
} 

ich eine Datei in das neu erstellte Glasfischen Verzeichnis verschieben Ich möchte in der Datei move resource verlangen, dass die Extraktion bereits durchgeführt wurde, da die Extraktion keine Datei erstellt, sondern ein Verzeichnis. Etwas wie

require => FILE['..'] 

funktioniert nicht.

+0

Wenn Sie es mit einer 'File' Ressource machen könnten, wäre die Syntax' require => Datei ['/ full/path/to/managed/file'] ''. Beachten Sie die Groß- und Kleinschreibung, und Sie müssen auf die Ressource anhand ihres Namens oder Titels verweisen. Außerdem funktioniert das nur für Ressourcen, die eigentlich unter Puppet-Management stehen. Das könnte tatsächlich der Fall sein, aber da es nicht sicher ist, ist es eine viel bessere Herangehensweise, eine Beziehung mit der Ressource "Archiv" aufzubauen, wie Frédéric Henri vorgeschlagen hat. –

Antwort

5

Sie sollen ein require auf der Archiv-Aufgabe hinzufügen, so wird die Datei Aufgabe so etwas wie

file { 'domain.xml': 
    ensure => file, 
    path => '/opt/glassfish4/glassfish/domains/domain1/config/domain.xml', 
    source => 'puppet:///modules/glassfish/domain.xml', 
    require => Archive['/tmp/glassfish-4.1.1.zip'], 
    } 

so sein, dass die Kopie der Datei domain.xml nach dem Archiv Aufgabe erledigt wird.