Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms


machine_tag (13) Versions 1.0.8

Installs/Configures machine_tag

cookbook 'machine_tag', '= 1.0.8'
cookbook 'machine_tag', '= 1.0.8', :supermarket
knife supermarket install machine_tag
knife supermarket download machine_tag
Quality 100%

machine_tag cookbook

Cookbook Release Build Status

This cookbook provides a machine_tag resource that can create, delete, list, and search machine tags in the Vagrant and RightScale environments.

Github Repository:


  • machine_tag gem which provides a library for using machine tags.
  • Requires Ruby 1.9 or higher
  • Platform
    • Ubuntu 12.04
    • CentOS 6

Vagrant Environment

For using this resource in a Vagrant environment install the following

  • Vagrant 1.2+
  • Bindler

This resource detects a Vagrant environment when the node['cloud']['provider'] is set to vagrant. This value is set automatically when the vagrant-ohai plugin is installed. For test-kitchen tests, we set this value in the .kitchen.yml file.

Bindler is used to manage Vagrant plugins required by this resource. See Bindler README on how to setup bindler.

The Vagrant plugins required by this resource to work on a Vagrant environment is put inside plugins.json file in the root of the repository. Once Bindler is set up, install these plugins by running

vagrant plugin bundle

Set a unique hostname for each VM in your Vagrantfile. To set this use the config.vm.host_name configuration key:

master.vm.host_name = "master"

See Vagrantfile for an example.

RightScale Environment

For using this resource in a RightScale Environment, the system must be a RightScale managed VM to have the required access to the rs_tag utility.


To create a machine_tag

machine_tag "namespace:predicate=value" do
  action :create

To delete a machine_tag

machine_tag "namespace:predicate=value" do
  action :delete

To list tags in the VM

class Chef::Recipe
  include Chef::MachineTagHelper

tags = tag_list(node)

To search tags in the VM

class Chef::Recipe
  include Chef::MachineTagHelper

tags = tag_search(node, 'test:tag=foo foo:bar=* some:tag')


  • node['machine_tag']['vagrant_tag_cache_dir'] - path to store the tag data for each server. Only used in Vagrant environments. This should match a config.vm.synced_folder entry in your Vagrantfile for tag_search() to work across VMs. See the Vagrantfile for an example.



Installs the machine_tag gem.



A resource to create and delete machine_tags on a VM.


Actions Description Default
:create Creates a new machine_tag on the VM yes
:delete Deletes a machine_tag from the VM


Attribute Description Default Value Required
name Name of the machine tag yes


This resource also provides two helper methods for listing and searching tags on a VM. To use them in a recipe have the following code block in the recipe

class Chef::Recipe
  include Chef::MachineTagHelper

tag_search(node, query, options = {})

Returns an array of tag hashes for all servers in your environment that matches the query.


Name Description Type
node the environment (Vagrant or RightScale) Chef::Node
query the tags to be queried. If this is passed as a String the tags must be space delimited. String, Array
options optional parameters to the query Hash


Returns a tag hash for the current server.


Name Description Type
node the environment (Vagrant or RightScale) Chef::Node


Author:: RightScale, Inc. (

machine_tag Cookbook CHANGELOG

This file is used to list changes made in each version of the machine_tag cookbook.


  • Network issues can cause rs_tag command to fail. Retries are done if command is initially unsuccessful.


  • Add testing for support of Ubuntu 14.04, CentOS 7.0, and RedHat Enterprise Linux 7.0.


  • Update tag validation regex. (#13)
  • Update strainer gem version to 3.x


  • Update to test-kitchen 1.2.1 and use the new concurrency flag. (#12)
  • Make the Vagrant tag support act like RightScale where machine tags are only unique by namespace and predicate. (#14)


  • Chef::MachineTag.factory now checks for existence of rs_tag utility to detect RightScale environment. (#10)
  • Document Ruby 1.9 support. (#7)
  • Update tag_search documentation in README (#9)



  • Updated README
  • Fix the already initialized constants warning
  • Updated Vagrantfile to work with Vagrant 1.3.x


  • Fix for packaged cookbook on Chef community site (Pull Request #3)


  • Initial release

<!--- The following link definition list is generated by PimpMyChangelog --->

Foodcritic Metric

1.0.8 passed this metric