0

我公司的 Infra 团队在overthere.SshHostXL-Deploy UI 的“Infrastructure”下为我们提供了示例,其中包含未与我们共享的预定义私钥文件和密码。
我们被要求在 UI 中手动复制这个文件,重命名它并为我们的应用程序创建基础条目。

我怎样才能用木偶实现这一目标?

可以说示例文件放在:下,Infrastructure/Project1/COMMONS/Template_SshHost 我需要通过复制示例文件来创建一个overthere.SshHost下。

Infrastructure/Project1/UAT/Uat_SshHost
Infrastructure/Project1/PREPROD/Preprod_SshHost

提前致谢!

4

1 回答 1

0

您可以使用属性指定原始文件路径的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,
}

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

于 2020-09-15T14:38:59.690 回答