VMware {code} Community
rchoudhary
Contributor
Contributor

guestinfo vs machine.id variables for passing info in VM

I am trying to pass some configuration specs to a VM. These specs. would later be retrieved (with the help of vmtoolsd cmd)by the init services during booting of the VM.

Now i found two choices here:

1. Either I can set the VM specific info using guestinfo.<variable> . guestinfo supports multiple key/value pairs.

2. Or I set the info using machine.id . machine.id doesn't support multiple key/value pairs and you have to specify all the paramaters as a string:

machine.id = <string>

Cons of guestinfo:

1. These variables are not saved in the VM's .vmx file.

2. We can set these variables only when a VM is powered-on. Don't know the exact location where these variables are stored. but still we can retrieve these variables using vmtoolsd --cmd "info-get guestinfo.<variable>" only till VM is powered on. Once VM is powered off, these variables would get lost. So persistence is a problem.

machine.id:

1. This variable is saved in .vmx file and is persisted even during VM's reboot.

I really don't know when machine.id variable should be used. Is using this variable a safe option? Is this variable being used internally by the VM? Is this reserved for something or can i go ahead using this variable for setting some VM info.

Help on this would be really appreciated.

Reply
0 Kudos
2 Replies
botski
Contributor
Contributor

machine.id is custom for you to use (vmware itself doesn't use it).  If you want multiple key/value pairs, maybe put JSON in there?

machine.id = "{'IP':'192.168.1.6','Colour':'Yellow speckeld tangerine'}"

perl -e 'use JSON; eval(q[$j=from_json(`vmtoolsd --cmd machine.id.get`)]); use Data::Dumper;print Data::Dumper->Dump([$j],["%j"]);'

$%j = {

        'IP' => '192.168.1.6',

        'Colour' => 'Yellow speckeld tangerine'

      };

Reply
0 Kudos
Curumim
Contributor
Contributor

Old post but this may help.

I've been using a variable.

export OVF_ENV_FIXED_HACK=`cat /mutiline.txt`

/usr/sbin/vmtoolsd --cmd "info-set guestinfo.ovfenv $OVF_ENV_FIXED_HACK"

This one is a "cheat" to pass info to an ESXi, for properties that it expects from a VCenter, when there is none.

You may be able to pass multiple lines with "<" redirect as well, have not tested though.

For persistance, I added a few lines to call this script in the ifup scripts, BEFORE the network goes up, so that all I need is loaded. You can also add a service (calling the script) as requirement for other basic services.

Reply
0 Kudos