VMware vSphere 7 U2 has introduced a new feature that has not been promoted much, but has some essential functions that works not only for distributing VMware Tools across your cluster.
In fact, the GuestStorec. And that’s the main reason why this Framework has been designed.
The content which is can make sure that the distributed content is always consistent and correctly distributed across your whole environment.
Once you configure GuestStore on an ESXi host (it’s per-host config), the virtual machines on the host can start accessing the GuestStore content immediately.
VMware GuestStore architecture looks like this
VMware GuestStore Architecture
What else outside VMware Tools can GuestStore be used for?
The GuestStore content can distribute:
- Scripts – Scripts provide by VMware or custom scripts
- Configuration Files – Configuration files of VMware Tools or VMware agents
- Binary Files – Binary files that has updates for VMware tools or VMware agents
- Custom Content – you can also distribute your own custom scripts, agents and config files
VMware GuestStore Requirements and Limits
VMware requires the following concerning GuestStore:
- ESXi host must be ESXi 7.0 U2 and later
- Windows VMs only as Guest OS must be running on the VMs
- VMware Tools must be version 11.2.5 or higher in order for this feature to work
- Files that will be distributed from the GuestStore cannot be larger than 512 Mb.
How To configure GuestStore by using ESX CLI
It is possible for you to manage the config via ESXCLI commands to set the URL to the GuestStore repository and verify the configuration by retrieving the current settings.
To verify the current config:
1 |
<em>esxcli system settings gueststore repository get</em> |
Verify the settings of your GuestStore Repository via CLI
How To Set the GuestStore repository URL – the steps
You should know that the URL have to point to a datastore path where GuestStore content is stored. The datastore path must be accessible to the ESXi host.
If you want to set up a common GuestStore repository across multiple ESXi hosts, you should use a shared datastore path, which makes sense to me. Simply use a datastore that is connected to multiple ESXi hosts within your environment. Like this, all VMs running on those hosts will be able to reach to the GuestStore repository for updates.
So at first, I sumply created a folder (via datastore browser and vSphere web client) on my shared datastore. The shared datastore’s name is called StarWind as it provides me a shared datastore for my 2-node cluster.
Create a new folder on your shared datastore
You’ll need to find the UUID of your datastore via the ESXi command line, enter:
1 |
esxcli storage filesystem list |
Find the UUID of your shared datastore
Now we’ll use that UIUD within our command:
1 |
<em>esxcli system settings gueststore repository set --url "<datastore_path>"</em> |
My example for the datastore path.
1 |
<em>esxcli system settings gueststore repository set --url “ds:///vmfs/volumes/619ce961-5bee5595-5741-000c293eb311/vmtools”</em> |
Setting shared GuestStore repository on my ESXi host
Now we can check and retrieve the GuestStore repository URL.
1 |
<em>esxcli system settings gueststore repository get</em> |
And as you can see, you receive the currently set URL in the output.
URL: <datastore_path>
Find out if the GuestStore repository is set or not
How to clear the repository:
If you want to change and start again, there is a command that clean everything out.
Clear the GuestStore repository URL setting.
1 |
<em>esxcli system settings gueststore repository set --url ""</em> |
And again, if you want to check the value of the repository, you can do so.
Retrieve the GuestStore repository URL.
1 |
<em>esxcli system settings gueststore repository get</em> |
You receive the URL information in the output.
URL: <not set>
How to clear the settings on GuestStore
We’re done.
Configure GlobalConf
You can distribute VMware Tools configuration file for many VMs within your environment, from your GuestStore repository.
The GlobalConf feature automatically updates VMware Tools configuration with the configuration available in the GuestStore repository. The GlobalConf feature is disabled by default.
When enabled, it allows vSphere administrators to distribute global VMware Tools configuration across multiple virtual machines in the vSphere environment.
By default, VMware Tools configuration is fetched from GuestStore repository
- For Windows: “/vmware/configurations/vmtools/windows/tools.conf”
- For Linux: “/vmware/configurations/vmtools/linux/tools.conf”
This can be overridden by a setting in local VMware Tools configuration inside the guest.
The GlobalConf module in VMware Tools checks the GuestStore repository every 60 mins by default. Inside the virtual machine, the guest administrator can manually edit the tools.conf file to configure various settings related to the GlobalConf module.
GlobalConf has the following configuration settings:
You can find the file within the “tools.conf” file on your VM.
You can use VMware Tools Toolbox command line utility.
You can check the globalconf status for example:
1 |
VMwareToolboxCmd.exe globalconf status |
Enable GlobalConf via tools.conf file
[globalconf]
enabled=true: Enables the module.
resource=/path/to/tools/conf/in/gueststore:
Default value is “/vmware/configurations/vmtools/windows/tools.conf” for Windows GOSes and “/vmware/configurations/vmtools/linux/tools.conf” for Linux GOSes.
Final Words
Using GuestStore feature together with Globalconf to manage upgrade and verification of upgrades of your VMware tools from a central repository is a step forward for VMware. It is a very convenient way of maintaining VMware tools up to data from one central location.
The GlobalConf module in VMware Tools checks the GuestStore repository every 60 mins by default, but you can change it to as low as 15 minutes if you like. Inside the virtual machine, the admin can manually edit the tools.conf file to configure various settings related to the GlobalConf module, not only the upgrade check. Have a look at further details in the latest VMware tools documentation here.