2015-10-29 2 views
0

У меня есть двумерный набор переменных конфигурации:Кукольный 2D Итерация

$environments = [ 
    { 
    'name' => 'foo', 
    'port' => '1234', 
    }, 
    { 
    'name' => 'bar', 
    'port' => '4321', 
    }, 
] 

Можно перебрать массивы и использовать переменные из внутренних массивов. Например. Я хочу создать учетную запись пользователя для каждого имени.

# How to get each name? 
user { $environment: 
    ensure => 'present' 
} 
+0

Вы представить массив хэшей, которые кажутся (с помощью ключа ' 'port''), связаны с сетями, а затем спросите о создании пользователей. Я не вижу связи. –

+0

В любом случае, какую версию Puppet вы используете? Это имеет большое значение. –

ответ

0

Puppet 4 предоставляет built-in functions для итерации по совокупным значениям и новый, похожий на Ruby синтаксис, чтобы идти с ними. Они также доступны в последних версиях Puppet 3, когда включен парсер будущего. Если вы используете такой кукольный, вы могли бы подойти к проблеме так:

each($environments) |$e| { 
    foo { $e['name']: port => $e['port'] } 
} 
+0

Это решило мою проблему для новых марионеточных версий. Для более старых версий мне пришлось создать функцию «define». Эта функция выполняет только одну задачу и выполняет итерацию по массиву. – Topiks

0

Я никогда не работал с итерациями в марионетке.

Но создать несколько ресурсов из hash (обратите внимание хэш не массив), вы можете использовать функцию create_resources().

У documentation есть хороший пример.

Ваш hash не может содержать parameters, что доза resource не понимает tho. В вашем примере port не будет работать с ресурсом user, так как доза не понимает этот параметр.

Надеюсь, это поможет в любом случае.

+0

Я, возможно, не помогу во всем, что мне нужно сделать, но это похоже на прочное решение для некоторых вещей. Я посмотрю на это, тх. – Topiks

Смежные вопросы