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


kvexpress (4) Versions 1.1.2

Installs/Configures kvexpress

cookbook 'kvexpress', '~> 1.1.2', :supermarket
cookbook 'kvexpress', '~> 1.1.2'
knife supermarket install kvexpress
knife supermarket download kvexpress
Quality 50%

kvexpress Cookbook

Installs kvexpress and provides an LWRP to use it from within Chef.


  • Consul
  • Ubuntu

If you're not using Ubuntu - you can download binary releases from Github.


default['kvexpress']['version'] = '1.9-1'
default['datadog']['url'] = ''

# Where to place the JSON watches.
default['consul']['config_dir'] = '/etc/consul.d'

# If you're using Consul ACLs to protect the 'kvexpress/' KV space and kvexpress::server_config:
# default['consul']['acl']['kvexpress'] = 'acl-goes-here'

# If you're using the Datadog API to send events and kvexpress::server_config:
# default['datadog']['api_key'] = 'api_key_goes_here'
# default['datadog']['application_key'] = 'app_key_goes_here'

# If you're using the Datadog agent:
default['kvexpress']['dogstatsd'] = false

Default Usage with a Consul watch

Use kvexpress::default to install the binary.

Use the LWRP to get configuration from Consul during a Chef run - here's an example kvexpress resource:

kvexpress 'consul_dns_hosts' do
  location '/etc/hosts.consul'
  compress true
  key 'hosts'
  mode '00644'
  command 'sudo pkill -HUP dnsmasq'
  notifies :reload, 'service[consul]', :delayed

During the Chef run, that resource will do the following:

  1. If there's no file at /etc/hosts.consul, it will try to download the key kvexpress/hosts/data and save it. It will fail silently if there's no key there - that's by design.
  2. It will create a Consul watch inside of /etc/consul.d and reload Consul so any updates are automatically replicated.
  3. If it saves a new file, it will send a SIGHUP to dnsmasq to reload it.

The Consul watch will look something like this:

  "watches": [
      "type": "key",
      "key": "/kvexpress/hosts/checksum",
      "handler": "kvexpress out -k hosts -f /etc/hosts.consul -l 10 -c 00644 -e 'sudo pkill -HUP dnsmasq' -z true"

If you don't use Chef - you can manually create the JSON needed for the Consul watch - use the above as a template.

Ad-Hoc Usage with Consul exec

Detailed here.


We love pull requests from anyone. Details are available here.

Code of Conduct

This project adheres to the Open Code of Conduct. By participating, you are expected to honor this code.

Dependent cookbooks

apt >= 0.0.0

Contingent cookbooks

There are no cookbooks that are contingent upon this one.

kvexpress CHANGELOG

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


  • [Darron Froese] - Initial release of kvexpress


  • [Darron Froese] - Added kvexpress_group for subgroup deployments.


  • [Darron Froese] - Public release.

Collaborator Number Metric

1.1.2 failed this metric

Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.

Contributing File Metric

1.1.2 passed this metric

Foodcritic Metric

1.1.2 passed this metric

No Binaries Metric

1.1.2 passed this metric

Testing File Metric

1.1.2 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of, and your repo must contain a file

Version Tag Metric

1.1.2 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of, and your repo must include a tag that matches this cookbook version number