This cookbook provides a machine_tag
resource that can create, delete, list, and
search machine tags in the Vagrant and RightScale environments.
Github Repository: https://github.com/rightscale-cookbooks/machine_tag
- machine_tag gem which provides a library for using machine tags.
- Requires Ruby 2.3.1
- Chef 12
- Requires RightLink 10 See cookbook version 1.0.9 for RightLink 6 support
- Platform
- Ubuntu 12.04, 14.04
- CentOS 6, 7
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.
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.
For using this resource in a RightScale Environment, the system must be a RightScale managed VM to have the required access to the right_api_client with proxy_mode for instance_tokens, the scope is now limited to operational instances in the same cloud as the VM making the call.
To create a machine_tag
machine_tag "namespace:predicate=value" do
action :create
end
To delete a machine_tag
machine_tag "namespace:predicate=value" do
action :delete
end
To list tags in the VM
class Chef::Recipe
include Chef::MachineTagHelper
end
tags = tag_list(node)
To search tags in the VM
class Chef::Recipe
include Chef::MachineTagHelper
end
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 aconfig.vm.synced_folder
entry in your Vagrantfile fortag_search()
to work across VMs. See theVagrantfile
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
end
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. ([email protected])