Я хотел бы развернуть в разные каталоги в зависимости от флага.
Я видел там было --extra-vars
который позволяет передавать переменную,
так скажем, --extra-vars "flag=test"
или --extra-vars "flag=prod"
Теперь я хотел бы использовать переменные test_ * или prod_ *, в зависимости от этого флага.
vars:
test_dirs: ["/dataVolumes/dev/deployments/", "/dataVolumes/qa/deployments/"]
prod_dirs: ["/dataVolumes/preprod/deployments/", "/dataVolumes/prod/deployments/"]
Допустим, есть два шага: удаление старых файлов и копирование новых файлов.
Есть ли способ сделать что-то вроде следующего?
-
name: delete old files
file:
state:absent
path:"{{item}}"
with_items: "{{ test_dirs if flag == 'test' else prod_dirs }}"
-
name: copy new files
copy:
src: /opt/ansible/
dest:"{{item}}"
with_items: "{{ test_dirs if flag == 'test' else prod_dirs }}"
Например, условный оператор, чтобы выбрать между двумя списками для работы?
Вы можете добиться этого, добавив include_vars задача в начале вашей игры. В качестве переменных, установленных include_vars
иметь высокий приоритет они должны исключить переменные, установленные где-либо еще.
Итак, все, что вам нужно сделать, это добавить что-то вроде этого в начале вашей игры:
- name: Include test vars.
include_vars:
file: test.yml
when: test == True
тогда значение переменной test должно быть логическим.
Однако, как уже указывалось, используя group_vars
вероятно, было бы более чистым решением.