Ansible: How do I avoid registering a variable when a "when" condition is *not* met? -


i have following ansible playbook code:

- name: users | generate password user (debian/ubuntu)   shell: makepasswd --chars=20   register: make_password   when: ansible_distribution in ['debian', 'ubuntu']  - name: users | generate password user (fedora)   shell: makepasswd -m 20 -m 20   register: make_password   when: ansible_distribution in ['fedora', 'amazon']  - name: users | generate password user (centos)   shell: mkpasswd -l 20   register: make_password   when: ansible_distribution in ['centos']  - name: debug   debug: var=make_password 

which outputs:

task: [users | debug]  ok: [127.0.0.1] => {                      "var": {                        "make_password": {                          "changed": false,                          "skipped": true                        }                      }                    } 

... because every register block gets executed regardless of when condition.

how fix make_password doesn't overwritten when when condition isn't met?

or if wrong approach can see i'm trying accomplish, let me know of better one.

unfortunately, expected behavior. ansible variables

note if task fails or skipped, variable still registered failure or skipped status, way avoid registering variable using tags.

i not know how use tags solve issue.

edit: found way albeit crude solution. store results not overwritten

  - set_fact: mypwd="{{make_password}}"     when: make_password.changed 

so code like:

- name: users | generate password user (debian/ubuntu)   shell: makepasswd --chars=20   register: make_password   when: ansible_distribution in ['debian', 'ubuntu']  - set_fact: mypwd="{{make_password}}"   when: make_password.changed  - name: users | generate password user (fedora)   shell: makepasswd -m 20 -m 20   register: make_password   when: ansible_distribution in ['fedora', 'amazon']  - set_fact: mypwd="{{make_password}}"   when: make_password.changed  - name: users | generate password user (centos)   shell: mkpasswd -l 20   register: make_password   when: ansible_distribution in ['centos']  - set_fact: mypwd="{{make_password}}"   when: make_password.changed  - name: debug   debug: var=mypwd 

Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -