2016-11-01 2 views
0

Ich suche den Wert einer Variablen zu parametrieren - wie http_proxy im Beispiel unten:parametrieren YAML Datei

parameters: 
    - string: 
     name: http_proxy 
     default: 'http://myproxy.company.com' 

Ich habe zwei Fragen:

(1) Wie kann ich „parametrieren“ die Standardwert ('http://myproxy.company.com')? Ich nehme an, es kann wie geschehen:

default: %proxy_url% 

(2), wenn die oben richtig ist, kann ich es nur in einer „Eigenschaft“ (oder gleichwertig) einrichten Datei? Wenn ja, wie konfiguriere ich es, damit meine YAML-Datei in der Datei "properties" in der Datei proxy_url gelesen wird? Danke.

+0

Was liest Ihre YAML-Datei? YAML selbst kann nicht magisch parametrisiert werden, wie Sie beschreiben, es hängt alles davon ab, was die YAML verarbeitet. Wenn Sie es mit Ihrem eigenen Python-Code lesen, ist es Ihre Aufgabe, im Dokument nach Variablen wie '% proxy_url%' zu suchen und die entsprechende Ersetzung durchzuführen. – larsks

Antwort

1

Im einfachen YAML ist dies nicht möglich.

Sie haben folgende Möglichkeiten:

  • Bearbeiten Sie Ihre YAML-Parser die %proxy_url% zu erkennen und füllen es
  • die Datei lesen, die %proxy_url% mit der gewünschten URL ersetzen und dann das Ergebnis an den Parser geben
  • Verwenden YAMLs node anchors

die ersten beiden Lösungen funktionieren, und wenn Sie können nicht (oder nicht) speichern Sie die proxy_url Innerhalb der YAML-Datei können Sie diese nicht umgehen.

Aber Wenn Sie können es in der YAML-Datei speichern, verwenden Sie Knotenanker - weil sie toll sind!

Ich gebe Ihnen ein sehr einfaches Beispiel:

defaults: 
    proxy_url: &anchor_proxy_url http://myproxy.company.com 
server: 
    [... i don`t know how your file looks so just an example here] 
    parameters: 
    - string: 
    name: http_proxy 
    default: *anchor_proxy_url 

Randbemerkung: Wenn Sie die - string:, um anzuzeigen, verwenden möchten, dass der folgende Eintrag von Art string ist, ich werde Sie empfehlen YAML tags zu verwenden - Weil sie auch großartig sind.

+0

Danke Mijago. Ich frage mich, ob wir das mit Shell-Skripten statt mit Python machen können. Aber ich werde eine neue Frage stellen und diese schließen. – punsoca