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

The exabgp cookbook has been deprecated

Author provided reason for deprecation:

The exabgp cookbook has been deprecated and is no longer being maintained by its authors. Use of the exabgp cookbook is no longer recommended.


exabgp (12) Versions 3.2.3

Installs/Configures exabgp

cookbook 'exabgp', '~> 3.2.3', :supermarket
cookbook 'exabgp', '~> 3.2.3'
knife supermarket install exabgp
knife supermarket download exabgp
Quality 17%

exabgp cookbook

Installs and configures ExaBGP
the swiss-army knife of networking.


After careful consideration, we are making this the last release of the ExaBGP cookbook as we found implementing implementing simple package, service, and template resources in our internal cookbooks easier and less time consuming than building a complex set of wrappers around ExaBGP's configuration. Supporting pip and source installations is also a lot more maintenance cost than value for very special use cases.

We are leaving this cookbook up for adoption; If anyone wishes to continue supporting it email

For a basic example of installing and setting up a package based ExaBGP, here is one:

The Chef recipe

package 'exabgp'

template '/etc/exabgp/exabgp.conf' do
  user 'exabgp'
  group 'exabgp'
  variables(my_as: node['mycorp']['as_number'])
  notifies :reload, 'service[exabgp]'

cookbook_file '/etc/exabgp/' do
  user 'exabgp'
  group 'exabgp'
  mode '755'
  notifies :reload, 'service[exabgp]'

service 'exabgp' do
  supports reload: true, status: true
  action :nothing

The exabgp.conf template

process announce-routes {
    run ./;

neighbor {
    local-as <%= @my_as %>;
    peer-as 1;
    group-updates false;

    capability {

    api {
        processes [ announce-routes ];

The script:


# ignore Control C
# if the user ^C exabgp we will get that signal too, ignore it and let exabgp send us a SIGTERM
trap '' SIGINT

# command and watchdog name are case sensitive

while `true`;

# Let give exabgp the time to setup the BGP session :)
# But we do not have too, exabgp will record the changes and update the routes once up otherwise

sleep 10

# without name exabgp will use the name of the service as watchdog name
echo "withdraw watchdog"
sleep 5

# specify a watchdog name (which may be the same or different each time)
echo "withdraw watchdog watchdog-one"
sleep 5

echo "announce watchdog"
sleep 5

echo "announce watchdog watchdog-one"
sleep 5

# we have no route with that watchdog but it does not matter, we could have after a configuration reload

echo "announce watchdog watchdog-two"
echo "withdraw watchdog watchdog-two"


Supported Chef and Platforms

  • Chef 12.6 and newer

  • Ubuntu 14.04 and newer


  • poise-python (for package installation)
  • git (for source installation)


Attribute Description Default Value
node['exabgp']['package_version'] Version of the python package to install 3.4.19
node['exabgp']['bin_path'] Location of the ExaBGP binary, only set on source installations /usr/sec/exabgp/sbin/exabgp
node['exabgp']['config_path'] Location of the ExaBGP configuration file, only set when a resource with instance set to false is configured /etc/exabgp/exabgp.conf
node['exabgp']['source_url'] URL to the git repository for source installtions
node['exabgp']['source_version'] git ref of the version to install master


  • exabgp::default - Intentionally left blank, see resource usage below



The exabgp resource installs and configures ExaBGP. It does not create
an ExaBGP service. You will need to handle this separately via your service
resource of choice. If you want an example of such a service setup, look at
the test/cookbooks folder for some example recipes.


  • :install – Install and configure ExaBGP. (default)


  • instance – Name of the ExaBGP installation. If different than the name parameter of the resource. If it is set to false, it will not use the name parameter when naming the instance. This is for backward compatibility with the older version of this cookbook where you may be running an install from /etc/exabgp.
  • package_version – Which version of the python package to install, defaults to the node['exabgp']['package_version'] attribute.
  • cookbook – Which cookbook to look for the exabgp.conf.erb template
  • variables – Pass template variables in much like a template resource
  • install_type – Supports three type :package (distribution package), :pip (python package) and :source installations. Defaults to :package . If you'd like to support more installation options, send in a pull request. :heart:


# Installs into /etc/exabgp-anycast
exabgp 'anycast'

# Backward compatible with the previous exabgp cookbook
# Installs to /etc/exabgp
exabgp 'anycast' do
  instance false

# Use your own template from templates/default/exabgp.conf.erb
exabgp 'anycast' do
  cookbook 'mycorp-exabgp'

# Setup a service
service 'exabgp'

License and Authors

Copyright:: 2013-2018 DNSimple Corp.

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.

Dependent cookbooks

poise-python >= 0.0.0

Contingent cookbooks

There are no cookbooks that are contingent upon this one.

Change Log

v3.2.3 (2018-09-12)

Full Changelog

Merged pull requests:

  • Do not update exabgp resource every chef run #25 (Annih)

v3.2.2 (2018-08-09)

Full Changelog

v3.2.1 (2018-08-09)

Full Changelog

Merged pull requests:

v3.2.0 (2018-07-18)

Full Changelog

Implemented enhancements:

v3.1.1 (2018-04-16)

Full Changelog

Implemented enhancements:

  • ExaBGP rpm install #15

Merged pull requests:

v3.1.0 (2018-02-12)

Full Changelog

Merged pull requests:

v3.0.0 (2017-09-06)

Full Changelog

Merged pull requests:

v2.1.0 (2017-08-28)

Full Changelog

Fixed bugs:

v2.0.1 (2017-08-28)

Full Changelog

2.0.0 (2016-02-24)

Full Changelog

Implemented enhancements:

1.1.1 (2015-06-18)

Full Changelog

1.1.0 (2015-06-18)

Full Changelog

Closed issues:

  • Update installation recipe to use release artifacts #2

Merged pull requests:

  • Fix route_ipv4 attribute for template #7 (ton31337)
  • Add local-preference attribute to have not ECMP if needed #6 (ton31337)
  • Merge route and prefix attributes #5 (ton31337)

1.0.2 (2015-02-21)

Full Changelog

1.0.1 (2015-01-23)

Full Changelog

1.0.0 (2015-01-23)

Full Changelog

0.10.0 (2015-01-19)

Full Changelog

0.9.0 (2015-01-19)

Closed issues:

  • IPv6 support #1

* This Change Log was automatically generated by github_changelog_generator

Collaborator Number Metric

3.2.3 failed this metric

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

Contributing File Metric

3.2.3 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

Cookstyle Metric

3.2.3 failed this metric

Chef/Deprecations/ResourceUsesOnlyResourceName: Starting with Chef Infra Client 16, using `resource_name` without also using `provides` will result in resource failures. Make sure to use both `resource_name` and `provides` to change the name of the resource. You can also omit `resource_name` entirely if the value set matches the name Chef Infra Client automatically assigns based on COOKBOOKNAME_FILENAME. ( exabgp/resources/exabgp.rb: 1
Chef/Deprecations/ResourceWithoutUnifiedTrue: Set `unified_mode true` in Chef Infra Client 15.3+ custom resources to ensure they work correctly in Chef Infra Client 18 (April 2022) when Unified Mode becomes the default. ( exabgp/resources/exabgp.rb: 1

Run with Cookstyle Version 7.32.1 with cops Chef/Deprecations,Chef/Correctness,Chef/Sharing,Chef/RedundantCode,Chef/Modernize,Chef/Security,InSpec/Deprecations

No Binaries Metric

3.2.3 passed this metric

Testing File Metric

3.2.3 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

3.2.3 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