Назад | Перейти на главную страницу

доступное построение имени переменной из другой переменной

У меня есть определение доступной переменной, и мне было интересно, могу ли я получить значение переменных на основе переменной, определенной во время выполнения

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) }}"