module ChefUtils::DSL::Virtualization

Public Instance Methods

guest?(node = __getnode) click to toggle source

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
Also aliased as: virtual?
hypervisor?(node = __getnode) click to toggle source

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
kvm?(node = __getnode) click to toggle source

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
kvm_host?(node = __getnode) click to toggle source

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
lxc?(node = __getnode) click to toggle source

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
lxc_host?(node = __getnode) click to toggle source

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
openvz?(node = __getnode) click to toggle source

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
openvz_host?(node = __getnode) click to toggle source

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
parallels?(node = __getnode) click to toggle source

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
parallels_host?(node = __getnode) click to toggle source

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
physical?(node = __getnode) click to toggle source

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
vagrant?(node = __getnode) click to toggle source

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
vbox?(node = __getnode) click to toggle source

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
Also aliased as: virtualbox?
vbox_host?(node = __getnode) click to toggle source

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
virtual?(node = __getnode)

chef-sugar backcompat method

Alias for: guest?
virtualbox?(node = __getnode)

chef-sugar backcompat method

Alias for: vbox?
vmware?(node = __getnode) click to toggle source

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
vmware_desktop?(node = __getnode) click to toggle source

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
vmware_host?(node = __getnode) click to toggle source

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
vmware_vsphere?(node = __getnode) click to toggle source

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

vagrant_domain?(node = __getnode) click to toggle source

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
vagrant_key?(node = __getnode) click to toggle source

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
vagrant_user?(node = __getnode) click to toggle source

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