Mit
»-l
«
aufgerufen, listet Fabric nur die definierten Tasks auf, was in vielen Anwendungsfällen genügt. Wer Wert auf bessere Dokumentation legt, kann mehr Informationen zu jedem Task in den typischen Python-Docstrings ablegen, die als Erstes nach der Funktions-Definition folgen und in drei Anführungszeichen eingeschlossen werden:
@task def complicated_steps(): """ This task does all of the complicated steps for us. """ run(...)
Jetzt listet
»fab -l
«
genauso den Task
»complicated_steps
«
auf, gibt aber dazu noch die Beschreibung aus.
Einige weitere Funktionen erlauben mehr Kontrolle über die Ausgabe, das
Listing 4
gibt dafür ein Beispiel. So färbt die Funktion
»green()
«
die Ausgabe grün, wie die Zeile 6 zeigt. In einem With-Block eingeschlossen, verhindert das folgende
»hide()
«
alle Meldungen des ausgeführten Befehls. Eine Zwischenmeldung wird mit
»red()
«
rot hervorgehoben, bevor ein weiterer Befehl wieder die Standard-Meldungen ausgibt.
Listing 4
Farbige Ausgabe
01 from fabric.api import * 02 from fabric.colors import green, red 03 04 @task 05 def colored_and_silent(): 06 print green("Running noisy command silently...") 07 with settings(hide('running', 'stdout', 'stderr')): 08 run('/path/to/noisy-command') 09 print red("Commands are noisy again") 10 run('/path/to/another-noisy-command')
Infos
Will man Anwendungen auf verschiedene Hosts verteilen und/oder entfernt Kommandos ausführen, bieten sich etliche mächtige Werkzeuge an, darunter etwa Chef, Puppet oder Cfengine. Ist deren Komplexität aber zu viel des Guten, dann geht es auch eine Nummer kleiner gut: Mit dem Python-Tool fabric .