Генерация конфигурационных файлов с использованием puppet и foreman
Я пытаюсь передать параметры из мастера в класс puppet для создания файла конфигурации.
Каждый файл должен быть таким:
file1
DB_USERNAME=toto
DUMP_TYPE=full
[...]
file2
DB_USERNAME=toto
DUMP_TYPE=full
[...]
Я определяю параметр в Foreman, который является массивом хэшей
bacula_client dumpCfg [{"techno"=>"oracle", "DB_USERNAME"=>"toto", "DUMP_TYPE"=>"full", ...},
{"techno"=>"mysql", "DB_USERNAME"=>"toto", "DUMP_TYPE"=>"full", ...}]
Я хотел бы знать, возможно ли сделать что-то подобное, чтобы сгенерировать, например, 2 разных файла конфигурации, так как я получаю "Ressource title должно быть строкой" при вызове dumpdb
class bacula_client (
$isDirector = false,
$backupCrons = [],
$isHostConcentrator = false,
$dumpCfg = [],
define bacula_client::dumpdb () {
$techno = $name['techno']
$dbusername = $name['DB_USERNAME']
$dumptype = $name['DUMP_TYPE']
# call a function that generates the files
}
[.....]
}#myclass
bacula_client::dumpdb{$dumpCfg:}
Заранее спасибо,
1 ответ
Сообщение об ошибке говорит обо всем. Вы называете ресурс, используя хэш. Предполагается, что строка.
Попробуйте это так:
define bacula_client::dumpdb ($dumpCfg) {
$techno = $dumpCfg['techno']
$dbusername = $dumpCfg['DB_USERNAME']
$dumptype = $dumpCfg['DUMP_TYPE']
# call a function that generates the files
}
bacula_client::dumpdb{'file1': dumpCfg => $dumpCfg[0] }
bacula_client::dumpdb{'file2': dumpCfg => $dumpCfg[1] }
Обратите внимание на "file1" и "file2". Это имена ресурсов, которые должны быть строками и быть уникальными. Данные передаются в качестве параметра.
Не уверен, работает ли использование массива / хэша или нет. Не тестировал, и я не очень часто передаю данные.
И сделайте себе одолжение и поместите свое определение в свой собственный файл, а не в середину класса. Позже избавит вас от головной боли (например, той, которую я пытаюсь найти в смыслах для 400+ линейных классов, в которых накоплено много всякого веселья за последние 2 года).
Изменить: грамматика