У меня есть определение доступной переменной, и мне было интересно, могу ли я получить значение переменных на основе переменной, определенной во время выполнения
vars:
test:
user: ""
dirs:
base: ""
logs: ""
libs: ""
region:
- name: debug
debug:
msg: "{{ newvar }}"
ansible-playbook playbook.yml -e "newvar=test"
выполнение вышеуказанного должно напечатать все значения, определенные в переменной test.
Я бы использовал ассоциативный массив в yaml.
playbook.yml
- hosts: localhost
gather_facts: false
vars:
my_environments:
test:
user: "user_test"
dirs:
base: "/x"
logs: "/y"
libs: "/z"
region:
prod:
user: "user_prod"
dirs:
base: "/a"
logs: "/b"
libs: "/c"
region:
tasks:
- name: debug
debug:
msg: "{{ my_environments[newvar] }} "
Вы можете запустить его с помощью:
ansible-playbook -ilocalhost, playbook.yml -e "newvar=test"
Попробуйте поискать варс
- name: debug
debug:
msg: "{{ lookup('vars', newvar) }}"