gpt4 book ai didi

windows - Puppet fact,列出软件 Windows

转载 作者:可可西里 更新时间:2023-11-01 11:27:47 24 4
gpt4 key购买 nike

我是 puppet 和 ruby​​ 的新手,只是尝试编写自定义事实但是......遇到以下问题

Facter.add("vsphere_installed") do
confine :operatingsystem => :windows
setcode do
if Facter::Util::Resolution.exec('c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive -NoProfile -ExecutionPolicy Bypass -Command "Get-WmiObject -Class Win32_Product | Select-Object -DisplayName | ? {$_.DisplayName -Match "vsphere"}"') = true
result = "vSphere installed"
else
result = "false"

end
end
end

我不知 Prop 体怎么做,我想列出已安装的程序并搜索一个程序,如果为真(找到)则返回它已安装。这个例子到目前为止只返回 false ....

最佳答案

Puppet 是关于 Desired State - 不是 Procedural

感觉您目前正在将 Puppet 视为程序,而 Puppet 更多的是关于所需的状态。您确定安装了什么,您不一定要问。

因此,对于某些服务器角色,您会说最终状态是您需要 vSphere 以及其他软件。

您可以做出这些决定,您不应该使用 Puppet 来发现状态,而是告诉它状态并让它做它最擅长的事情。

Discovery 是您可以使用探索机器的工具在带外执行的操作,试试 puppet 资源包,您就会明白我的意思。

自定义事实

但要回答您的问题,您可能应该使用自定义可执行文件并直接使用 PowerShell,because the command string still needs to be escaped in the double quotes (并且可能还需要以使用撇号然后双引号的方式进行转义) - 文档还指向使用 Facter::Core::Execution.exec 而不是 Facter::Util::Resolution.exec.

使用Custom Executable Facts相反。

也不要使用 Win32_Product - Win32_Product class can trigger Windows Installer to do a repair on all MSI installed software as a consistency check .它确实会导致机器做很多不必要的工作——使用它并不是一个好主意。我建议直接查询卸载程序注册表项。

关于windows - Puppet fact,列出软件 Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30321462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com