I'd like to put together a small set of reports and testimonials from Puppet users who have implemented this module within their infrastructure.
If you'd like to get involved, please reach out via email [email protected], Twitter @craigwatson1987 or Google+.
- 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
This module manages the installation and upgrade of VMware Tools via the source code tarballs distributed by VMware.
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.
- 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.
- Perl must be installed on the target systems in order to run the VMware Tools installer - installation of Perl is not handled by the module.
- Pluginsync must be enabled, due to the
vmwaretools_version
custom fact distributed with this module. If the module cannot access the fact, the Puppet run will fail. - As of version 1.0.0, the module requires the PuppetLabs stdlib module module to be available within your Puppet code.
To accept default class parameters:
include vmwaretools
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',
}
- Detects any existing VMware Tools installations and, if found, reports the installed version.
- Detects the underlying ESX version from
dmidecode
, thanks to François Deppierraz for the pull request!
- Deploys the working directory in which the module downloads and extracts the archive, and runs the Perl installer.
- Declares all
exec
commands run by the module.
- Handles installing the required tools to compile and install the archive, as well as purging OSP and open-source VMware Tools packages.
- NOTE: Due to bugs in Puppet's
yum
provider, the OSP/open-source packages are only marked asabsent
, notpurged
.
- Handles the archive distribution (either places a download script or the archive).
- O/S-specific and module configuration (e.g. paths to binaries and a boolean variable to control file deployment)
- Executes
vmware-config-tools.pl -d
if thevmci.ko
module doesn't exist for the running kernel
- Handles time synchronisation between the virtual machine and host
- 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
- Ubuntu 13.04 - see VMware KB2050666 and bug #12
- Copyright (C) 2013 Craig Watson - [email protected]
- VMware Tools fact by janorn
- Distributed under the terms of the Apache License v2.0 - see LICENSE file for details.
- Please note that the module was licensed under the terms of the GNU General Public License v3 until commit fea91b58241481fc3fc4aa0e02996cc9ef0f131e
- Further contributions and testing reports are extremely welcome - please submit a pull request or issue on GitHub
- Testing environment kindly donated by Sleek Networks Ltd (An Adapt Company)