Puppet Webhook Server
What is puppet_webhook
puppet_webhook is a Sinatra-based application receiving REST-based calls to trigger Puppet and r10k-related tasks such as:
- Webhooks from Source Code systems to trigger r10k environment and module deploys
- Send notifications via Slack
- Ruby 2.5.0 or greater (since version 2. 1.x works with Ruby 2.4.0)
- Puppet 5.5.0 or greater
- r10k gem
- Optional: MCollective and MCollective-r10k (Provides one form of multi-master syncronization)
- Currently Mcollective-r10k is only available from puppet-r10k
- If you don't want to use MCollective, you could install this webhook on each compile master instead
Legacy puppet_webhook (< 2.x)
Please see the pre-2.x documentation if using the old gem-based puppet_webhook.
Modern puppet_webhook (>= 2.x)
This assumes you already have the correct Ruby version installed in the system or via a tool like
- Download the latest release from the Releases page.
- Extract the tarball into the desired directory:
$ tar -xzvf puppet_webhook-latest.tar.gz -C /opt/puppet_webhook
- Enter the install directory and install dependencies:
$ cd /opt/puppet_webhook && bundle install
- Start the process:
$ bundle exec puma config.ru
Experience with Docker and Docker Compose are assumed. The Docker Compose setup expects that the Webhook API container volumes will have access to the codedir, either via NFS or on system.
- Download the sample
docker-compose.ymlfile from the github repo:
$ wget -O docker-compose.yml https://raw.githubusercontent.com/voxpupuli/puppet_webhook/master/build/docker/docker-compose.yml
- Edit the image, environment, and volumes keys based on your own needs.
What about RPM/DEB/Arch/Helm/ETC
Packages for RPM and Deb systems are in the works, but are taking a bit longer to roll out due to needing to package the dependencies with the application. An Arch package is also on the way.
A Helm chart is planned for the future, but not currently in development as we work to iron out any issues with the Webhook API Server after the initial 2.x release.
Puppet Webhook API configuration is maintained by the config.yml file in the
APP_ROOT/config directory. Many options have sane defaults applied, but a few are required for base functionality.
type: Boolean description: Enforces authentication via basic auth or API token. default: false
description: Username to use for Basic Authorization. Optional
description: Password to use for Basic Authorization. Optional
type: Boolean description: Send notifications to a chatops service. Required. default: false
description: Which chatops service to send to. Only
rocketchat supported at this time.
description: Webhook/Notification url to send to.
description: Channel/Room to post notification to.
description: User to post notification as.
description: Any additional options to pass the chatops service.
description: Default controlrepo branch to use if none specified.
type: Array[String] description: Any environments to ignore. Default: 
type: Boolean description: Allow uppercase within the name of the module or environment passed to the API. default: true