Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms

Select Status

RSS

slack_handler (13) Versions 0.9.0

Installs/Configures a Chef handler for reporting results to a Slack channel.

Policyfile
Berkshelf
Knife
cookbook 'slack_handler', '= 0.9.0', :supermarket
cookbook 'slack_handler', '= 0.9.0'
knife supermarket install slack_handler
knife supermarket download slack_handler
README
Dependencies
Changelog
Quality 57%

Build Status

Description

A cookbook for a chef_handler that sends reports and exceptions to Slack. There are two options for use:

  1. Providing a team name and api_key (Uses the slackr gem)
  2. 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

  1. Create a new Slack webhook (https://slack.com/services/new/incoming-webhook)
  2. Set the team and api_key attributes above on the node/environment/etc.
  3. 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 are basic, elapsed and resources, defaults to basic
  • node['chef_client']['handler']['slack']['cookbook_detail_level'] - 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']['send_environment'] - Send the node.chef_environment, defaults to false
  • node['chef_client']['handler']['slack']['send_organization'] - Send the organization 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

  1. Create a new Slack webhook (https://slack.com/services/new/incoming-webhook)
  2. Set the attributes as specified below
  3. 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.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, only basic worked. 0.7.1 fixes it.

0.7.0

  • Added send_start_message configuration which if set to true 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 is false.
  • Added send_environment configuration which if set to true sends the node.chef_environment. Default setting is false.

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 to node.name
    • username no longer defaults to chef_handler
    • icon_emoji no longer defaults to :fork_and_knife:
  • Changed detail_level to message_detail_level in order to clarify its meaning against cookbook_detail_level
  • Optional fail_only, message_detail_level and cookbook_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 optional timeout 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 to info

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.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.9.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.9.0 passed this metric

License Metric
            

0.9.0 passed this metric

No Binaries Metric
            

0.9.0 passed this metric

Testing File Metric
            

0.9.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.9.0 passed this metric