Question:
I want to evaluate multiple condition in ansible using when, here is my playbook:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
- name: Check that the SSH Key exists local_action: module: stat path: "/home/{{ login_user.stdout }}/{{ ssh_key_location }}" register: sshkey_result - name: Generating a new SSH key for the current user it's not exists already local_action: module: user name: "{{ login_user.stdout }}" generate_ssh_key: yes ssh_key_bits: 2048 when: sshkey_result.rc == 1 and ( github_username is undefined or github_username |lower == 'none' ) |
here is my var file for reference:
1 2 3 4 5 |
--- vpc_region: eu-west-1 key_name: my_github_key ssh_key_location: .ssh/id_rsa.pub |
When I try to execute this playbook, I am getting this error:
1 2 3 4 5 6 7 8 |
TASK: [test | Check that the SSH Key exists] ********************************** ok: [localhost -> 127.0.0.1] TASK: [test | Generating a new SSH key for the current user it's not exists already] *** fatal: [localhost] => error while evaluating conditional: sshkey_result.rc == 1 and ( github_username is undefined or github_username |lower == 'none' ) FATAL: all hosts have already failed -- aborting |
Can somebody point me out that how we can use multiple conditions with ansible on single task.
Thanks
Answer:
You can use like this.
1 2 |
when: condition1 == "condition1" or condition2 == "condition2" |
Link to official docs: The When Statement.
Also Please refer to this gist:
https://gist.github.com/marcusphi/6791404