我可以使用Puppet找出哪些节点没有安装VMware工具?

我有100个RHEL服务器,我想运行VMware工具。 我写了一个可以安装VMware工具的Puppet模块,只需使用package {}:

package { 'vmware-tools-esx-nox': ensure => installed, } 

有一个没有安装vmware-tools软件包的服务器列表会很好。 Puppet如何帮助我找出哪些服务器没有安装VMware Tools?

如果您已经将该模块应用于所有节点,则答案应为“无”。 木偶大师的报告会告诉你,每台服务器都符合要求。

虽然vSphere客户端会告诉你现在哪个虚拟机安装了vmware工具。

下面是PowerShell中的一个示例(使用VMWare的PowerCLI),列出了没有安装(或没有当前)工具的虚拟机:

 get-VM | Get-View | ` ? { $_.Guest.ToolsStatus -match "toolsNotInstalled" -or ` $_.Guest.ToolsVersionStatus -ne "guestToolsCurrent" } | ` select Name, ` @{Name="Status"; Expression={$_.Guest.ToolsStatus}}, ` @{Name="Version"; Expression={$_.Guest.ToolsVersionStatus}} | ` format-table 

是的,您可以使用Puppet …您可以检查文件或服务或安装包。 PowerCLI方法也适用,但在您的环境中可能不太有用。

另一个考虑是使用VMware操作系统特定包 (OSP)。

请参阅: 如何确保VMware Tools已安装并正在运行?

这使您可以使用本机RPM和YUMpipe理VMware工具包,而不是笨重的vSphere客户端方法。 对于拥有您系统数量的环境来说,这可能是个好主意。

我意识到这可以被理解为插入自己的解决scheme,但实际上我已经编写了一个PuppetForge 模块 ( PuppetForge ),通过使用vSphere / ESX分发的tarball档案来控制VMware Tools的安装,而不是使用OSP或open-vm-tools包。

一旦你使用模块(或任何模块),你可以很容易地使用vSphere客户端来查看哪些虚拟机没有configuration和运行的工具。

我决定使用我自己的自定义事实来分析当前在多台服务器上的设置。 这些数据将与PuppetDB开采,可以提供漂亮的报告。

/etc/puppet/modules/facter/lib/facter/extra_info.rb:

 # vmware installed? Facter.add("vmtools_installed") do setcode do File.exists?('/usr/bin/vmware-toolbox-cmd') end end # vmware-running? Facter.add("vmtools_version") do setcode do Facter::Util::Resolution::exec('/usr/bin/vmware-toolbox-cmd -v') end end 

如果未安装VMWare工具,另一个名为“VMTools”的模块将安装VMWare Tools rpm-package(来自RHN Satellite)。 如果没有运行最新版本的VMware Tools,相同的模块会将VMWare Tools更新到最新的软件包。