我公司的基础架构团队在XL-Deploy UI中的'Infrastructure‘下为我们提供了示例overthere.SshHost,它有一个预定义的私钥文件和密码短语,不会与我们共享。
我们被要求在UI中手动复制这个文件,重命名它,并为我们的应用程序创建基础设施条目。
我如何用puppet来实现这一点呢?
假设示例文件位于:Infrastructure/Project1/COMMONS/Template_SshHost下,我需要在以下位置创建一个overthere.SshHost
Infrastructure/Project1/UAT/Uat_SshHost和
通过复制示例文件执行Infrastructure/Project1/PREPROD/Preprod_SshHost。
提前感谢!
发布于 2020-09-15 22:39:00
您可以使用其source属性指定原始文件路径的File资源,将目标文件与可通过本地文件系统访问的其他文件同步。您可以通过各种方式生成修改后的副本,例如通过应用一个或多个File_line资源(来自标准库)或通过Exec资源应用适当的脚本。
但如果你走了那条路,你必须要么
File资源的replace属性设置为false,在这种情况下,对原始文件的更改将不会传播到自定义副本中。后者可能是大多数人更容易接受的选择。它的文件复制部分可能如下所示:
$project_dir = '/path/to/Infrastructure/Project1'
file { "${project_dir}/UAT/Uat_SshHost/overthere.SshHost":
ensure => 'file',
source => "${project_dir}/COMMONS/Template_SshHost/overthere.SshHost",
replace => false,
}但是您可能需要考虑为目标文件编写一个自定义类型和提供程序。这将允许您合并来自原始模板的更改,而无需在每次运行时重新同步文件,并且它将为您提供更多关于需要应用的自定义的灵活性。它还将为您在清单中使用提供一个更简单的界面,这可以使管理这些清单变得更容易。但是,当然,这被编写和维护自定义类型和提供程序的成本所抵消。只有你才能确定这是否是一种值得的权衡。
https://stackoverflow.com/questions/63903433
复制相似问题