【发布时间】:2016-09-19 22:55:03
【问题描述】:
我正在使用 Puppet 将证书从 Puppet 服务器传输到 Windows 节点。 Puppet Server 有一个文件夹,其中正在从我的 CA(另一台服务器)复制新证书。因此,有时 Puppet 可能找不到节点的证书(它没有从 CA 转移到源目录),这就是为什么我需要额外检查源文件夹中是否存在证书。代码必须检查主机名,找到适当的证书并将其传输到节点。在我尝试复制之前,如何让它检查模块文件目录 (puppet:///modules/modulename/) 中的证书是否存在?
file { "D:\$hostname.pfx":
ensure => present,
source => all,
exec { 'Import certificate':
command => "if((Get-ChildItem -Path Cert:\LocalMachine\My\ | ? {$_.Issuer -like "*CN=example*"}).HasPrivateKey | select-string -pattern "True") -or ()\
{\$pwd = ConvertTo-SecureString -String "Password" -Force –AsPlainText; Import-PfxCertificate –FilePath ${cert_path}\$hostname.pfx cert:\localMachine\my -Password \$pwd}",
path => $::path,
onlyif => "Test-Path ${cert_path}\${hostname}.pfx",
provider => 'powershell',
}
【问题讨论】:
-
这与最佳实践相去甚远。你这样做是有原因的吗?
-
嗯,是的,实施这种奇怪的解决方案是有原因的。
-
您所询问的内容与您提供的(语法不正确的)代码有何关系?
标签: puppet