2016-04-27 6 views
0

bewerten Ich versuche, nur eine Aufgabe ausführen, wenn einige Host var einen Wert größer als 0ansible 'wenn' nicht Host var

Host-Datei

--- 
os: 
    version_nr: 8 
    version_name: jessie 

dotdeb: 
    priority: 100 

task.yml

- name: setup dotdeb preferences 
    lineinfile: dest=/etc/apt/preferences 
        create=yes 
        line="{{ item }}" 
    with_items: 
       - "Package: *" 
       - "Pin: release o=packages.dotdeb.org" 
       - "Pin-Priority: {{ dotdeb.priority }}" 
    when: dotted.priority > 0 

Aber es scheint, dass Ansible nicht auf die Host-Variable für die 'Präferenz' Aufgabe zugreifen kann. ansible sagt:

Fehler während bedingte Auswertung: dotdeb.priority> 0

Ich habe versucht, andere zu zitieren, aber nichts scheint zu funktionieren. Die Host-Variablen funktionieren jedoch, weil 'os.version_name' in einer früheren Task ordnungsgemäß ersetzt wurde. Irgendwelche Vorschläge?

Prost Sebastian

+0

transkribiert Ihre Aufgabe bedingten falsch? Sie haben das als 'when: dotted.priority', aber Ihr Fehler besagt, dass es' dotdeb.priority' ist, das Sie überprüfen. Was sehen Sie, wenn Sie ein Debug für die Variable vor der Aufgabe ausführen? – ydaetskcoR

+0

Dies war nur ein Tippfehler bei stackoverflow, aber ich habe eine Lösung gefunden. – sfeldmann

+0

Was war Ihre Lösung? Wenn Sie denken, dass es für andere nützlich sein könnte, dann überlegen Sie, Ihre eigene Frage zu beantworten. – ydaetskcoR

Antwort

0

Es sieht aus wie es ein Problem mit den Variablen und dem Tag gleichnamigen ist.

änderte ich die var

dotdeb_repo: 
    priority: 0 

und die Aufgaben zu

- name: setup dotdeb preferences 
    lineinfile: dest=/etc/apt/preferences 
       create=yes 
       line="{{ item }}" 
    with_items: 
      - "Package: *" 
      - "Pin: release o=packages.dotdeb.org" 
      - "Pin-Priority: {{ dotdeb_repo.priority }}" 
    when: dotdeb_repo.priority > 0 

Jetzt funktioniert alles wie erwartet