2014-01-29 7 views
9

Ich habe eine pip style requirements.txt-Datei, die ich für die Verfolgung meiner Python-Abhängigkeiten verwende, ich verschiebe meine Entwicklungsumgebung auf vagrant + puppet. Bisher habe ich die pip-Anbieter in Puppen gebaut mit einzelnen Pakete zu installieren, wie folgt aus:pip install -r requirements.txt von der Puppe?

package { 
    ["django", "nose"]: 
     ensure => present, 
     provider => pip 
} 

Ist es möglich, in meinem requirements.txt statt passieren und haben Puppe die Pakete dem Laufenden halten, wenn diese Datei Änderungen?

Antwort

7

Ja, es ist möglich. Anstatt eine Paketressource zu definieren, definieren Sie stattdessen eine "exec" -Ressource, die die requirements.txt als Variable akzeptiert und den pip install-Befehl ausführt.

z.

class pip_install(
$path_requirements_file, 
){ 

    exec { "pip_requirements_install": 
    command  => "pip install -r ${path_requirements_file}", 
    refreshonly => true, 
    } 

} 
+0

können Sie ein Beispiel zum Aufruf dieses Befehls anzeigen? – Dannid

+0

Wie würdest du einen rspec-Test dafür schreiben? – sumid