Chef cookbook to install Kong: An open-source management layer for APIs, delivering high performance and reliability.
Branch: master
Clone or download
Latest commit 12e4c0f Nov 2, 2017
Type Name Latest commit message Commit time
Failed to load latest commit information.
attributes Add some Java overrides for int test. Oct 26, 2017
libraries Fix for 0.9.x versions Feb 2, 2017
recipes Fix pid file for versions >= 0.9.0 Nov 1, 2017
templates/default Have template generate config. Oct 24, 2017
.gitignore .gitignore update Feb 6, 2017
.inch.yml Add support for Ubuntu 16.04 (Xenial) Mar 17, 2017
.kitchen.yml Revert "Add some Java overrides for int tests. Add suite in kitchen f… Oct 26, 2017
.yardopts Initial commit: First working version Aug 17, 2015
Berksfile Use 1.2.0 relase of serf cookbook Oct 25, 2017 Initial commit: First working version Aug 17, 2015
Guardfile Initial commit: First working version Aug 17, 2015
LICENSE Add serf to requirements Oct 30, 2017
Rakefile Rakefile: Run docker by default in the CI Sep 10, 2015 Improve testing documentation Mar 30, 2016
circle.yml CircleCI: Ruby 2.4 Aug 29, 2017
metadata.rb Push version to 6.0 Nov 1, 2017

Kong Cookbook

GitHub License

Cookbook Version Dependency Status Code Climate Build Status Circle CI Coverage Status Inline docs

Chef cookbook to install Kong: An open-source management layer for APIs, delivering high performance and reliability.


Supported Platforms

This cookbook has been tested on the following platforms:

  • Amazon Linux
  • CentOS
  • Debian
  • Ubuntu

Please, let me know if you use it successfully on any other platform.

Required Cookbooks

Required Applications

  • Chef 12 or higher.
  • Ruby 2.2 or higher.


Attribute Default Description
node['kong']['version'] '0.8.2' Kong version to install.
node['kong']['mirror'] calculated Kong URL path without including the file name.
node['kong']['kong.yml'] calculated Kong YAML configuration options. See the default configuration values.
node['kong']['kong.conf'] calculated Kong .conf configuration options for versions 0.9.0 and above. See the default configuration values.
node['kong']['manage_ssl_certificate'] calculated Whether to manage HTTPS certificate creation using the ssl_certificate cookbook.
node['kong']['manage_cassandra'] calculated Whether to manage Cassandra server installation using the cassandra-dse cookbook.
node['kong']['wait_for_cassandra'] 300 Time in seconds to wait for Cassandra to start. Only used with manage_cassandra enabled.
node['kong']['pid_file'] calculated Kong nginx PID file path.
node['kong']['kong.yml']['template']['cookbook'] 'kong' Kong template cookbook.

Platform Support Related Attributes

Some cookbook attributes are used internally to support the different platforms. Surely you want to change them if you want to support new platforms or want to improve the support of some platforms already supported.

Attribute Default Description
node['kong']['required_packages'] calculated Some packages required by Kong.
node['kong']['package_file'] calculated Kong package file name.
node['kong']['package_checksum'] calculated Kong package file checksum.



Installs and configures Kong.


Installs and configures Cassandra.

Usage Examples

Including in a Cookbook Recipe

You can simply include it in a recipe:

include_recipe 'kong'

Don't forget to include the kong cookbook as a dependency in the metadata.

# metadata.rb
# [...]

depends 'kong', '~> 0.1.0'

Including in the Run List

Another alternative is to include the default recipe in your Run List:

  "name": "",
  "[...]": "[...]",
  "run_list": [

Configuring the Cassandra Server Address

It is highly recommended to use an external Cassandra server with this cookbook.

For example:

node.default['kong']['kong.yml']['cassandra']['contact_points'] =

include_recipe 'kong'

Or for kong.conf:

node.default['kong']['kong.conf']['cassandra_contact_points'] =

include_recipe 'kong'

If you want to use the local Cassandra server installed by this cookbook, it is recommended to set the following attributes:

node.default['cassandra']['config']['cluster_name'] = # ...
node.default['cassandra']['install_method'] = # ...
# node.default['cassandra'][...]
# ...

include_recipe 'kong'

See the cassandra-dse cookbook documentation.

By default, this cookbook installs a local Cassandra server if the 'hosts' attribute is not set or includes 'localhost'. You can use the node['kong']['manage_cassandra'] attribute to force this behavior.

The HTTPS Certificate

This cookbook uses the ssl_certificate cookbook to create the HTTPS certificate. The namespace used is node['kong']. For example:

node.default['kong']['common_name'] = ''
include_recipe 'kong'

See the ssl_certificate namespace documentation for more information.

You can disable the SSL certificate creation by setting the node['kong']['kong.yml']['ssl_cert_path'] and node['kong']['kong.yml']['ssl_key_path'] attributes. You can use the node['kong']['manage_ssl_certificate'] attribute to force this behavior.




Please do not hesitate to open an issue with any questions or problems.




License and Author

Author: Xabier de Zuazo (
Contributor: Mark Keisler
Contributor: Alexander Vynnyk
Contributor: Igor Moroz
Contributor: Yves Jans
Copyright: Copyright (c) 2015-2016, Xabier de Zuazo
License: Apache License, Version 2.0
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.