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

RSS

etcd (93) Versions 4.0.0

Installs and configures etcd

Policyfile
Berkshelf
Knife
cookbook 'etcd', '= 4.0.0', :supermarket
cookbook 'etcd', '= 4.0.0'
knife supermarket install etcd
knife supermarket download etcd
README
Dependencies
Changelog
Quality 100%

Etcd Cookbook

Build Status Cookbook Version

The Etcd Cookbook is a library cookbook that provides custom resources for use in recipes.

Scope

This cookbook is concerned with the Etcd distributed key/value store as distributed by CoreOS, Inc.

Requirements

  • Chef 12.0.0 or higher. Chef 11 is NOT SUPPORTED, please do not open issues about it.
  • Network accessible web server hosting the etcd binary.

Platform Support

The following platforms have been tested with Test Kitchen. It will most likely work on other platforms as well

|--------------+-------+
|              | 2.3.7 |
|--------------+-------+
| debian-8     | X     |
|--------------+-------+
| centos-5     | X     |
|--------------+-------+
| centos-6     | X     |
|--------------+-------+
| centos-7     | X     |
|--------------+-------+
| fedora       | X     |
|--------------+-------+
| ubuntu-12.04 | X     |
|--------------+-------+
| ubuntu-14.04 | X     |
|--------------+-------+
| ubuntu-16.04 | X     |
|--------------+-------+

Cookbook Dependencies

Usage

  • Add depends 'etcd', '~> 3.0' to your cookbook's metadata.rb
  • Use the resources shipped in cookbook in a recipe, the same way you'd use core Chef resources (file, template, directory, package, etc).
etcd_service 'etcd0' do
  advertise_client_urls 'http://127.0.0.1:2379,http://127.0.0.1:4001'
  listen_client_urls 'http://0.0.0.0:2379,http://0.0.0.0:4001'
  initial_advertise_peer_urls 'http://127.0.0.1:2380'
  listen_peer_urls 'http://0.0.0.0:2380'
  initial_cluster_token 'etcd-cluster-1'
  initial_cluster 'etcd0=http://127.0.0.1:2380,etcd1=http://127.0.0.1:3380,etcd2=http://127.0.0.1:4380'
  initial_cluster_state 'new'
  action :start
end

etcd_service 'etcd1' do
  advertise_client_urls 'http://127.0.0.1:3379,http://127.0.0.1:5001'
  listen_client_urls 'http://0.0.0.0:3379,http://0.0.0.0:5001'
  initial_advertise_peer_urls 'http://127.0.0.1:3380'
  listen_peer_urls 'http://0.0.0.0:3380'
  initial_cluster_token 'etcd-cluster-1'
  initial_cluster 'etcd0=http://127.0.0.1:2380,etcd1=http://127.0.0.1:3380,etcd2=http://127.0.0.1:4380'
  initial_cluster_state 'new'
  action :start
end

etcd_service 'etcd2' do
  advertise_client_urls 'http://127.0.0.1:4379,http://127.0.0.1:6001'
  listen_client_urls 'http://0.0.0.0:4379,http://0.0.0.0:6001'
  initial_advertise_peer_urls 'http://127.0.0.1:4380'
  listen_peer_urls 'http://0.0.0.0:4380'
  initial_cluster_token 'etcd-cluster-1'
  initial_cluster 'etcd0=http://127.0.0.1:2380,etcd1=http://127.0.0.1:3380,etcd2=http://127.0.0.1:4380'
  initial_cluster_state 'new'
  action :start
end

Test Cookbooks as Examples

The cookbooks ran under test-kitchen make excellent usage examples.

The test recipes are found at:

test/cookbooks/etcd_test/

Resources Overview

  • etcd_service: composite resource that uses etcd_installation and etcd_service_manager
  • etcd_installation: automatically selects an installation method
  • etcd_service_manager: automatically selects a service manager
  • etcd_key: manages keys in etcd
  • etcd_installation_binary: copies a pre-compiled etcd binary onto disk
  • etcd_installation_docker: pulls a docker image to the DOCKER_HOST
  • etcd_service_manager_execute: manage etcd daemon with Chef
  • etcd_service_manager_sysvinit: manage etcd daemon with a sysvinit script
  • etcd_service_manager_upstart: manage etcd daemon with upstart script
  • etcd_service_manager_systemd: manage etcd daemon with systemd unit files
  • etcd_service_manager_docker: starts a docker process on the DOCKER_HOST

Resources Details

etcd_installation

The etcd_installation resource auto-selects one of the below resources with the provider resolution system. Currently only the binary installation is available. Packages will be supported in the future versions.

Example

etcd_installation 'default' do
  action :create
end

etcd_installation_binary

The etcd_installation_binary resource copies the precompiled Go binary onto the disk. It exists to help run older Etcd versions. It should not be used in production, especially with devicemapper.

Example

etcd_installation_binary 'default' do
  version '2.3.7'
  source 'https://my.computers.biz/dist/etcd'
  checksum '90aff7364caa43932fd46974825af20e0ecb70fe7e01981e2d3a496106f147e7'
  action :create
end

etcd_installation_docker

The etcd_installation_docker resource uses the docker_image resource to pull an image to the DOCKER_HOST.

Properties

  • repo - The image name to pull. Defaults to 'quay.io/coreos/etcd'
  • tag - The image tag to pull.
  • version - String used to calculate tag string when tag is ommited. Defaults to '2.3.7'

etcd_service_manager

The etcd_service_manager resource auto-selects one of the below resources with the provider resolution system. The etcd_service family all share a common set of properties, which are listed under the etcd_service composite resource.

Example

etcd_service_manager 'default' do
  action :start
end

etcd_service_manager_execute

Example

etcd_service_manager_execute 'default' do
  action :start
end

etcd_service_manager_sysvinit

Example

etcd_service_manager_sysvinit 'default' do
  action :stop
end

etcd_service_manager_upstart

Example

etcd_service_manager_upstart 'default' do
  action :start
end

etcd_service_manager_systemd

Example

etcd_service_manager_systemd 'default' do
  action :start
end

etcd_service_manager_docker

Example

etcd_service_manager_docker 'default' do
  action :start
end

properties

  • repo - defaults to 'quay.io/coreos/etcd'
  • tag - default calculated from version
  • version - defaults to '2.3.7',
  • container_name - defaults to resource name
  • port - defaults to ['2379/tcp4:2379', '4001/tcp4:4001']

etcd_service

The etcd_service: resource is a composite resource that uses etcd_installation and etcd_service_manager resources.

  • The :create action uses an etcd_installation
  • The :delete action uses anetcd_installation
  • The :start action uses an etcd_service_manager
  • The :stop action uses an etcd_service_manager

The service management strategy for the host platform is dynamically chosen based on platform, but can be overridden.

Properties

The etcd_service resource property list corresponds to the options found in

Etcd Configuration Flags documentation

Member flags
  • source
  • node_name
  • data_dir
  • wal_dir
  • snapshot_count snapshot to disk.
  • heartbeat_interval
  • election_timeout
  • listen_peer_urls
  • listen_client_urls
  • max_snapshots
  • max_wals
  • cors
Clustering Flags
  • initial
  • initial_advertise_peer_urls
  • initial_cluster
  • initial_cluster_state
  • initial_cluster_token
  • advertise_client_urls
  • discovery
  • discovery_srv
  • discovery_fallback
  • discovery_proxy
Proxy Flags
  • proxy
  • proxy_failure_wait
  • proxy_refresh_interval
  • proxy_dial_timeout
  • proxy_write_timeout
  • proxy_read_timeout
Security Flags
  • cert_file
  • key_file
  • client_cert_auth
  • trusted_ca_file
  • peer_cert_file
  • peer_key_file
  • peer_client_cert_auth
  • peer_trusted_ca_file
  • etcdctl_client_cert_file
  • etcdctl_client_key_file
Logging Flags
  • debug
Unsafe Flags
  • force_new_cluster
Experimental Flags
  • experimental_v3demo
Misc
  • http_proxy
  • https_proxy
  • no_proxy
  • auto_restart

etcd_key

The etcd_key resource sets, watches and deletes keys in etcd.

Actions

  • The :set action sets a key
  • The :delete action deletes a key
  • The :watch action waits for a key to update
Properties
  • key - The key name
  • value - The desired value
  • ttl - The ttl for the key (optional)
  • host - The hostname of the etcd server, defaults to 127.0.0.1
  • port - The port that etcd is listening on, defaults to 2379

Examples

etcd_key "/test" do
  value "a_test_value"
  action :set
end

License and Author

Original Author | Jesse Nelson

Contributor | Soulou

Contributor | Aaron O'Mullan

Contributor | Anthony Scalisi

Contributor | Robert Coleman

Contributor | James Gregory

Contributor | Sean OMeara

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

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

etcd Cookbook CHANGELOG

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

4.0.0

  • Install etcd 2.3.7 by default
  • Install tar to ensure we can decompress the etcd package
  • Replace testing of Ubuntu 15.10 with 16.04
  • Fix testing in Test Kitchen using vagrant
  • Add a Gemfile with testing dependencies
  • Update the compat_resource dependency from 12.5 to 12.10 to bring in the latest fixes
  • Add chef_version metadata to the metadata.rb file

3.2.5

  • Added Redhat, Oracle Linux, and Scientific Linux to the metadata
  • Fixed issues_url and source_url in the metadata to point to the correct URL
  • Added license to the metadata
  • Updated Rakefile so testing tasks match other Chef cookbooks
  • Add maintainers files and Rake task to generate the markdown

3.2.4

  • Added support for Scientific / Oracle Linux 6.X
  • Fixed readme badges
  • Added a chefignore file
  • Add contributing and testing docs
  • Removed Ruby 2.2 via RVM install from the Travis CI runs

3.2.3

  • Retrying key operations

3.2.2

  • Using converge_if_changed in :set action

3.2.1

  • Adding etcd_key resource
  • Removing unused property previous_state
  • Adding desired_state: false to various properties

3.2.0

  • Adding etcd_key resource

3.1.6

  • Fix redirecting stderr to stdout in upstart manaager

3.1.5

  • Fix timeout pattern in systemd-wait-ready

3.1.4

  • Fixing up docker service manager tests

3.1.3

  • Fixing incorrectly named classes in service managers

3.1.2

  • Fixing wait-ready script to use etcdctl_cmd

3.1.1

  • Adding docker to etcd_service

3.1.0

  • Supporting run_user on service manager resources

3.0.0

  • New major version, non-backwards compatible with 2.x.x
  • Rewritten as Custom Resources
  • Defaulting to etcd version 2.2.2

2.2.2

  • update to etcd 0.4.6
  • adds debian support

2.2.1

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

2.2.0

  • 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

2.1.3

  • 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

2.1.2

  • 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

2.1.1

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

2.0.0

  • 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

1.3.5

  • 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

1.3.4

  • fix compile_time to use the right tarball path

1.3.3

  • Bump to etcd 1.2
  • Added source install recipe

1.3.1

  • default binding to node[:ipaddress]

1.2.4

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

1.2.3

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

1.2.2

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

1.2.1

  • 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

1.1.1

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

1.1.0

  • 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

Collaborator Number Metric
            

4.0.0 passed this metric

Foodcritic Metric
            

4.0.0 passed this metric