module ChefUtils::DSL::Virtualization
Public Instance Methods
Determine if the current node is running under any virtualization environment
@param [Chef::Node] node @since 15.8
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 194 def guest?(node = __getnode) node.dig("virtualization", "role") == "guest" end
Determine if the current node supports running guests under any virtualization environment
@param [Chef::Node] node @since 15.8
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 208 def hypervisor?(node = __getnode) node.dig("virtualization", "role") == "host" end
Determine if the current node is a KVM guest.
@param [Chef::Node] node @since 15.8
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 33 def kvm?(node = __getnode) node.dig("virtualization", "system") == "kvm" && node.dig("virtualization", "role") == "guest" end
Determine if the current node is a KVM host.
@param [Chef::Node] node @since 15.8
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 44 def kvm_host?(node = __getnode) node.dig("virtualization", "system") == "kvm" && node.dig("virtualization", "role") == "host" end
Determine if the current node is running in a linux container.
@param [Chef::Node] node @since 15.8
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 55 def lxc?(node = __getnode) node.dig("virtualization", "system") == "lxc" && node.dig("virtualization", "role") == "guest" end
Determine if the current node is a linux container host.
@param [Chef::Node] node @since 15.8
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 66 def lxc_host?(node = __getnode) node.dig("virtualization", "system") == "lxc" && node.dig("virtualization", "role") == "host" end
Determine if the current node is an openvz guest.
@param [Chef::Node] node @since 15.8
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 172 def openvz?(node = __getnode) node.dig("virtualization", "system") == "openvz" && node.dig("virtualization", "role") == "guest" end
Determine if the current node is an openvz host.
@param [Chef::Node] node @since 15.8
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 183 def openvz_host?(node = __getnode) node.dig("virtualization", "system") == "openvz" && node.dig("virtualization", "role") == "host" end
Determine if the current node is running under Parallels Desktop.
@param [Chef::Node] node @since 15.8
@return [Boolean]
true if the machine is currently running under Parallels Desktop, false otherwise
# File lib/chef-utils/dsl/virtualization.rb, line 79 def parallels?(node = __getnode) node.dig("virtualization", "system") == "parallels" && node.dig("virtualization", "role") == "guest" end
Determine if the current node is a Parallels Desktop host.
@param [Chef::Node] node @since 15.8
@return [Boolean]
true if the machine is currently running under Parallels Desktop, false otherwise
# File lib/chef-utils/dsl/virtualization.rb, line 92 def parallels_host?(node = __getnode) node.dig("virtualization", "system") == "parallels" && node.dig("virtualization", "role") == "host" end
Determine if the current node is NOT running under any virtualization environment (bare-metal or hypervisor on metal)
@param [Chef::Node] node @since 15.8
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 219 def physical?(node = __getnode) !virtual?(node) end
Determine if the current node is running as a vagrant guest.
Note that this API is equivalent to just looking for the vagrant user or the vagrantup.com domain in the hostname, which is the best API we have.
@param [Chef::Node] node @since 15.8
@return [Boolean]
true if the machine is currently running vagrant, false otherwise
# File lib/chef-utils/dsl/virtualization.rb, line 235 def vagrant?(node = __getnode) vagrant_key?(node) || vagrant_domain?(node) || vagrant_user?(node) end
Determine if the current node is a VirtualBox guest.
@param [Chef::Node] node @since 15.8
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 103 def vbox?(node = __getnode) node.dig("virtualization", "system") == "vbox" && node.dig("virtualization", "role") == "guest" end
Determine if the current node is a VirtualBox host.
@param [Chef::Node] node @since 15.8
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 114 def vbox_host?(node = __getnode) node.dig("virtualization", "system") == "vbox" && node.dig("virtualization", "role") == "host" end
Determine if the current node is a VMWare guest.
@param [Chef::Node] node @since 15.8
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 128 def vmware?(node = __getnode) node.dig("virtualization", "system") == "vmware" && node.dig("virtualization", "role") == "guest" end
Determine if the current node is virtualized on VMware Desktop (Fusion/Player/Workstation).
@param [Chef::Node] node @since 17.9
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 150 def vmware_desktop?(node = __getnode) node.dig("virtualization", "system") == "vmware" && node.dig("vmware", "host", "type") == "vmware_desktop" end
Determine if the current node is VMware host.
@param [Chef::Node] node @since 15.8
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 139 def vmware_host?(node = __getnode) node.dig("virtualization", "system") == "vmware" && node.dig("virtualization", "role") == "host" end
Determine if the current node is virtualized on VMware vSphere (ESX).
@param [Chef::Node] node @since 17.9
@return [Boolean]
# File lib/chef-utils/dsl/virtualization.rb, line 161 def vmware_vsphere?(node = __getnode) node.dig("virtualization", "system") == "vmware" && node.dig("vmware", "host", "type") == "vmware_vsphere" end
Private Instance Methods
Check if “vagrantup.com” is included in the node’s domain.
@param (see vagrant?) @return (see vagrant?)
# File lib/chef-utils/dsl/virtualization.rb, line 256 def vagrant_domain?(node = __getnode) node.key?("domain") && !node["domain"].nil? && node["domain"].include?("vagrantup.com") end
Check if the vagrant
key exists on the node
object. This key is no longer populated by vagrant, but it is kept around for legacy purposes.
@param (see vagrant?) @return (see vagrant?)
# File lib/chef-utils/dsl/virtualization.rb, line 247 def vagrant_key?(node = __getnode) node.key?("vagrant") end
Check if the system contains a vagrant
user.
@param (see vagrant?) @return (see vagrant?)
# File lib/chef-utils/dsl/virtualization.rb, line 265 def vagrant_user?(node = __getnode) !!(Etc.getpwnam("vagrant") rescue nil) end