#linux #ansible
#linux #ansible
Вопрос:
Я вызываю все роли по порядку, и теперь мне нужно добавить проверку условий перед запуском других ролей,
Текущий main.yml
- hosts: all
gather_facts: no
roles:
- artifacts_copy
- app_build
- db_build
- log_build
artifacts_copy: копирует код
Можно ли добавить условие, если роль artifacts_copy изменилась, тогда запустите оставшиеся роли, иначе просто пропустите оставшиеся роли
something like this
roles:
- artifacts_copy
when: artifacts_copy.chnaged=true # then run below roles
- app_build
- db_build
- log_build
Комментарии:
1. Модуль может возвращать значение , например
changed
. Роль не может этого сделать. Используйтеinclude_role
илиimport_role
.
Ответ №1:
Я только что понял это, и это может помочь другим, поэтому публикую этот ответ
роли:
- artifacts_copy
- app_build
- db_build
- log_build
artifacts_copy: tasks/main.yml добавил установленный факт следующим образом
---
# tasks file for artifacts
- name: copy artifacts
copy:
src: files
dest: /root/mycode/
register: artifacts_copy_status
- set_fact:
artifacts_copy_status={{ artifacts_copy_status }}
затем я вызвал роль, как показано ниже
---
- hosts: all
gather_facts: no
roles:
- artifacts_copy
- role: app_build
when: artifacts_copy_status.changed | bool == true
- role: db_build
when: artifacts_copy_status.changed | bool == true
- role: log_build
when: artifacts_copy_status.changed | bool == true