VMware Tags were introduced with vSphere 5.1, and replace the legacy Custom Attributes feature from earlier versions. Tags allow you to add valuable metadata to every object in your inventory, which makes them searchable and sortable by those tags. How can this be used, you ask? Well I’ll tell you how I use tags.
I use tags to control which backup a virtual machine is a part of, to control the settings that should be applied during the backup, to identify the priority of virtual machines for business continuity and disaster recovery purposes, to define the patch group the virtual machine is in, to identify server roles and installed applications, to create dynamic groups of machines in Turbonomic Operations Manager. One of the guys on my team even built a dynamic list of servers on our SharePoint site that allows us to see at a glance every server in our environment and filter it to find the information we need quickly.
What is a Category?
Categories allow you to group related tags together. When you define a category, you can also specify which object types its tags can be applied to and whether more than one tag in the category can be applied to an object.
What is a Tag?
A tag is a label that you can apply to objects in the vSphere inventory. When you create a tag, you assign that tag to a category.
Now that you know what a category and a tag are, how do you create them and make them useful?
Step 1: Create a Category
When creating a tag category, you must allowed vCenter Inventory Service.vCenter Inventory Service Tagging.Create Inventory Service Tag privilages on the root vCenter Server. To create a tag category:
- From the vSphere Web Client Home, click Tags.
- Click the Items tab and then click Categories.
- Click the New Category icon.
- Edit the category options.
Option Description Category Name The category name must be unique to the currently-selected vCenter Server system. Description You can provide text in the description to describe the purpose or usage of the category. Cardinality Select 1 tag per object to allow only one tag from this category to be applied to an object at any one time.
Use this option for categories whose tags are mutually exclusive. For example, a category called Priority with tags High, Medium, and Low should allow one tag per object, because an object should have only one priority.
Select Many tags per object to allow multiple tags from the category to be applied to an object at any one time.
Use this option for categories whose tags are not mutually exclusive.
After you have set the cardinality of a category, you can change the cardinality from 1 tag per object to Many tags per object, but not from Many tags per object to 1 tag per object.
Associable Object Select whether tags in this category can be assigned to all objects or only to a specific type of managed object, such as virtual machines or datastores.
After you have set the associable object types for a category, you can change a category that is associable with a single object type to be associable with all object types, but you cannot restrict a category that is associable to all object types to being associable to a single object type.
- Click OK.
Step 2: Create a Tag
When creating a tag, you must be allowed vCenter Inventory Service.vCenter Inventory Service Tagging.Create Inventory Service Tag privilages on the root vCenter Server. To create a tag:
- From the vSphere Web Client Home, click Tags.
- Click the Items tab and then click Tags.
- Click the New Tag icon.
- In the vCenter Server drop-down menu, select the vCenter Server instance on which to create this tag.
- In the Name text box, enter a name for the tag.
- (Optional) In the Description test box, enter a description for the tag.
- In the Category drop-down menu, select an existing category or create a new category.
If you select [New Category], the dialogue box expands to show the options for creating a category.
- Click OK.
Step 3: Assign a Tag to an Object
After you’ve created your tags, you can apply them as metadata to objects in the vSphere Web Client inventory. When assigning a tag, you must be allowed vCenter Inventory Service.vCenter Inventory Service Tagging.Create Inventory Service Tag privilages on the root vCenter Server. To assign a tag:
- Browse to the object in the vSphere Web Client inventory.
- Click the Manage tab and then click on Tags.
- Click the Assign Tag icon.
- (Optional) From the Categories drop-down menu, select a category to limit the tags displayed to tags from a specific category.
- Select a tag from the list.
- Click OK.
So you have a tag assigned to an inventory object, what can you do with tags?
- You can search for a specific tag to get a list of inventory objects with that tag.
- You can filter for a specific tag to only display inventory objects with that tag.
- You can use tagging to identify specific inventory objects in scripts.
Managing Categories and Tags with PowerCLI
One of the most useful things about tagging your environment is using those tags to manipulate objects in your inventory. Lets start simple.
If you want to return a list of all of the tags you’ve added to your environment:
If you want to list all of the virtual machines with the tag Test:
Get-VM -Tag "Test"
If you want to list all of the assigned tags for an entity:
Get-TagAssignment -Entity "ENTITY-NAME"
If you want to assign a tag to an object:
New-TagAssignment -Tag "Test" -Entity "TEST-VM01"
If you want to remove a tag from an object:
Remove-TagAssignment -Tag "Test" -Entity "TEST-VM01"
If you want to be prompted for each tag before you remove it:
Get-VM "TEST-VM01" |Get-TagAssignment |Remove-TagAssignment
If you want to look at all of the available commands PowerCLI offers for tags:
Get-Command -PSSnapin VMware.VimAutomation.Core *Tag*
Those are just a few examples to get you started. If you have important tags in your environment, I’d suggest you devise a way to automate adding those tags to new virtual machines. Tagging will ultimately make your life easier, and allow you to interface with a growing list of 1st and 3rd party applications, scripts and more.
Scott is an experienced professional and recognized leader specializing in the design and implementation of enterprise virtualization, enterprise storage, server infrastructures and operations. A self-starter able to work both independently and in a team-oriented environment, Scott has a proven ability to create and automate solutions to improve productivity, reliability and performance. Throughout his professional career, Scott has proven successes implementing technology and service improvement initiatives and has a demonstrated ability to think strategically about business, create technical definition around objectives in complex situations, develop solution strategies, motivate and mobilize resources, and deliver end-to-end technology solutions. Scott has achieved multiple industry recognized certifications in virtualization, networking, cloud, storage and other technologies, and is honored to be a VMware vExpert in 2018, 2019 and 2020.