Question:
That is to say: How to evaluate the password lookup only once?
1 2 3 4 5 6 7 8 9 10 11 12 13 |
- name: Demo hosts: localhost gather_facts: False vars: my_pass: "{{ lookup('password', '/dev/null length=15 chars=ascii_letters') }}" tasks: - debug: msg: "{{ my_pass }}" - debug: msg: "{{ my_pass }}" - debug: msg: "{{ my_pass }}" |
each debug statement will print out a different value, e.g:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
PLAY [Demo] ************* TASK [debug] ************ ok: [localhost] => { "msg": "ZfyzacMsqZaYqwW" } TASK [debug] ************ ok: [localhost] => { "msg": "mKcfRedImqxgXnE" } TASK [debug] ************ ok: [localhost] => { "msg": "POpqMQoJWTiDpEW" } PLAY RECAP ************ localhost : ok=3 changed=0 unreachable=0 failed=0 |
ansible 2.3.2.0
Answer:
Use set_fact
to assign permanent fact:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
- name: Demo hosts: localhost gather_facts: False vars: pwd_alias: "{{ lookup('password', '/dev/null length=15 chars=ascii_letters') }}" tasks: - set_fact: my_pass: "{{ pwd_alias }}" - debug: msg: "{{ my_pass }}" - debug: msg: "{{ my_pass }}" - debug: msg: "{{ my_pass }}" |