Version information
This module has been deprecated by its author since Apr 1st 2023.
Start using this module
Documentation
VMware vCenter module
This module manages resources in VMware vCenter such as folders, datacenter, ESX host and clusters.
Description
VMware vCenter can be deployed either via an virtual appliance (vmware-vcsa module) or installed on a windows server. This module manages vCenter 5.1 resources via the vSphere API using rbvmomi gem:
+------------+ +---------+ +-----+
| | vsphere | vCSA | | ESX |
| Puppet | +-----> +---------+ +-----> +-----+
| Management | | |
| Host | | +---------+ | +-----+
| | ---> | vCenter | ---> | ESX |
+------------+ +---------+ +-----+
- vCenter resources in this module are NOT compatible with PuppetLabs-vCenter module.
- ESX resources operate on hosts once they are attached to vCenter.
Installation
$ puppet module install vmware/vcenter
Usage
Puppet management host (see diagram above) should install type/provider gem dependencies:
include vcenter::package
Warning: nokogiri gem is an implicit requirement:
-
Nokogiri package is shipped with Puppet Enterprise, but typically not installed by default on the agent. The platform appropriate PE nokogiri gem should be installed on the management host (rather than building the gem).
-
Open source puppet will automatically attempt to build nokogiri gem, but additional packages may be required for successful compilation (see tests/package.pp example and nokogiri installation documentation).
-
This module ships with a custom version of rbvmomi gem for Ruby 1.8.7 compatibility.
Transport resource specifies rbvmomi connectivity info (see VIM.connect method for additional options):
# The name of the transport is referenced by other resource:
transport { 'lab':
username => 'root',
password => 'vmware',
server => 'vcsa.lab',
options => { 'insecure' => true },
}
All vCenter resources use the transport metaparameter to specify the connectivity used to manage the resource:
vc_datacenter { 'dc1':
path => '/dc1',
ensure => present,
transport => Transport['lab'],
}
vc_folder { '/dc1/folder1':
ensure => absent,
transport => Transport['lab'],
}
An ESX host can be attached and managed indirectly via vSphere API:
vcenter::host { $esx1['hostname']:
path => '/dc1',
username => 'root',
password => 'password',
dateTimeConfig => {
'ntpConfig' => {
'server' => 'us.pool.ntp.org',
},
'timeZone' => {
'key' => 'UTC',
},
},
transport => Transport['lab'],
}
See tests folder for additional examples.
ESXi resource types
esx_advanced_options
Parameters
transport
: A resource reference to a transport type declared elsewhere. Eg:Transport['vcenter']
options
: A hash containing a list of options:
options => {
"Vpx.Vpxa.config.log.level" => "verbose", # ChoiceOption default "verbose"
"Config.HostAgent.log.level" => "verbose", # ChoiceOption default "verbose"
"Annotations.WelcomeMessage" => "", # StringOption default ""
"BufferCache.SoftMaxDirty" => 15, # LongOption default 15
"CBRC.Enable" => false, # BoolOption default false
"Config.GlobalSettings.guest.commands.sharedPolicyRefCount" => 0 # IntOption default 0
esx_debug
Parameters
debug
: true, falsetransport
: A resource reference to a transport type declared elsewhere. Eg:Transport['vcenter']
esx_firewall_ruleset
Parameters
ensure
: enabled, disabledname
: Name of the firewall ruleset (namevar)host
: ESX host to configure (namevar)path
: Path to the datacenter where the host residesallowed_hosts
: Accepts a string value of "all" or an array of IP addresses and IP networks with prefixestransport
: A resource reference to a transport type declared elsewhere. Eg:Transport['vcenter']
Title pattern
Both name
and host
are namevars, by default the title will be used for name
, but both may be specified in the title as host:name
esx_dnsconfig
Parameters
address
: ['array','of','dns','values']host_name
: Hostname of ESXi server.domain_name
: Domain name of ESXi server.search_domain
: Search domain of ESXi server.dhcp
: true, falsetransport
: A resource reference to a transport type declared elsewhere. Eg:Transport['vcenter']
Further Documentation
esx_ntpconfig
Parameters
server
: ['array','of','ntp','servers']transport
: A resource reference to a transport type declared elsewhere. Eg:Transport['vcenter']
esx_powerpolicy
Parameters
current_policy
: 'static','dynamic','low' static = High performance dynamic = Balanced low = Low Powertransport
: A resource reference to a transport type declared elsewhere. Eg:Transport['vcenter']
esx_service
The service name should be in the form of: ESXi_hostname:<service name
. Eg esx.example.com:ntpd
Parameters
running
: true, falsepolicy
: 'on','off','automatic'transport
: A resource reference to a transport type declared elsewhere. Eg:Transport['vcenter']
esx_syslog
Parameters
default_rotate
: The maximum number of log files to keep locally on the ESXi host in the configured logDir. Does not affect remote syslog server retention. Defaults to 8default_size
: The maximum size, in kilobytes, of each local log file before it is rotated. Does not affect remote syslog server retention. Defaults to 1024 KB.log_dir
: A location on a local or remote datastore and path where logs are saved to. Has the format[DatastoreName] DirectoryName/Filename
, which maps to/vmfs/volumes/DatastoreName/DirectoryName/Filename
. The[DatastoreName]
is case sensitive and if the specified DirectoryName does not exist, it will be created. If the datastore path field is blank, the logs are only placed in their default location. If/scratch
is defined, the default is[]/scratch/log
.log_host
:A remote server where logs are sent using the syslog protocol. If the logHost field is blank, no logs are forwarded. Include the protocol and port, similar totcp://hostname:514
log_dir_unique
: A boolean option which controls whether a host-specific directory is created within the configured logDir. The directory name is the hostname of the ESXi host. A unique directory is useful if the same shared directory is used by multiple ESXi hosts. Defaults to false.transport
: A resource reference to a transport type declared elsewhere. Eg:Transport['vcenter']
esx_system_resource
Parameters
This resource allows the configuration of system resources of a host that are viewed und er the 'System Resource Allocation' section of the vSphere client
host
:system_resource
:cpu_limit
: Can be set to a numerical value representing MHz, or "unlimited"cpu_reservation
:cpu_expandable_reservation
:memory_limit
: Can be set to a numerical value representing MB, or "unlimited"memory_reservation
:memory_expandable_reservation
:transport
: A resource reference to a transport type declared elsewhere. Eg:Transport['vcenter']
esx_timezone
Parameters
key
: 3 letter time zone. Eg: 'GMT'transport
: A resource reference to a transport type declared elsewhere. Eg:Transport['vcenter']
esx_datastore
Manage vCenter esx hosts' datastore.
The datastore name should be in the form of: ESXi_hostname:<datastore name>
.
Parameters
ensure
: presenttype
: vmfs, cifs, nfslun
: LUN number of storage volume. Specify only for block storage.remote_host
: IP or DNS name of remote host.remote_path
: Path to directory/folder or remote host.transport
: A resource reference to a transport type declared elsewhere. Eg:Transport['vcenter']
esx_vmknic_type
Manages ESXi vmknic types - management, vmotion, faultToleranceLogging, or vSphereReplication
The vmknic type should be in the form of: ESXi_hostname:<name of vmknic>
.
Parameters
nic_type
: 'faultToleranceLogging', 'management', 'vmotion', 'vSphereReplication'transport
: A resource reference to a transport type declared elsewhere. Eg:Transport['vcenter']
esx_license
Parameters
license_key
: Namevar variable for puppet. Adds licenses to Vcenter pool. Does not assign them to managed entities (esxi, vcenter). Use esx_license_assignment to assign licenses to entities.
Usage
esx_license { 'XXXXX-XXXXX-XXXXX-XXXXX-XXXXX'
ensure => present,
transport => Transport['vcenter']
}
or
esx_license { 'mylicense':
license_key => 'XXXXX-XXXXX-XXXXX-XXXXX-XXXXX',
ensure => present,
transport => Transport['vcenter']
}
esx_license_assignment
Manage vsphere license assignment. entity_id should be the name of an esx host or vcenter. Licenses can only be assigned to one entity at a time.
Parameters
entity_id
: Name of ESX or Virtual Center node associated with the license keylicense_key
: vSphere License Key
vCenter resource types
vc_role
Parameters
transport
: A resource reference to a transport type declared elsewhere. Eg:Transport['vcenter']
name
: The desired name for the role.privileges
: An array of privilege IDs to be assigned to the role. A list of privileges of privileges can be gathered via the Managed Object Browser (MOB). Simply navigate to https:///mob/?moid=AuthorizationManager&doPath=privilegeList. Use the privId value to add the privilege to the role.force_delete
: By default, a role will not be deleted if user or group permissions are associated with it. If force_delete is set to true, then the role will be deleted even if there are associated permissions
vc_role { 'Role Admin':
ensure => present,
privileges => [ 'Authorization.ModifyRoles', 'Authorization.ReassignRolePermissions', 'Authorization.ModifyPermissions' ],
transport => Transport['vcenter']
}
or
vc_role { 'Role Admin':
ensure => absent,
force_delete => true,
transport => Transport['vcenter']
}
Types in this module release
Dependencies
- puppetlabs/stdlib (>= 2.0.0)
- vmware/vmware_lib (>= 0.7.0)
- nanliu/staging (>= 0.2.1)
Copyright (C) 2013 VMware, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.