cookbook 'slack_handler', '= 0.8.0'
slack_handler (13) Versions 0.8.0 Follow15
Installs/Configures a Chef handler for reporting results to a Slack channel.
cookbook 'slack_handler', '= 0.8.0', :supermarket
knife supermarket install slack_handler
knife supermarket download slack_handler
Description
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)
NOTE: If both methods are configured, webhooks will take precedence.
This cookbook was originally a fork of dcm-ops/chef-slack_handler by [Dan Ryan](dan.ryan@enstratius.com). We have taken over maintenance of this cookbook and released it to Supermarket.
Requirements
- The
chef_handlercookbook - An existing Slack incoming webhook(s)
Usage 1
- Create a new Slack webhook (https://slack.com/services/new/incoming-webhook)
- Set the
teamandapi_keyattributes above on the node/environment/etc. - Include this
slack_handlerrecipe.
Usage 1 Attributes
-
node['chef_client']['handler']['slack']['team']- Your Slack team name (<team-name>.slack.com) -
node['chef_client']['handler']['slack']['api_key']- The API key of your Slack incoming webhook -
node['chef_client']['handler']['slack']['channel']- The #channel to send the results, should include the hash
Optional attributes
-
node['chef_client']['handler']['slack']['username']- The username of the Slack message, defaults to the node name -
node['chef_client']['handler']['slack']['icon_url']- The Slack message icon, defaults to nil -
node['chef_client']['handler']['slack']['icon_emoji']- The Slack message icon defined by available:emoji:, defaults to nil -
node['chef_client']['handler']['slack']['timeout']- Timeout in seconds for the Slack API call, defaults to 15 -
node['chef_client']['handler']['slack']['fail_only']- Only report when runs fail as opposed to every single occurrence, defaults to false -
node['chef_client']['handler']['slack']['send_start_message']- Send a message when the run starts, defaults to false -
node['chef_client']['handler']['slack']['message_detail_level']- The level of detail in the message. Valid options arebasic,elapsedandresources, defaults tobasic -
node['chef_client']['handler']['slack']['cookbook_detail_level']- The level of detail about the cookbook used in the message. Valid options areoffandall, defaults tooff -
node['chef_client']['handler']['slack']['send_environment']- Send thenode.chef_environment, defaults to false -
node['chef_client']['handler']['slack']['send_organization']- Send theorganization from /etc/chef/client.rb, defaults to false
NOTE: If both icon_url and icon_emoji are set, icon_url will take precedence.
Usage 2
- Create a new Slack webhook (https://slack.com/services/new/incoming-webhook)
- Set the attributes as specified below
- Include this
slack_handlerrecipe.
Usage 2 Attributes
Push as many webhooks as you wish onto the node config:
# Add `webhook1` URL
node['chef_client']['handler']['slack']['webhooks']['name'].push('webhook1')
node['chef_client']['handler']['slack']['webhooks']['webhook1']['url'] = 'https://hooks.slack.com/1/2/3'
# Add `webhook2` URL
node['chef_client']['handler']['slack']['webhooks']['name'].push('webhook2')
node['chef_client']['handler']['slack']['webhooks']['webhook2']['url'] = 'https://hooks.slack.com/1/2/4'
Optional attributes
Global to all webhooks:
# Timeout in seconds for the Slack API call, defaults to 15
node['chef_client']['handler']['slack']['timeout'] = 30
## Customizations for Slack WebHook config
## See https://api.slack.com/incoming-webhooks#customizations_for_custom_integrations
# The username of the Slack message, defaults to Slack WebHook config (i.e. nil)
node['chef_client']['handler']['slack']['username'] = 'Chef Bot'
# Icon URL, defaults to Slack WebHook config (i.e. nil)
node['chef_client']['handler']['slack']['icon_url'] = 'https://avatars1.githubusercontent.com/u/29740'
# Emoji for the Slack call, defaults to Slack WebHook config (i.e. nil)
node['chef_client']['handler']['slack']['icon_emoji'] = ':fork_and_knife:'
# Only report when runs fail as opposed to every single occurrence, defaults to false
node['chef_client']['handler']['slack']['fail_only'] = true
# Send a message when the run starts, defaults to false
node['chef_client']['handler']['slack']['send_start_message'] = true
# The level of detail in the message. Valid options are 'basic', 'elapsed' and 'resources', defaults to 'basic'
node['chef_client']['handler']['slack']['message_detail_level'] = 'resources'
# The level of detail about the cookbook used in the message. Valid options are 'off' and 'all', defaults to 'off'
node['chef_client']['handler']['slack']['cookbook_detail_level'] = 'all'
# Send the node.chef_environment, defaults to false
node['chef_client']['handler']['slack']['send_environment'] = true
# Send the organization from /etc/chef/client.rb, defaults to false
node['chef_client']['handler']['slack']['send_organization'] = true
NOTE: If both icon_url and icon_emoji are set, icon_url will take precedence.
Each webhook may also override the fail_only, message_detail_level and cookbook_detail_level global optional attributes:
# Optional attributes for `webhook1`
node['chef_client']['handler']['slack']['webhooks']['webhook1']['fail_only'] = true
node['chef_client']['handler']['slack']['webhooks']['webhook1']['send_start_message'] = true
node['chef_client']['handler']['slack']['webhooks']['webhook1']['message_detail_level'] = 'elapsed'
node['chef_client']['handler']['slack']['webhooks']['webhook1']['cookbook_detail_level'] = 'all'
node['chef_client']['handler']['slack']['webhooks']['webhook1']['send_environment'] = true
node['chef_client']['handler']['slack']['webhooks']['webhook1']['send_organization'] = true
Credits
Borrowed everything from the logstash_handler cookbook here, who in turn borrowed quite a bit from the graphite_handler cookbook here.
License
slack_handler is provided under the Apache License 2.0. See LICENSE for details.
Changelog
0.8.0
- Check slack webhook result; move run status to property (#35)
- Added send_organization configuration which provides the optional ability to include the organization in /etc/chef/client.rb to Slack.
- webhook: check http response (#30)
0.7.1
- Version 0.7.0 broke most of the
message_detail_levelsettings, onlybasicworked. 0.7.1 fixes it.
0.7.0
- Added
send_start_messageconfiguration which if set totruesends out a message when this cookbook is run. This is not quite the same as a Chef start handler but requires no additional setup to run. If you have other start handlers registered, they may run twice due if you turn this setting on. Default setting isfalse. - Added
send_environmentconfiguration which if set totruesends the node.chef_environment. Default setting isfalse.
v0.6.0
- Fix a bug in run_context where we should be calling
Chef.run_context, correct an incorrect method name. (#22)
v0.5.0
- Added
cookbook_detail_levelconfiguration which provides the optional ability to include a list of all cookbooks used in the message to Slack. Values inside README.md (#17) - Some defaults have been removed from the WebHook integration to allow Slack WebHook default configuration to be used, can still be overridden (#16). The slackr integration remains the same. Specifically:
-
usernameno longer defaults tonode.name -
usernameno longer defaults tochef_handler -
icon_emojino longer defaults to:fork_and_knife:
-
- Changed
detail_leveltomessage_detail_levelin order to clarify its meaning againstcookbook_detail_level - Optional
fail_only,message_detail_levelandcookbook_detail_levelattributes for WebHook can now drop down to global attributes (#18) -
icon_urlnow works as expected for WebHook configuration (#15) - Clarified items in README.md including
channelbeing mandatory for the slackr integration; presence of optionaltimeoutattribute; what the defaults are (#21)
v0.4.0 (2016-03-09)
- Add CHANGELOG.md (#11)
- Move exception from message to text attachment (#12)
v0.3.0 (2016-02-18)
- Downgrade level of the webhook log message from
warntoinfo
v0.2.0 (2016-02-01)
- Add Rubocop and Foodcritic
- Fix ruby syntax
- Fix bug when not using webhooks
- Add circle.yml for CircleCI
- Webhook handler honors
:icon_urlattribute
v0.1.0 (2015-05-25)
- Initial release to Supermarket at f32996d
Forked
Forked from dcm-ops/chef-slack_handler on 2015-05-18.
Collaborator Number Metric
0.8.0 failed this metric
Failure: Cookbook has 1 collaborators. A cookbook must have at least 2 collaborators to pass this metric.
Contributing File Metric
0.8.0 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 https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
Foodcritic Metric
0.8.0 passed this metric
License Metric
0.8.0 passed this metric
No Binaries Metric
0.8.0 passed this metric
Testing File Metric
0.8.0 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 https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
0.8.0 passed this metric
0.8.0 failed this metric
0.8.0 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 https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
Foodcritic Metric
0.8.0 passed this metric
License Metric
0.8.0 passed this metric
No Binaries Metric
0.8.0 passed this metric
Testing File Metric
0.8.0 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 https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
0.8.0 passed this metric
0.8.0 passed this metric
0.8.0 passed this metric
No Binaries Metric
0.8.0 passed this metric
Testing File Metric
0.8.0 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 https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
0.8.0 passed this metric
0.8.0 passed this metric
0.8.0 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 https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
0.8.0 passed this metric
0.8.0 passed this metric