2016-07-26 16 views
0

Ich möchtewie ist mein ansible condtional gebrochen? Warum funktionieren beide Debug-Anweisungen?

Die „Passwort-Generierung“ Schritt ausführen, um nur, wenn die {{mysql.password}} var ist nicht gleich „random“

Die „Debug-Passwort-Generierung“ Schritt nur ausgeführt werden, wenn Die Passwortgenerierung wurde ausgeführt.

Der "debug Passwort gesetzt wird" Schritt nur ausgeführt werden, wenn das Passwort Erzeugungsschritt

wurde übersprungen Was

Alle Schritte geschieht ausgeführt werden

Meine Dateien

playbook.yml

# tasks file for git_deployment 
- name: Generate DB login_password 
    shell: mkpasswd.pl --length=32 
    args: 
    creates: /tmp/.dbpwd 
    register: dbpwd 
    when: mysql.password != "random" 

- name: debug password genreation 
    debug: var=dbpwd 
    when: dbpwd is defined 
- name: debug password being set 
    debug: var=mysql 
    when: { mysql.password != "random" } 

- name: create database 
    mysql_db: 
    name: "{{ mysql.db }}" 
    state: present 

betonte textrole-tasks.yml

# tasks file for git_deployment 
- name: Generate DB login_password 
    shell: mkpasswd.pl --length=32 
    args: 
    creates: /tmp/.dbpwd 
    register: dbpwd 
    when: mysql.password != "random" 

- name: debug password genreation 
    debug: var=dbpwd 
    when: dbpwd is defined 
- name: debug password being set 
    debug: var=mysql 
    when: { mysql.password != "random" } 

- name: create database 
    mysql_db: 
    name: "{{ mysql.db }}" 
    state: present 

Antwort

0

Durch einige der bedingten Ausdrücke in einzelnen Klammern umschließen, sind Sie sie in einem Wörterbuch Einwickeln, die True nötigt. Befreien Sie sich von den einzelnen Klammern - when: erwartet einen rohen Jinja2-Ausdruck, keine Vorlage (die ohnehin doppelt geschweift wäre).