如何使用Puppet复制XL Deploy UI中现有的overthere.SshHost文件?

问题描述

我公司的Infra团队为我们提供了XL-Deploy UI中“ Infrastructure”下的示例overthere.SshHost,该示例具有未与我们共享的预定义私钥文件和密码。
要求我们在用户界面中手动复制此文件重命名并为我们的应用程序创建基础条目。

我该如何用木偶来实现?

可以说示例文件位于以下位置:Infrastructure/Project1/COMMONS/Template_SshHost 并且我需要通过复制示例文件

overthere.SshHost
Infrastructure/Project1/UAT/Uat_SshHost下创建一个Infrastructure/Project1/PREPROD/Preprod_SshHost

谢谢!

解决方法

您可以使用File属性,该资源的source属性指定原始文件的路径,从而将目标文件与可通过本地文件系统访问的另一个文件同步。您可以通过多种方式生成修改后的副本,例如通过应用一个或多个File_line资源(来自stdlib)或通过Exec资源应用适当的脚本。

但是,如果您走那条路线,那么您要么必须

  • 接受目标文件在每次运行Puppet时都将重新同步,或者
  • 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,}

但是您可能需要考虑为目标文件编写自定义类型和提供程序。这样一来,您就可以合并原始模板中的更改,而无需在每次运行时都重新同步文件,并且在需要应用的自定义设置方面,它可以为您提供更大的灵活性。它还将为您提供一个更简单的界面,供您在清单中使用,从而可以更轻松地管理这些清单。但是,当然可以用编写和维护自定义类型和提供程序的成本来抵消。只有您可以确定这是否值得进行权衡。