Как обратиться к переменной в списке в файле var в Ansible? - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть переменный файл, который включает в себя список, как показано ниже в формате:

VAR:
  - a: 1
    b: 2
    c: 3
  - a: 4 
    b: 5
    c: 6

Здесь я хочу добавить еще одну переменную, ссылающуюся на переменную в списке, например:

VAR:
  - a: 1
    b: 2
    c: 3
    d: "{{ VAR.0.a }}"
  - a: 4 
    b: 5
    c: 6
    d: "{{ VAR.1.a }}"

Но они не работали.

Я пытался {{VAR [0] .a}} {{VAR [a]}} {{VAR.0.a}} и т. Д., но никто из них не работал.

Как вы ссылаетесь на подэлемент в списке?

1 Ответ

0 голосов
/ 17 ноября 2018

Я думаю, что правильный путь будет {{ VAR[0]["a"] }}.Но есть большая вероятность, что то, что вы хотите сделать, не сработает.

Причина в том, что «усы не складываются».Если вы используете где-то в своем коде 'VAR.d', он будет расширен до строки 'VAR [0] ["a"]' (не выражение, а буквальная строка).Ansible использует ленивую шаблонизацию, задерживая расширение шаблона до последнего возможного момента.Он может быть частично переопределен модулем set_fact, но я сомневаюсь, что это поможет в этой ситуации.

Мой совет - избегать таких ссылок.,Он не имеет ничего общего с Ansible, тем не менее он работает в Ansible.

YAML позволяет использовать ссылки на старые значения.

VAR:
  - a: &refname 1
    b: 2
    c: 3
    d: *refname
  - a: &ref2 4 
    b: 5
    c: 6
    d: *ref2
...