木偶事实,列表软件Windows



我是新的木偶和ruby,只是试图写自定义事实,但…出现以下问题

Facter.add("vsphere_installed") do
  confine :operatingsystem => :windows
  setcode do
  if  Facter::Util::Resolution.exec('c:windowssystem32WindowsPowerShellv1.0powershell.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

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

Puppet是关于期望状态的,而不是程序性的

感觉就像你现在把Puppet当作过程的,Puppet更多的是关于期望的状态。你决定安装什么,你不必问。

所以对于某些服务器角色,你会说最终状态是你需要vSphere和其他软件。

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

发现是你可以用工具探索机器做的事情,试试puppet resource package,你会明白我的意思。

自定义事实

但是要回答你的问题,你可能应该使用一个自定义的可执行事实,直接使用PowerShell,因为命令字符串仍然需要在双引号中转义(也可能需要以你使用撇号然后双引号的方式转义)-文档还指出使用Facter::Core::Execution.exec而不是Facter::Util::Resolution.exec

使用自定义可执行事实。

也不要使用Win32_Product - Win32_Product类可以触发Windows Installer对所有MSI安装的软件进行修复,作为一致性检查。它确实会导致机器做很多不必要的工作——使用它不是一个好主意。我建议直接查询卸载程序注册表项

相关内容

  • 没有找到相关文章

最新更新