Puppet:将文件内容加载到变量(特别是散列变量)



我需要将一些静态文件的内容加载到Puppet中的一些哈希变量中,以便将它们放入模板中。我的文件夹布局如下:

./manifests/site.pp
./templates/script.sh.epp
./files/server1_part1.txt
/server1_part2.txt
/server2_part1.txt
/server2_part2.txt

我现在想做的是将./files/${hostname}${part}.txt的内容加载到木偶哈希中的变量中,以便将它们放入模板中。我知道我可以在site.pp中声明它们,但有10台机器都有不同的行,导致清单无法读取。

哈希现在看起来是这样的:

$script_config_hashes = {
part1 => "${source_path}/${hostname}_part1.txt",
part2 => "${source_path}/${hostname}_part2.txt",
part3 => "${source_path}/${hostname}_part3.txt",
}

你知道如何做到这一点吗?阅读文档并不能回答我的问题(或者我忽略了显而易见的问题(。木偶大师是版本6.X

您可以通过Puppetfile()函数加载编译服务器上的文件内容。

然而,基于manifests/site.pp的出现,我认为您应该将其放在环境的根源上。不要。相反,创建一个模块,并将文件、模板和使用它们的清单放入该模块中。除了这是一种被广泛接受的最佳实践之外,它还具有解决构建所需文件的绝对路径问题的优势。

当所有内容都转移到模块mymodule时,散列定义将如下所示:

$script_config_hashes = {
part1 => file("mymodule/${hostname}_part1.txt"),
part2 => file("mymodule/${hostname}_part2.txt"),
part3 => file("mymodule/${hostname}_part3.txt"),
}

特别注意不需要绝对路径;文件/";部分路径是隐含的。

相关内容

最新更新