#puppet-vmwaretools
####Table of Contents
- Overview - What is the puppet-vmwaretools module?
- Module Description - What does the module do?
- Setup - The basics of getting started with puppet-vmwaretools
- Usage - Configuration options and additional functionality
- Reference - An under-the-hood peek at what the module is doing
- Limitations - OS compatibility, etc.
- Development - Guide for contributing to the module
##Overview
This module manages the installation and upgrade of VMware Tools via the source code tarballs distributed by VMware.
##Module Description
This module is designed to replace both the OSP packages provided by VMware's repositories and also the open-vm-tools
package. The module is O/S independent (tested on Ubuntu and Red Hat systems).
The tarballs are transferred to the target by either HTTP download or Puppet filebucket (the default mechanism), and then uncompressed and installed via the archive's Perl installation script.
Upgrading of currently installed VMware Tools packages is also supported - the module obtains the currently-installed VMware Tools version via a custom fact, and only deploys the tarball if a version mismatch occurs or if VMware Tools is not installed on the target system.
##Setup
###What puppet-vmwaretools affects
- Compares installed version with the configured version via the
vmwaretools
fact - Transfer the VMware Tools archive to the target agent (via Puppet or HTTP)
- Untar the archive and run vmware-install-tools.pl (warning: this installer is run with the
-d
flag to accept all default answers). - Removes the
open-vm-tools
package.
###Setup Requirements
- Perl must be installed on the target systems in order to run the VMware Tools installer.
- Pluginsync must be enabled, due to the vmwaretools custom fact distributed with this module.
###Beginning with puppet-vmwaretools
To accept default class parameters:
include vmwaretools
##Usage
The source distribution mechanism can be customised by declaring the module with archive_url
and archive_md5
parameters (default is to use Puppet filebuckets).
To specify a non-default version, working directory and HTTP URL (other variables can be viewed and/or modified in manifests/init.pp
):
class { 'vmwaretools':
version => '8.6.5-621624',
working_dir => '/tmp/vmwaretools'
archive_url => 'http://server.local/my/dir',
archive_md5 => '9df56c317ecf466f954d91f6c5ce8a6f',
}
##Reference
###Facts
vmwaretools_version
- Detects any existing VMware Tools installations and, if found, reports the installed version.
###Classes
vmwaretools::install::exec
- Declares allexec
commands run by the module.vmwaretools::install::archive
- Handles the archive distribution (either places a download script or the archive).vmwaretools::params
- O/S-specific and module configuration (e.g. paths to binaries and a boolean variable to control file deployment)vmwaretools::config_tools
- Executesvmware-config-tools.pl -d
if thevmci.ko
module doesn't exist for the running kernelvmwaretools::timesync
- Handles time synchronisation between the virtual machine and host
##Limitations
###Supported Operating Systems
- Ubuntu - 12.04 LTS (Precise) and 10.04 LTS (Lucid) tested
- Red Hat family - RHEL 5 and 6 tested
- Debian family - written but untested, reports appreciated
###Unsupported Operating Systems
- Ubuntu 13.04 - see VMware KB2050666 and bug #12
##Development
- Copyright (C) 2013 Craig Watson - [email protected]
- VMware Tools fact by janorn
- Distributed under the terms of the GNU General Public License v3 - see LICENSE file for details.
- Further contributions and testing reports are extremely welcome - please submit a pull request or issue on GitHub
##Release Notes
vmwaretools::timesync
- New class: Handles management of time sychronisation with vSphere. Thanks to Aaron Hicks for the pull request GitHub Issue #18!
vmwaretools::config_tools
- Renamed class: was previously
vmwaretools::kernel_upgrade
- Renamed class: was previously
vmwaretools
- New parameter:
timesync
. This paramter enables/disables the timesync feature of the VMware Tools. Defaults to undef (literal), which will leave time synchronisation unmanaged. Valid managed values aretrue
to enable timesync andfalse
to disable timesync, both literal booleans.
- New parameter:
vmwaretools::params
- Moving back to
vmci.ko
- see discussion on GitHub Issue #14, huge thanks to Ryan McKern for the investigative work!
- Moving back to
- Readme
- Adding Ubuntu 13.04 to Unsupported Operating Systems
vmwaretools
- Now fails when run on Ubuntu 13.04 (Raring)
vmwaretools::kernel_upgrade
- Moving
creates
attribute to/lib/modules/${::kernelrelease}/kernel/drivers/scsi/vmw_pvscsi.ko
as suggested in bug #12
- Moving
vmwaretools_version
fact- Added "not installed" output if VMware Tools isn't installed
vmwaretools::kernel_upgrade
- New class: handles re-compiling VMware Tools following a kernel upgrade
vmwaretools::install::package
- Installing curl if download script is used, and adding
open-vm-dkms
to the list of purged packages - Made the
kernel-devel
package installation explicitly use the running kernel - pull request #8 by mattiasgeniar
- Installing curl if download script is used, and adding
vmwaretools
- New parameter:
prevent_downgrade
- will prevent downgrading if the version installed is newer than the version that would be deployed via Puppet (default:true
)
- New parameter:
templates/download.sh.erb
- Using awk path from
vmwaretools::params
in script - Using curl rather than wget - pull request #7 by mattiasgeniar
- Using awk path from
vmwaretools::install::exec
archive_location
replaced byarchive_url
vmwaretools
- Parameter Typo fixed
- Including new README format