Основная проблема заключалась в том, что сообщение об ошибке, возвращаемое из block
, состоит из набора массивов.Где каждый массив соответствует сообщению об ошибке этого выполнения.
Поэтому я не мог использовать in
, так как он искал точное значение соответствия для свойства, но свойство было вложено в массив.К счастью, в родительском объекте было еще одно логическое свойство, которое предоставило мне информацию, поэтому я использовал вместо нее ключ failed
.failed
имеет значение true, когда извлечение образа докера не удалось.
- block:
- name: Pull an image
docker_image:
name: repository:stable
with_list: "{{ repositories }}"
loop_control:
loop_var: repository
rescue:
- name: Pull latest-dev image
docker_image:
name: repository:latest
when: ansible_failed_result.failed
with_list: "{{ repositories }}"
loop_control:
loop_var: repository
Основная строка - ansible_failed_result.failed
, которая относится к элементу в dict, который имеет Failed: true
.