cookbook 'slack_handler', '= 0.9.2'
slack_handler (13) Versions 0.9.2 Follow15
Installs/Configures a Chef handler for reporting results to a Slack channel.
cookbook 'slack_handler', '= 0.9.2', :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_handler
cookbook - An existing Slack incoming webhook(s)
Usage 1
- 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.
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
,elapsed
andresources
, defaults tobasic
-
node['chef_client']['handler']['slack']['cookbook_detail_level']
- The level of detail about the cookbook used in the message. Valid options areoff
andall
, 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_handler
recipe.
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.9.2
- Allow each webhook to override it's own channel (#3)
0.9.1
- Fix for syntax issue (#54)
0.9.0
- check Chef for run_context compatibility (#52)
- Disable Slack handler in why-run mode (#49)
- Fix a few of the additional lint complaints (#47)
0.8.1
- Pins chef_handler version (#46)
- Fix reporting exceptions with libyajl2 (#42)
- Testing Cleanup (#40)
- Add channel as channel can be overridden with a webhook (#39)
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_level
settings, onlybasic
worked. 0.7.1 fixes it.
0.7.0
- Added
send_start_message
configuration which if set totrue
sends 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_environment
configuration which if set totrue
sends 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_level
configuration 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:
-
username
no longer defaults tonode.name
-
username
no longer defaults tochef_handler
-
icon_emoji
no longer defaults to:fork_and_knife:
-
- Changed
detail_level
tomessage_detail_level
in order to clarify its meaning againstcookbook_detail_level
- Optional
fail_only
,message_detail_level
andcookbook_detail_level
attributes for WebHook can now drop down to global attributes (#18) -
icon_url
now works as expected for WebHook configuration (#15) - Clarified items in README.md including
channel
being mandatory for the slackr integration; presence of optionaltimeout
attribute; 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
warn
toinfo
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_url
attribute
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.9.2 failed this metric
Failure: Cookbook has 1 collaborators. A cookbook must have at least 2 collaborators to pass this metric.
Contributing File Metric
0.9.2 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
No Binaries Metric
0.9.2 passed this metric
Testing File Metric
0.9.2 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.9.2 passed this metric
0.9.2 failed this metric
0.9.2 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
No Binaries Metric
0.9.2 passed this metric
Testing File Metric
0.9.2 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.9.2 passed this metric
0.9.2 passed this metric
0.9.2 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.9.2 passed this metric
0.9.2 passed this metric