В моем случае было полезно следующее: поскольку meta: end_play
, похоже, останавливает выполнение для всех хостов, а не только тот, который соответствует.
Сначала установите факт:
- name: Determine current version
become: yes
slurp:
src: /opt/app/CHECKSUM
register: version_check
ignore_errors: yes
- set_fact:
is_update_needed: "{{ ( version_check['checksum'] | b64decode != installer_file.stat.checksum) }}"
Теперь включите ту часть, которая должна выполняться только при этом условии:
# update-app.yml can be placed in the same role folder
- import_tasks: update-app.yml
when: is_update_needed
Я знаю, что не совсем понимаю вашу модель данных. Однако попробуйте заменить таблицы BOM и BomTable на производную таблицу, подобную этой, которая даст вам по одной строке для каждой записи Child с наибольшим значением Childrev без использования GROUP BY. [112 ]
SELECT *
FROM (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY Child ORDER BY Childrev DESC) AS ROW_NBR
FROM BOM
) AS x
WHERE x.ROW_NBR = 1;
Вот документация для OVER Clause .
Noel