There was a recent question that was posted internally looking for a way to automate the silent installation of VMware Tools for Linux guest operating systems which also required enabling additional VMware Tools features like VMware's Automatic Kernel Modules. Currently, there are two options of installing VMware Tools for Linux guests, the first is by using VMware Tools Operating Specific Packages (OSPs) which can be found here or you can be manually install VMware Tools if an OSP does not exist or if you prefer to install interactively.
The second approach is what we will be focusing on and specifically with an emphasis on Automation 🙂 Once the VMware Tools installer is extracted, you will find a Perl script that does the actual magic called vmware-install.pl
The VMware Tools installer supports two modes of installation:
- Interactive
- Unattended with VMware defaults
The second option sounds like what we want but the problem is that the defaults have already been pre-selected by VMware and they can not be changed as far as I know. To use this option, you would specify the following:
./vmware-install.pl -d default
Here is a complete working snippet that I shared awhile back which will completely automate the installation of VMware Tools using the "default" method and is the quickest way to install VMware Tools for Linux guestOSes:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mkdir -p /mnt/vmw-tools && mount /dev/cdrom /mnt/vmw-tools && VMW_TOOLS=$(ls /mnt/vmw-tools/ | grep .gz) && cp -f /mnt/vmw-tools/${VMW_TOOLS} /tmp/ && umount /mnt/vmw-tools && rmdir /mnt/vmw-tools && tar -zxvf /tmp/${VMW_TOOLS} -C /tmp/ && cd /tmp/vmware-tools-distrib/ && ./vmware-install.pl -d default && rm -rf vmware-tools-distrib/ && rm -f /tmp/${VMW_TOOLS} && cd ~ |
The solution above is great if you are okay with the defaults. However, if you wish to change any of the default settings such as the location of the installation or enabling additional VMware Tools capabilities, it is definitely not ideal. Unfortunately, as mentioned earlier these are the only two supported installation mechanisms. Now, just imagine you need to roll out a custom installation of VMware Tools and having to perform the installation manually, there must be a way right?
Luckily, there is and this is actually a trick that I have used for many installers which require some user interaction. Below is an updated script of performing a silent installation of VMware Tools, but instead of using the defaults I have created an "answer" file which contains the input that you would manually enter and redirecting that into the installer. In this particular case, I have left the system defaults in terms of the paths and documentation of where VMware Tools will be installed and focus on enabling additional capabilities such as VMware automatic kernel modules.
The last four lines in the answer file (no, no, yes, no) maps to the following VMware Tools capabilities:
- VMware Host-Guest Filesystem
- vmblock enables dragging or copying files
- VMware automatic kernel modules
- Guest Authentication
You can change these based on your requirements but the current script only enables "VMware automatic kernel modules". I think a great feature enhancement to the VMware Tools installer is the ability to accept a silent configuration file, so that this use case can be better supported and more resilient in case additional options are added.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Create temp workign directory | |
mkdir -p /mnt/vmw-tools | |
# Mount VMware Tools ISO | |
mount /dev/cdrom /mnt/vmw-tools | |
# Retrieve the VMware Tools package name from the directory | |
VMW_TOOLS=$(ls /mnt/vmw-tools/ | grep .gz) | |
# Copy VMware Tools package to /tmp | |
cp -f /mnt/vmw-tools/${VMW_TOOLS} /tmp/ | |
# Unmount the VMware Tools ISO | |
umount /mnt/vmw-tools | |
# Clean up and remove temp mount directory | |
rmdir /mnt/vmw-tools | |
# Extract VMware Tools installer to /tmp | |
tar -zxvf /tmp/${VMW_TOOLS} -C /tmp/ | |
# Change into VMware Tools installer directory | |
cd /tmp/vmware-tools-distrib/ | |
# Create silent answer file for VMware Tools Installer | |
# If you wish to change which Kernel modules get installed | |
# The last four entries (no,no,yes,no) map to the following: | |
# VMware Host-Guest Filesystem | |
# vmblock enables dragging or copying files | |
# VMware automatic kernel modules | |
# Guest Authentication | |
# and you can also change the other params as well | |
cat > /tmp/answer << __ANSWER__ | |
yes | |
/usr/bin | |
/etc | |
/etc/init.d | |
/usr/sbin | |
/usr/lib/vmware-tools | |
yes | |
/usr/share/doc/vmware-tools | |
yes | |
yes | |
no | |
no | |
yes | |
no | |
__ANSWER__ | |
# Install VMware Tools and redirecting the silent instlal file | |
./vmware-install.pl < /tmp/answer | |
# Final clean up | |
rm -rf vmware-tools-distrib/ | |
rm -f /tmp/${VMW_TOOLS} | |
cd ~ |