Я полагаю, что when
условия связаны с задачей, и поэтому вы не можете иметь разные условия для разных циклов в одной и той же задаче (рад, что вы исправлены здесь).
Это оставляет вам пару вариантов:
- Разделите это на несколько
lineinfile
задач, которые, как вам кажется, следует избегать. - Используйте модуль
set_fact
. Не обязательно лучше, но круто знать.
Пример второго варианта:
- name: set database type for mysql deployment
set_fact:
_db_type: mysql
when: mysql.stat.exists
- name: set database type for oracle deployment
set_fact:
_db_type: oracle
when: oracle.stat.exists
- name: something something
lineinfile:
path: '/somefile.conf'
regexp: '^DB_TYPE='
line: "DB_TYPE={{ _db_type }}"
Я считаю это полезным, если вам нужно несколько задач сослаться на mysql или oracle (в качестве примера).