puppet - 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
puppet 哈希中的内容加载到变量中,以便将它们放入模板中。我知道我可以在其中声明它们,site.pp
但是有 10 台机器都有不同的行,导致清单无法读取。
哈希现在看起来像这样:
$script_config_hashes = {
part1 => "${source_path}/${hostname}_part1.txt",
part2 => "${source_path}/${hostname}_part2.txt",
part3 => "${source_path}/${hostname}_part3.txt",
}
关于如何实现这一目标的任何想法?阅读文档并没有回答我的问题(或者我忽略了显而易见的问题)。Puppet Master 是版本 6.X
解决方案
您可以通过Puppetfile()
函数加载驻留在编译服务器上的文件的内容。
但是,根据 的外观manifests/site.pp
,我认为您考虑将其放在环境的根目录中。不。相反,创建一个模块,并将文件、模板和使用它们的清单放入该模块中。除了这是一种被广泛接受的最佳实践之外,它还具有解决构建所需文件的绝对路径的问题的优势。
将所有内容移至 modulemymodule
后,哈希定义将如下所示:
$script_config_hashes = {
part1 => file("mymodule/${hostname}_part1.txt"),
part2 => file("mymodule/${hostname}_part2.txt"),
part3 => file("mymodule/${hostname}_part3.txt"),
}
请特别注意,不需要绝对路径,并且路径的“files/”部分是隐含的。
推荐阅读
- jquery - 将生成的 HTML 与 jQuery 一起使用
- jenkins - 构建后运行 Jenkins 插件
- sql - 在sql中,当按部门分组时,如何将sal显示为null,部门中缺少成绩的等级
- java - 如何像在终端上运行一样准确地获取 Java 程序的输出?
- angular - 使用 Angular 组件时替代 href
- mongodb - 更新 mongodb 中的多个文档
- python - 如何在 Python 中使用带有协程的装饰器?
- dart - 制作非全屏 Flutter 路由
- flutter - 如何使用 tablelayout 像在颤动中看
- asp.net-mvc - 在 ASP.Net Core 中使用 SPA 预渲染和 JWT 承载身份验证实现 XSRF-Token