Ansible не имеют простой конструкции if-else и будут регистрировать переменную, даже если задача будет пропущена. Лучше всего использовать две разные переменные для проверки существования каждого файла, а затем записать третье условие, как это необходимо.
- name: Check if thetest.log exists in path
stat:
path: "{{ ansible_env.APP }}/thetest.log"
register: log_result_1
- name: Check if TheTest.log exists in p_home
stat:
path: "{{ ansible_env.APP }}/TheTest.log"
register: log_result_2
when: name_var.stdout is match("foo")
- name: Create temporary log folder
file:
path: "{{ ansible_env.APP }}/log_tmp"
state: directory
when: log_result_1.stat.exists or (log_result_2 is not skipped and log_result_2.stat.exists)
Пожалуйста, проверьте документацию здесь,
ОБНОВЛЕНИЕ
Еще один способ проверить оба файла в одной задаче, а затем собрать результат в одной переменной, используя set_fact
- name: Check multiple file stat
stat:
path: "{{ item }}"
loop:
- "{{ ansible_env.APP }}/thetest.log"
- "{{ ansible_env.APP }}/TheTest.log"
register: file_stats
- set_fact:
result: "{{ file_stats.results[0].stat.exists or file_stats.results[1].stat.exists }}"
- debug:
var: result