A cookbook for a chef_handler
that sends reports and exceptions to Slack. There are two options for use:
- Providing a team name and api_key (Uses the slackr gem)
- Providing a hash containing incoming webhook url(s)
- The
chef_handler
cookbook - An existing Slack incoming webhook(s)
- Create a new Slack webhook (https://slack.com/services/new/incoming-webhook)
- Set the
team
andapi_key
attributes above on the node/environment/etc. - Include this
slack_handler
recipe.
node['chef_client']['handler']['slack']['team']
- Your Slack team name (.slack.com)node['chef_client']['handler']['slack']['api_key']
- The API key of your Slack incoming webhook
Optional attributes
node['chef_client']['handler']['slack']['channel']
- The #channel to send the resultsnode['chef_client']['handler']['slack']['username']
- The username of the Slack messagenode['chef_client']['handler']['slack']['icon_url']
- The Slack message iconnode['chef_client']['handler']['slack']['icon_emoji']
- The Slack message icon defined by available:emoji:
node['chef_client']['handler']['slack']['detail_level']
- The level of detail in the message. Valid options arebasic
,elapsed
andresources
node['chef_client']['handler']['slack']['fail_only']
- Only report when runs fail as opposed to every single occurance
NOTE: Either icon_url
or icon_emoji
can be used. If both are set, icon_url
will take precedence.
- Create a new Slack webhook (https://slack.com/services/new/incoming-webhook)
- Set the attributes as specified below
- Include this
slack_handler
recipe.
-
node['chef_client']['handler']['slack']['username'] = 'Chef Handler - 2963351-crowdcube_app'
-
node['chef_client']['handler']['slack']['webhooks']['name'].push('webhook1')
-
node['chef_client']['handler']['slack']['webhooks']['webhook1']['url'] = 'https://hooks.slack.com/1/2/3'
-
node['chef_client']['handler']['slack']['webhooks']['webhook1']['fail_only'] = true
-
node['chef_client']['handler']['slack']['webhooks']['webhook1']['detail_level'] = 'elapsed'
-
node['chef_client']['handler']['slack']['webhooks']['name'].push('webhook2')
-
node['chef_client']['handler']['slack']['webhooks']['webhook2']['url'] = 'https://hooks.slack.com/1/2/4'
-
node['chef_client']['handler']['slack']['webhooks']['webhook2']['fail_only'] = false
-
node['chef_client']['handler']['slack']['webhooks']['webhook2']['detail_level'] = 'resources'
NOTE: Either icon_url
or icon_emoji
can be used. If both are set, icon_url
will take precedence.
Borrowed everything from the logstash_handler
cookbook here, who in turn borrowed quite a bit from the graphite_handler
cookbook here.
slack_handler
is provided under the Apache License 2.0. See LICENSE
for details.