5

Ich migriere gerade eine Anwendung auf Google App Engine, die auf Umgebungsvariablen für verschiedene externe Verbindungen angewiesen ist. Es sieht so aus, als ob ich in der app.yaml-Datei diese Konfigurationen einrichten sollte, aber wie verwalte ich verschiedene Umgebungen (Entwicklung, Test, Bereitstellung, Produktion), in denen diese Variablen unterschiedlich sein können?App Engine: verschiedene app.yaml-Dateien basierend auf der Umgebung

Ist die einfachste Lösung, nur eine Verzweigung für jede dieser Umgebungen mit nur einer anderen app.yaml-Datei zu erstellen?

+1

Vielleicht besser, verschiedene Dateien zu haben, z.B. dev.yaml staging.yaml und so weiter. Dann können Sie den dev_server explizit mit diesen Dateien ausführen, und wenn Sie ihn bereitstellen, wird immer app.yaml verwendet. –

+0

@PaulCollingwood Gibt es einen Befehl mit einer bestimmten Konfigurationsdatei auszuführen? Das habe ich in der Dokumentation nicht gesehen. – jwarzech

+0

können Sie einfach dev_appserver somefile.yaml sagen und es wird es verwenden. sehr praktisch. aber nur lokal, nicht prod afaik. –

Antwort

6

app.yaml kann gesetzt Umgebungsvariablen für den Rest der Anwendung, aber es hat keine Möglichkeit, zu Check sie und verschiedene Dinge tun, je nach ihren eingehenden Werten. Daher müssen Sie verschiedene Dateien für alle von Ihnen verwendeten Bereitstellungsverfahren verwenden.

Für die beste Möglichkeit, das richtige app.yaml als vorbereitenden Schritt zur GAE-Bereitstellung vorzubereiten, das ist ein subtiler devops Problem. Verzweigungen in deinem git oder hg oder was auch immer, wie du erwähnst, würde funktionieren, aber persönlich (vielleicht nur Pech? -) Ich habe oft festgestellt, dass je einfacher meine Struktur, desto besser, und Zweige, die langlebig sein sollen (wie im Gegensatz zu vorübergehender Abweichung, die bald wieder in den Kofferraum zurückgeführt werden soll) haben mir die schlimmsten Kopfschmerzen bereitet.

So waren es an mir, ich habe eine preapp.yaml Vorlage (vielleicht jinja2, was auch immer) mit der benötigten if/else-Logik und bereiten das Recht app.yaml von ihm, als der erste Schritt von einem Einsatz haben würde, mit einem einfachen Python-Skript.

So ziemlich die Art der Architektur (für alle Arten von Konfigurationsdateien, und damit mit unvermeidlichen Komplikationen) für die derzeit-Beta gcloud preview deployment-manager, siehe https://cloud.google.com/deployment-manager/, so könnte ich natürlich auf den Ansatz (aber wie ich erwähnt meine Voreingenommenheit kommt im Wesentlichen aus früheren schlechten Deployment-Erfahrungen :-).

Verwandte Themen