Python YAML-Konfiguration mit Analyse von Umgebungsvariablen

Laden Sie eine YAML-Konfigurationsdatei und lösen Sie alle Umgebungsvariablen auf

Wenn Sie mit Python-Projekten gearbeitet haben, sind Sie wahrscheinlich auf die vielen Möglichkeiten gestoßen, die Konfiguration bereitzustellen. Ich werde hier nicht alle Wege gehen, aber einige davon sind:

  • Verwenden von INI-Dateien
  • mit einer Python-Klasse
  • Verwenden von .env-Dateien
  • Verwenden von JSON- oder XML-Dateien
  • mit einer Yaml-Datei

Ich bevorzuge die Arbeit mit der Yaml-Konfiguration, da ich diese normalerweise sehr praktisch und einfach zu verwenden finde und es mir sehr gefällt, dass Yaml-Dateien auch in der Docker-Compose-Konfiguration verwendet werden, so dass die meisten damit vertraut sind.

Für das Yaml-Parsing verwende ich die PyYAML Python-Bibliothek.

In diesem Artikel werden wir über den Fall der Yaml-Datei sprechen und genauer darüber, was Sie tun können, um zu vermeiden, dass Ihre Geheimnisse, z. B. Passwörter, Hosts, Benutzernamen usw., direkt darauf gespeichert werden .

Angenommen, wir haben ein sehr einfaches Beispiel für eine Yaml-Dateikonfiguration:

database:
 name: database_name
 user: me
 password: very_secret_and_complex
 host: localhost
 port: 5432
ws:
 user: username
 password: very_secret_and_complex_too
 host: localhost

Damit PyYAML Umgebungsvariablen auflösen kann, benötigen wir drei wichtige Dinge:

  • Ein Regex-Muster für die Identifizierung von Umgebungsvariablen, z pattern = re.compile(‘.*?\${(\w+)}.*?’)
  • Ein Tag, das angibt, dass eine Umgebungsvariable (oder mehr) analysiert werden muss, z !ENV.
  • Und eine Funktion, mit der der Loader die Umgebungsvariablen auflöst

Beispiel einer YAML-Konfiguration mit Umgebungsvariablen:

database:
 name: database_name
 user: !ENV ${DB_USER}
 password: !ENV ${DB_PASS}
 host: !ENV ${DB_HOST}
 port: 5432
ws:
 user: !ENV ${WS_USER}
 password: !ENV ${WS_PASS}
 host: !ENV ‘https://${CURR_ENV}.ws.com.local'

ws:
 user: !ENV ${WS_USER}
 password: !ENV ${WS_PASS}
 host: !ENV 'https://${CURR_ENV}.ws.com.${MODE}'  # multiple env var

Stellen Sie zuerst die Umgebungsvariablen ein. Zum Beispiel für DB_PASS:

export DB_PASS=very_secret_and_complex

read -s ‘Database password: ‘ db_pass
export DB_PASS=$db_pass
    
      

python use_env_variables_in_config_example.py -c /path/to/yaml

Und machen Sie in Ihrem Code Dinge mit conf, z. B. greifen Sie wie folgt auf das Datenbankkennwort zu: conf['database']['DB_PASS']

Ich hoffe das war hilfreich. Alle Gedanken, Fragen, Korrekturen und Vorschläge sind sehr willkommen :)

Nützliche Links

Suggested posts

So führen Sie ChatGPT-Plugins kostenlos mit Langchain aus

So führen Sie ChatGPT-Plugins kostenlos mit Langchain aus

Sie haben sicher schon von allen neuen leistungsstarken ChatGPT-Plugins wie Browser, Code Interpreter usw. gehört. Es gibt jedoch ein Problem: Der Zugriff auf Plugins ist auf eine Warteliste beschränkt und viele haben daher keinen Zugriff darauf.

Meine am häufigsten verwendeten Codierungsressourcen

Meine am häufigsten verwendeten Codierungsressourcen

Diese Woche erhielt ich eine E-Mail von einem Mitglied der täglichen E-Mail-Liste. Sie wollten wissen: Welche Ressourcen besuchen Sie täglich, wöchentlich und monatlich? Tolle Frage! Ich versuche gerne, einige Einblicke in meinen Arbeitsablauf und die wichtigsten Ressourcen, die ich verwende, mit Ihnen zu teilen.

Related posts

Informationen zu Domänennamen finden

Ein Auszug aus Small, Sharp Software Tools von Brian P. Hogan

Informationen zu Domänennamen finden

Wenn Sie eine Anfrage an facebook.com stellen, sucht Ihr Computer nach dem Domänennamen, um diesen in eine IP-Adresse zu übersetzen, damit Ihr Computer diese Verbindung herstellen kann.

Zwei Jahre im Design – Das Gute, das Schlechte und das Hässliche…

Zwei Jahre im Design – Das Gute, das Schlechte und das Hässliche…

„Hey Siri, spiel Me Dive von Olivia Dean.“ Es war Mai 2021, als ich mein Praktikum bei der Future Academy Africa in Akure, Nigeria, begann.

Warum manche Freiberufler ihr Leben vortäuschen

Warum manche Freiberufler ihr Leben vortäuschen

Ich war kürzlich auf Linkedin, dem weltweit größten professionellen sozialen Netzwerk, und habe Beiträge von freiberuflichen Designern gefunden, denen ich folge und die meine Aufmerksamkeit erregt haben. Sie alle haben Fotos aus Flugzeugen, am Strand mit ihren Laptops, aus Schwimmbädern und Büros mit atemberaubender Aussicht gepostet.

Was macht einen Podcast einflussreich?

Was macht einen Podcast einflussreich?

Letzte Woche fiel mir eine Pressemitteilung auf, die über PressGazette (eine britische Nachrichten-Website für Medien) verschickt wurde. In dem Artikel wurde angekündigt, dass Acast, das skandinavische Podcast-Hosting- und Werbeunternehmen, ein Konsortium der „wahrscheinlich einflussreichsten“ Verlage im Podcasting leiten werde.