cookbook 'exabgp', '= 3.2.2'
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.2 Follow2
Installs/Configures exabgp
cookbook 'exabgp', '= 3.2.2', :supermarket
knife supermarket install exabgp
knife supermarket download exabgp
exabgp cookbook
Installs and configures ExaBGP
the swiss-army knife of networking.
DEPRECATION NOTICE
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 support@dnsimple.com.
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]' end cookbook_file '/etc/exabgp/watchdog.sh' do user 'exabgp' group 'exabgp' mode '755' notifies :reload, 'service[exabgp]' end service 'exabgp' do supports reload: true, status: true action :nothing end
The exabgp.conf template
process announce-routes {
run ./watchdog.sh;
}
neighbor 127.0.0.1 {
router-id 1.2.3.4;
local-address 127.0.0.1;
local-as <%= @my_as %>;
peer-as 1;
group-updates false;
capability {
graceful-restart;
}
api {
processes [ announce-routes ];
}
}
The watchdog.sh script:
#!/bin/sh # 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`; do # 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" done
Supported Chef and Platforms
Chef 12.6 and newer
Ubuntu 14.04 and newer
Dependencies
- poise-python (for package installation)
- git (for source installation)
Attributes
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 | https://github.com/Exa-Networks/exabgp.git |
node['exabgp']['source_version'] |
git ref of the version to install | master |
Recipes
-
exabgp::default
- Intentionally left blank, see resource usage below
Resources
exabgp
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.
Actions
-
:install
– Install and configure ExaBGP. (default)
Parameters
-
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 thenode['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:
Examples
# Installs into /etc/exabgp-anycast exabgp 'anycast' # Backward compatible with the previous exabgp cookbook # Installs to /etc/exabgp exabgp 'anycast' do instance false end # Use your own template from templates/default/exabgp.conf.erb exabgp 'anycast' do cookbook 'mycorp-exabgp' end # Setup a service service 'exabgp'
License and Authors
- Author:: Aaron Kalin
- Author:: Jacobo Garcia
- Author:: Joseph Caudle
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
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.
Dependent cookbooks
poise-python >= 0.0.0 |
Contingent cookbooks
There are no cookbooks that are contingent upon this one.
Change Log
v3.2.1 (2018-08-09)
Merged pull requests:
- Deprecate the cookbook #24 (martinisoft)
- Update Copyright #23 (onlyhavecans)
v3.2.0 (2018-07-18)
Implemented enhancements:
- Deprecate Chef 12 and Ubuntu 12.04 support #20 (martinisoft)
v3.1.1 (2018-04-16)
Implemented enhancements:
- ExaBGP rpm install #15
Merged pull requests:
- Pin back pip as pose-python is broken #19 (onlyhavecans)
- Remove all dead legacy code #17 (jmauro)
v3.1.0 (2018-02-12)
Merged pull requests:
- Add distribution packages #16 (jmauro)
- Testing to chef 13 #14 (onlyhavecans)
v3.0.0 (2017-09-06)
Merged pull requests:
- Campsite and rebuild test suite #13 (martinisoft)
v2.1.0 (2017-08-28)
Fixed bugs:
- Add version pin #12 (martinisoft)
v2.0.1 (2017-08-28)
2.0.0 (2016-02-24)
Implemented enhancements:
- Chef 12 Resource Rewrite #9 (martinisoft)
1.1.1 (2015-06-18)
1.1.0 (2015-06-18)
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)
1.0.1 (2015-01-23)
1.0.0 (2015-01-23)
0.10.0 (2015-01-19)
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.2 passed this metric
Contributing File Metric
3.2.2 passed this metric
Foodcritic Metric
3.2.2 passed this metric
No Binaries Metric
3.2.2 passed this metric
Testing File Metric
3.2.2 passed this metric
Version Tag Metric
3.2.2 passed this metric
3.2.2 passed this metric
3.2.2 passed this metric
Foodcritic Metric
3.2.2 passed this metric
No Binaries Metric
3.2.2 passed this metric
Testing File Metric
3.2.2 passed this metric
Version Tag Metric
3.2.2 passed this metric
3.2.2 passed this metric
3.2.2 passed this metric
Testing File Metric
3.2.2 passed this metric
Version Tag Metric
3.2.2 passed this metric
3.2.2 passed this metric
3.2.2 passed this metric