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

Select Status


etcd (91) Versions 2.2.2

Installs and configures etcd

cookbook 'etcd', '= 2.2.2', :supermarket
cookbook 'etcd', '= 2.2.2'
knife supermarket install etcd
knife supermarket download etcd
Quality -%

Build Status
etcd cookbook - installs coreos/etcd on centos/ubuntu boxen

Supported Platforms

Centos/rhat 6+ & ubuntu with upstart


Name Description
default Install and setup the service
binary_install Installs the binary of etcd from github release tarballs
cluster Recipe to aide in the building of multi-node etcd clusters
compile_time Install and configure etcd during chef compile phase
source_install Compiles the binary of etcd from a specificed github repo/revision
_service Recipe used by default for setting up the service


attribute default setting description
default[:etcd][:install_method] binary Right now only binary and source are supported. In the future this will probably go away as there are actual distro packages
default[:etcd][:version] 0.3.0 The release versions to install. binary install will assemble a github url to grab this version
default[:etcd][:sha256] 726bd3.. The Sha256 hash of the tarball specified by the version or URL attribute
default[:etcd][:url] nil override the internal generated url to specify your own binary tarball. see the .kitchen.yml for example override
default[:etcd][:state_dir] /var/cache/etcd/state Where etcd will store its state
default[:etcd][:search_cook] 'etcd\:\:cluster' The cookbook that should be searched for on the nodes recipes to detect if it is also running etcd
default[:etcd][:trigger_restart] true Make etcd restart if the init config is updated
default[:etcd][:upstart][:start_on] started networking When to start the etcd service using upstart
default[:etcd][:upstart][:stop_on] shutdown When to stop the etcd service using upstart

These attributes control the startup/cmdline args for etcd:

attribute default setting description
default[:etcd][:name] nil The name etcd uses inthe cluster. By default we use the first available value from node[:fqdn], node[:hostname], or node[:name]. Set this to something else to override.
default[:etcd][:snapshot] true This is really important to get good memory usage. If you're running this in product, you probably want this set to true
default[:etcd][:seed_node] nil The seed node for initial cluster setup. This node will start as the master, but restarts will rejoin the raft cluster. This needs to be set when using cluster recipe otherwise the cluster will not initialize.
default[:etcd][:nodes] [] Array of hostnames in cluster. This provides an alternative method to using Chef's partial_search for specifying nodes in cluster (useful if using chef-solo)
default[:etcd][:addr] node.ipaddress:4001 address the adress that etcd uses publically. defaults to node.ipaddress:4001
default[:etcd][:peer_addr] node.ipaddress:7001 address to announce to peers specified as ip:port or ip when empty string it will set to node.ipaddress:7001
default[:etcd][:discovery] '' Discovery address/token see: for more info
default[:etcd][:env_scope] true Set the search in cluster recipe to restrict to nodes in the same environment
default[:etcd][:args] '' Extra arguments to pass to etcd when starting the service. if you specify something that is computed they will be passed twice. This is here to handle where you want to setup other things.


Default single instance single node:

Simply add etcd to your runlist


Setup a cluster

NOTE: setting node[:etcd][:addr] and [:etcd][:peer_addr] is important when using a cluster where nodes might have many adresses. Make sure they advertise an adress that is reachable by other members.

Using Seed node

In a role or wrapper cookbook setup the seed_node attribute and add the cluster recipe to each node in the cluster.
If you use a wrapper cookbook set node[:etcd][:search_cook] to the wrapper cookboks name


example wrapper can be seen here

Using Discovery

To use discovery simply goto and get a url then set node[:etd][:discovery] to that url. This can also be your own etcd instance and a key.

Then use etcd::cluster recipe to build out the cluster.

License and Author

Original Author Jesse Nelson
Contributor Soulou
Contributor Aaron O'Mullan
Contributor Anthony Scalisi
Contributor Robert Coleman
Contributor James Gregory
Copyright Copyright (c) 2013, Jesse Nelson

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.


  • update to etcd 0.4.6
  • adds debian support


  • update to etcd 0.4.5
  • Add centos 7 support
  • Support centos cloud images without tar
  • Dry out compile time recipe
  • Move to berks3


  • update to etcd 0.4.2
  • Removed node[:etcd][:local] No longer needed in new etcd. Etcd will default bind :4001 and :7001. The cookbook default is now to use node[:ipaddress] as the addr and peer_addr.
  • add auto-respawn instruction in upstart config file
  • Fix Gem deps in the ci build


  • add peer and peer_addr support / attributes
  • add name attribute and computation
  • fixup cmdline argument computation
  • ensure cluster members are always sorted
  • fix spec tests


  • fix bug in cluster recipe where Resolv was spelled wrong
  • fix kitchen test on cluster to pickup this issue.
  • add basic chefspec as well to ensure this sort of issue doesn't occur
  • fix bug with name attribute methods
  • fix searching for wrong recipe when using cluster recipe


  • update to etcd 0.3.0
  • Add support for new discovery mode
  • refactor common functions into library methods
  • Add specs
  • Use rubocop to replace tailor/cane
  • Fixup testing (add travis integration)


  • update to etcd 0.2.0
  • remove name_switch attribute. It was marked for deprication in 1.3
  • enable snapshotting by default
  • add optional local listener
  • support chef-solo
  • Add support of explicitely specifying a cluster's nodes


  • silence foodcritic by accessing attributes in a consistent manner,
  • trigger a restart when etcd conf is updated
  • include git if source install
  • metadata depends on git recipe
  • Update Documentation
  • Update contributors


  • fix compile_time to use the right tarball path


  • Bump to etcd 1.2
  • Added source install recipe


  • default binding to node[:ipaddress]


  • update to etcd 0.1.1 release
  • add compile_time recipe that does the whole bit in chef compile time


  • hotfix to add missing node[:etcd][:env_scope] attribute
  • bugfix: use node[:fqdn] instead of hostname when matching local machine name


  • add cluster recipe for setting up clusters of etcd nodes
  • re-add seed-node attribute


  • fix the startup args so it is easier to specify custom args
  • supports release version and current master on git
  • add in tests for both release and git versions of etcd


  • Make everything work with release 0.1.0 of etcd
  • fixup some syntax issues


  • move binary install to using coreos/etcd releases from github
  • for now the install locattion is fixed to /usr/local and links in /usr/local/bin
  • Use ark for managing tarballs
  • move bats tests to using etcdctl instead of curl

No quality metric results found