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

как создать массив массивов из hiera в марионетке

У меня есть ситуация, когда мне нужно сгенерировать массив массивов, которые объявлены в hiera в марионетке в разных иерархиях.

Допустим, на уровне среды у меня есть объявление

test:
 - [a,b,c,d]
 - [e,f,g,h]

и на common.yaml у меня есть объявление

test: 
 - [i,j,k,l]
 - [m,n,o,p]

Теперь, когда я прохожу мимо hiera_array значение Я хочу получить результат как

[[i,j,k,l],[m,n,o,p],[a,b,c,d],[e,f,g,h]]

в настоящее время вывод [i,j,k,l......e,f,g,h] в основном в одном объединенном значении массива.

Я хочу, чтобы он был в формате массива, чтобы я мог передать это в шаблон и применить его к требуемой логике. Скажите, пожалуйста, есть ли способ добиться этого.

Вы, я считаю, обречены (в общем). В hiera_array документация специально упоминает, что возвращаемые значения представляют собой «сплющенный массив». Далее проясняет ситуацию:

Если какое-либо из совпадающих значений является массивами, они сглаживаются и включаются в результаты.

Теперь, если ваш пример точен в отношении структуры, и каждый из ваших массивов гарантированно содержит четыре скалярных элемента, вы можете сделать несколько хаков, чтобы взять массив по четыре элемента за раз и «реконструировать» исходную структуру. Я не знаю встроенной функции для этого, но пользовательскую функцию парсера для группировки элементов в группы по четыре не составит труда написать.