Gibt es eine Möglichkeit, das aktuelle env programmatisch zu ändern, wenn Sie Fabric für die Bereitstellung verwenden?Fabric, Python - Ändern Sie env programmatisch
Was ich tun möchte, ist eine Aufgabe in allen meinen Umgebungen mit einem Anruf durchzuführen. Looping durch die Envs, und die gleiche Aufgabe aufrufen.
zum Beispiel:
def live():
env.host = ['123.123.123.123']
def dev():
env.host = ['321.321.321.321']
environments = ['live', 'dev']
def backup_db():
run('mysqldump etc ..' % env)
def backup_all_dbs():
for environment in environments:
env = new_env(environment)
backup_db
und dann laufen
fab backup_all_dbs
aber ich weiß nicht, wie die env on the fly instanziieren, und tatsächlich die aktuelle env um einen neuen ersetzen Code.
Ich denke nicht, nur die env Funktion z. B. dev() oder live() zu nennen, ist genug, da es andere Dinge im aktuellen env dict gibt, wenn Sie es inspizieren.
Ich kann nichts in den Dokumenten darüber sehen, vielleicht kann das env nur einmal von der Kommandozeile aus erstellt werden?
dank
HI - danke dafür. Ich habe bereits mehrere Hosts pro env eingerichtet. Aber das möchte ich nicht erreichen (oder das, was ich gefragt habe). Ich denke auch nicht, dass es unvernünftig ist, all Ihre Umgebungen zu bitten, dieselbe Aufgabe auf allen ihren Hosts auszuführen, zB ihre aktuelle DB zu sichern, wenn Sie das wollen. –
So funktioniert Fabric nicht: Sie "fragen" Ihre "Umgebungen" nicht, die gleiche Aufgabe auszuführen. Es gibt nur eine Umgebung und es ist ein globaler Wert. Sie haben auch gefragt, wie Sie dieselbe Aufgabe auf allen Hosts ausführen können - und genau das ist das Beispiel, das ich bereitgestellt habe. Hast du das obige Skript sogar ausgeführt, um seine Ausgabe zu sehen? – YellowShark
Nein, ich habe dein Beispiel nicht ausgeführt, weil ich sehen kann, was es ist und es ist nicht das, was ich frage. Wenn Sie die Antwort auf meine Frage nicht kennen, ist das völlig in Ordnung. Was ich frage, ist technisch sehr klar - können Sie den globalen Wert von 'env' während der Laufzeit programmatisch ändern? nur zum kichern. –