Ansible Отладка массива объекта для заданного значения c с использованием L oop? - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть следующий массив записей со значением:

  • myRecord.record.0.number = "Number 0"
  • myRecord.record.1.number = " Номер 1 "
  • myRecord.record.2.number =" Номер 2 "
  • myRecord.record.3.number =" Номер 3 "

Как создать playbook для отладки вышеуказанного значения, используя l oop динамически / для каждого массива?

для другого общего языка, это можно сделать следующим образом:

for(int i = 0; i < myRecord.length(); i++)
{
   echo myRecord.record.[i].number
}

для повторяющейся задачи Плейбук, это будет выглядеть так:

---

- hosts: localhost
  name: Array of Object
  gather_facts: false

  tasks:
    - name: using debugMsg
      debug: 
        msg: 
          -   "{{ myRecord.record.0.number  }}"
          -   "{{ myRecord.record.1.number  }}"
          -   "{{ myRecord.record.2.number  }}"
          -   "{{ myRecord.record.3.number  }}"

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Я понял, как это сделать. В основном мне просто нужно использовать loop_control, чтобы отфильтровать нужное мне значение c. Вот эта пьеса:

---

- hosts: localhost
  name: Array of Object
  gather_facts: false
  tasks:
    - name: using loop_control
      debug:
        msg: "{{ item.number }}"
      with_items:
        - "{{ myRecord.record }}"  #this will become 'item'
      loop_control:
        label: "{{ item.number }}" #filter to display the value of number only
0 голосов
/ 13 апреля 2020

Есть два метода . Первый метод использует ключевое слово with_ * и зависит от плагина Lookup . Второй метод использует ключевое слово l oop, которое эквивалентно 'with_' + 'плагину для поиска по списку' (поэтому вы получаете 'with_list').

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

---
# vars file for print_variable_from_list
myRecord:
  record:
    - number: "Number 0"
    - number: "Number 1"
    - number: "Number 2"
    - number: "Number 3"

Каждое число индексируется клавишей «number».

- name: loop through myRecord
  debug:
    msg: "{{  item.number  }}"
  loop: "{{ myRecord.record }}"

Пожалуйста, обратитесь на другие сообщения для более сложных запросов.

...