анзибль; используя al oop для переключения между переменными - PullRequest
1 голос
/ 01 апреля 2020

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

например,

host: host1
ip-addr: 192.0.2.12/24
datasets:
  set1:
     var1: 'east'
     var2: 'west'
  set2:
     var1: 'north'
     var2: 'south'

Я могу создать al oop для подсчета наборов данных, но я не могу использовать его для ссылки [varX]:

 - name: "test loop"
   debug:
     msg: 
         - "{{ item }}"
         - "{{ 'datasets.set' + item + '.var1' }}"
         - "{{ datasets.set1.var1 }}"
    loop: "{{ query('sequence', 'start=1 end='+((datasets|length)|string)) }}"

Это похоже на сборку имени переменной, на которую я пытаюсь сослаться, но не возвращает значение, связанное с ним. Вызов этой переменной вручную возвращает интересное значение.

ok: [host1] => (item=1) => {
    "msg": [
        "1",
        "datasets.set1.var1",
        "east"
    ]
}
ok: [host1] => (item=2) => {
    "msg": [
        "2",
        "datasets.set2.var1",
        "east"
    ]
}

Возможно ли то, что я делаю, или мне следует подойти к ней под другим углом?

заранее спасибо.

1 Ответ

0 голосов
/ 01 апреля 2020

Задание

    - debug:
        msg: "set{{ item }}.var1 = {{ datasets['set' ~ item].var1 }}"
      loop: "{{ range(1, datasets|length+1)|list }}"

дает

    "msg": "set1.var1 = east"
    "msg": "set2.var1 = north"
...