我正在尝试将参数从foreman推送到我的puppet类来生成配置文件。
Eeach文件应该是这样的:
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个不同的配置文件,因为我在调用dumpdb时得到'Ressource title必须是字符串'
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:}
提前谢谢你,
答案 0 :(得分: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多个线路课程一样,过去两年积累了各种各样的乐趣)。
编辑:语法