New Supermarket Announcements!

The Chef Community Cookbooks Survey

We would love to know more about what you think about community cookbooks and are runnning a quick survey. This will help us understand the role they play in your use of Chef. As a community member, you are invited to participate. You have a unique understanding of the role community cookbooks have in your work, and we value your opinion. Most people take about 5 minutes to complete this survey. There are no right or wrong answers; we are interested in your opinions.
Chef Community Cookbooks Survey

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 supermarket mailing list or in Gitter.

Select Supported Platforms

RSS

discovery (16) Versions 0.2.2

Installs/Configures the discovery library

Berkshelf
Librarian
Knife
cookbook 'discovery', '~> 0.2.2'
cookbook 'discovery', '~> 0.2.2'
knife cookbook site install discovery
knife cookbook site download discovery
README
Dependencies

Discovery Library

You can use the #search method to locate a role, optionally restricted to the environment.

It will fall back to searching the local nodes run_list for roles, so you can have less logic flow in recipes.

host = Discovery.search("any_role",
                        :node => node,
                        :environment_aware => false)

All

You can use the #all method to locate all nodes with a role, optionally restricted to the environment.

Additional options:

hosts = Discovery.all("base",
                      :node => node,
                      :environment_aware => true,
                      :empty_ok => false,
                      :remove_self => true,
                      :minimum_response_time => false)

ipaddress

You can use the #ipaddress method to automatically grab a prioritised ipaddress from a node.

The remote node will be compared against the same node, if any are in any clouds detected by ohai (and they are in the same cloud) the local ipv4 will be returned.

You can optionally supply a type argument specifying which ipaddress you would like.

ipaddress = Discovery.ipaddress(:remote_node => host,
                                :node => node)
local_ipv4 = Discovery.ipaddress(:remote_node => host,
                                 :node => node,
                                 :type => :local)
public_ipv4 = Discovery.ipaddress(:remote_node => host,
                                 :node => node,
                                 :type => :public)

Recipe DSL

Recipe DSL versions of the search, all and ipaddress methods are avaialble for the class; using them means you do not need to explicitly pass the node:

  • discovery_search
# Note omission of :node => node 
host = discovery_search("base",
                        :environment_aware => true,
                        :empty_ok => false,
                        :remove_self => true,
                        :minimum_response_time => false)
  • discovery_all
hosts = discovery_all(...)
  • discovery_ipaddress
host = discovery_search(...)
ipaddress = discovery_ipaddress(:remote_node = host)

Perform raw attribute searching instead of just restricting search to role names:

host = Discovery.search("attr_name:attr_value",
                        :node => node,
                        :environment_aware => false,
                        :raw_search => true)