Puppet 仅评估变量一次

Puppet 仅评估变量一次

我使用以下方式为新用户生成密码亚太区

简单的:

$password = generate('/etc/puppet/utils/gen_password')

此命令的唯一问题是我只需要它一次,但每次运行 puppet 时都会对其进行评估。

此变量用于执行官宣言。

是否有可能仅在必要时才评估变量?例如,如果是第一次使用。

答案1

您可以使用多个选项来有条件地运行 exec。选择适合您需求的选项:

  • 除非- 如果设置了此参数,则此 exec 将运行,除非命令返回 0。
  • 创建- 运行命令前要查找的文件。仅当文件不存在时,命令才会运行。
  • 除非- 如果设置了此参数,则仅当命令返回 0 时,此 exec 才会运行。
  • 仅刷新- 该命令仅应作为依赖对象发生变化时的刷新机制运行。

答案2

如果您没有在 Exec 中使用密码,则建议的方法卡济米拉斯·阿利尤利斯可能不适合你。

如果是我,我可能会修改/etc/puppet/utils/gen_password脚本,使其始终为每个服务/主机返回相同的密码。您可以让 puppet 像这样调用 generte generate("/etc/puppet/utils/gen_password $::clientcert")

然后在脚本中检查是否已为该系统生成密码,以及是否已返回密码。如果没有,则生成一个新密码,将其存储并返回。

如果可能的话,不要存储和返回未加密的密码。而是生成并返回加盐的密码哈希。

当然,如果您可以完全跳过使用密码,而是使用证书或密钥进行身份验证,那就更好了。

相关内容