diff options
author | Micah Anderson <micah@riseup.net> | 2007-10-12 16:14:11 +0000 |
---|---|---|
committer | Micah Anderson <micah@riseup.net> | 2007-10-12 16:14:11 +0000 |
commit | 284b50a1d07310c8c10f1c1f953d1e979762c476 (patch) | |
tree | 3974da499c584648e3aefbb8be13270f3d90ff93 /plugins | |
download | puppet-virtual-284b50a1d07310c8c10f1c1f953d1e979762c476.tar.gz puppet-virtual-284b50a1d07310c8c10f1c1f953d1e979762c476.tar.bz2 |
add the virtual module
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/facter/virtual.rb | 39 | ||||
-rw-r--r-- | plugins/facter/vserver.rb | 29 |
2 files changed, 68 insertions, 0 deletions
diff --git a/plugins/facter/virtual.rb b/plugins/facter/virtual.rb new file mode 100644 index 0000000..e649345 --- /dev/null +++ b/plugins/facter/virtual.rb @@ -0,0 +1,39 @@ +# Copied from http://reductivelabs.com/trac/puppet/wiki/VirtualRecipe?version=6 +# Authored by abnormaliti with contributions by daniel@nsp.co.nz and mwr + +# This defines the fact "virtual" with the possible values of "physical", +# "vmware", "vmware_server", "xenu", or "xen0" + +Facter.add("virtual") do + confine :kernel => :linux + + ENV["PATH"]="/bin:/sbin:/usr/bin:/usr/sbin" + + result = "physical" + + setcode do + + lspciexists = system "which lspci >&/dev/null" + if $?.exitstatus == 0 + output = %x{lspci} + output.each {|p| + # --- look for the vmware video card to determine if it is virtual => vmware. + # --- 00:0f.0 VGA compatible controller: VMware Inc [VMware SVGA II] PCI Display Adapter + result = "vmware" if p =~ /VMware/ + } + end + + # VMware server 1.0.3 rpm places vmware-vmx in this place, other versions or platforms may not. + if FileTest.exists?("/usr/lib/vmware/bin/vmware-vmx") + result = "vmware_server" + end + + if FileTest.exists?("/proc/xen/capabilities") and File.read("/proc/xen/capabilities") =~ /control_d/i + result = "xen0" + elsif FileTest.exists?("/proc/sys/xen/independent_wallclock") + result = "xenu" + end + result + end +end + diff --git a/plugins/facter/vserver.rb b/plugins/facter/vserver.rb new file mode 100644 index 0000000..bd8218d --- /dev/null +++ b/plugins/facter/vserver.rb @@ -0,0 +1,29 @@ +# vserver.rb -- linux-vserver.org related facts +# Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at> +# See LICENSE for the full license granted to you. +# Based on abnormaliti's "virtual" fact from +# http://reductivelabs.com/trac/puppet/wiki/VirtualRecipe + +# This defines the fact "vserver" with the possible values of "none", "guest", +# or "host" + +Facter.add("vserver") do + confine :kernel => :linux + + ENV["PATH"]="/bin:/sbin:/usr/bin:/usr/sbin" + + result = "none" + + setcode do + if FileTest.directory?('/proc/virtual') + result = "host" + elsif ! FileTest.directory?('/proc/2') + # gross hack: PID 2 is usually a + # kernel thread, which doesn't existin vserver + result = "guest" + end + + result + end +end + |