如果 windows 上存在,Puppet 将启动服务
Puppet to start service if it exists on windows
我正在寻找清单以在 windows 服务器上启动服务(如果服务存在)。
如果文件存在,我希望检查有条件的服务。
service { 'test service':
ensure => 'running',
enable => true,
unless => 'if((test-path "C:\Program Files\test1") -or (test-path "C:/Program Files/test2")){ exit 0 } else { exit 1 }',
provider => powershell,}
以上代码 returns 一个错误,除非是一个无效参数。还有什么方法可以查吗?
非常感谢!!
服务资源似乎没有支持条件包含的参数。 Puppet 也没有一种简单的方法来检查我所知道的客户端上是否存在文件。我通过创建一个检查我需要的条件的自定义事实然后将资源包装在一个 unless 块中来解决这个问题:
unless $facts['test_file_exists'] {
service { 'test service':
ensure => 'running',
enable => true,
}
因为自定义事实可以用任何语言编写,可以将 "key=value" 对输出到标准输出,您可以使用现有的 powershell 代码作为事实,只需稍加改动:
if((test-path "C:\Program Files\test1") -or (test-path "C:\program Files\test2")){
write-host "test_file_exists=true
}
else{
write-host "test_file_exists=false"
}
有几种不同的方法可以将事实分发到您的客户端系统。我更喜欢将事实放入一个模块中,然后让 pluginsync 为我分发它。如果您不想将它包含在模块中,那么您将不得不找到一些方法将 powershell 代码放入 C:\ProgramData\PuppetLabs\facter\facts.d\ 并在末尾使用适当的 .ps1 扩展名。
我正在寻找清单以在 windows 服务器上启动服务(如果服务存在)。 如果文件存在,我希望检查有条件的服务。
service { 'test service':
ensure => 'running',
enable => true,
unless => 'if((test-path "C:\Program Files\test1") -or (test-path "C:/Program Files/test2")){ exit 0 } else { exit 1 }',
provider => powershell,}
以上代码 returns 一个错误,除非是一个无效参数。还有什么方法可以查吗? 非常感谢!!
服务资源似乎没有支持条件包含的参数。 Puppet 也没有一种简单的方法来检查我所知道的客户端上是否存在文件。我通过创建一个检查我需要的条件的自定义事实然后将资源包装在一个 unless 块中来解决这个问题:
unless $facts['test_file_exists'] {
service { 'test service':
ensure => 'running',
enable => true,
}
因为自定义事实可以用任何语言编写,可以将 "key=value" 对输出到标准输出,您可以使用现有的 powershell 代码作为事实,只需稍加改动:
if((test-path "C:\Program Files\test1") -or (test-path "C:\program Files\test2")){
write-host "test_file_exists=true
}
else{
write-host "test_file_exists=false"
}
有几种不同的方法可以将事实分发到您的客户端系统。我更喜欢将事实放入一个模块中,然后让 pluginsync 为我分发它。如果您不想将它包含在模块中,那么您将不得不找到一些方法将 powershell 代码放入 C:\ProgramData\PuppetLabs\facter\facts.d\ 并在末尾使用适当的 .ps1 扩展名。