Ich möchte Fabric verwenden, um meinen Web-App-Code auf Entwicklungs-, Staging- und Produktionsservern bereitzustellen. Mein Fabfile:
def deploy_2_dev():
deploy('dev')
def deploy_2_staging():
deploy('staging')
def deploy_2_prod():
deploy('prod')
def deploy(server):
print 'env.hosts:', env.hosts
env.hosts = [server]
print 'env.hosts:', env.hosts
Beispielausgabe:
host:folder user$ fab deploy_2_dev
env.hosts: []
env.hosts: ['dev']
No hosts found. Please specify (single) host string for connection:
Wenn ich eine set_hosts()
Aufgabe erstelle, wie in den Fabric-Dokumenten gezeigt , ist env.hosts richtig eingestellt. Dies ist jedoch keine praktikable Option, ebenso wenig wie ein Dekorateur. Das Übergeben von Hosts über die Befehlszeile würde letztendlich zu einer Art Shell-Skript führen, das die Fabfile aufruft. Ich würde es vorziehen, wenn ein einziges Tool die Aufgabe ordnungsgemäß erledigt.
In den Fabric-Dokumenten heißt es, dass 'env.hosts einfach ein Python-Listenobjekt ist'. Nach meinen Beobachtungen ist dies einfach nicht wahr.
Kann jemand erklären, was hier los ist? Wie kann ich den Host für die Bereitstellung festlegen?