Webhook Go is a port of the puppet_webhook Sinatra API server to Go. This is designed to be more streamlined, performant, and easier to ship for users than the Sinatra/Ruby API server.
This server is a REST API server designed to accept Webhooks from version control systems, such as GitHub or GitLab, and execute actions based on those webhooks. Specifically, the following tasks:
- Trigger r10k environment and module deploys onto Puppet Servers
- Send notifications to ChatOps systems, such as Slack and RocketChat
While there are no prerequisites for running the webhook server itself, for it to be useful, you will need the following installed on the same server or another server for this tool to be useful:
- Puppet Server
- r10k
- Windows or Linux server to run the server on. MacOS is not supported.
Download a Pre-release Binary from the Releases page, make it executable, and run the server.
The Webhook API server uses a configuration file called webhook.yml
to configure the server. Several of the required options have defaults pre-defined so that a configuration file isn't needed for basic function.
webhook.yaml.example
:
server:
protected: false
user: puppet
password: puppet
port: 4000
tls:
enabled: false
certificate: "/path/to/tls/certificate"
key: "/path/to/tls/key"
chatops:
enabled: false
service: slack
channel: "#general"
user: r10kbot
auth_token: 12345
server_uri: "https://rocketchat.local"
r10k:
config_path: /etc/puppetlabs/r10k/r10k.yaml
default_branch: main
allow_uppercase: false
verbose: true
pipeline:
enabled: false
deploy_on_error: false
Type: bool
Description: Enforces authetication via basic Authentication
Default: false
Type: string
Description: Username to use for Basic Authentication. Optional.
Default: nil
Type: string
Description: Password to use for Basic Authentication. Optional.
Default: nil
Type: int64
Description: Port to run the server on. Optional.
Default: 4000
Type: struct Description: Struct containing server TLS options
Type: bool
Description: Enforces TLS with http server
Default: false
Type: string
Description: Full path to certificate file. Optional.
Default: nil
Type: string
Description: Full path to key file. Optional.
Default: nil
API exists, but is not implemented yet
Type: string
Description: Full path to the r10k configuration file. Optional.
Default: /etc/puppetlabs/r10k/r10k.yaml
Type: string
Description: Name of the default branch for r10k to pull from. Optional.
Default: main
Type: string
Description: An r10k prefix to apply to the module or environment being deployed. Optional.
Default: nil
Type: bool
Description: Allow Uppercase letters in the module, branch, or environment name. Optional.
Default: false
Type: bool
Description: Log verbose output when running the r10k command
Default: true
Type: bool
Description: Whether to enable handling of Workflow/Pipeline events (Only available for Github/Gitlab)
Default: false
Type: bool
Description: Allow deployments even if the CI pipeline has failed. To be used with Workflow/Pipeline events
Default: false