Skip to content

Latest commit

 

History

History
180 lines (122 loc) · 4.95 KB

README.md

File metadata and controls

180 lines (122 loc) · 4.95 KB

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: https://github.com/rightscale-cookbooks/machine_tag

Requirements

  • 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

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

RightLink 6

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.

RightLink 10

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.

Usage

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')

Attributes

  • 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.

Recipes

default

Installs the machine_tag gem.

Resource/Provider

machine_tag

A resource to create and delete machine_tags on a VM.

Actions

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

Attributes

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

Helpers

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

tag_search(node, query, options = {})

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

Parameters

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

tag_list(node)

Returns a tag hash for the current server.

Parameters

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

Author

Author:: RightScale, Inc. ([email protected])