Sha256: b98e27e2876d9c75539ec8ea7e5354501b865df56696c271edfff64af0beb624

Contents?: true

Size: 1.63 KB

Versions: 41

Compression:

Stored size: 1.63 KB

Contents

#! /usr/bin/env ruby
#
# check-cloudfront-tag
#
# DESCRIPTION:
#   This plugin checks if cloud front distributions have a set of tags.
#
# OUTPUT:
#   plain-text
#
# PLATFORMS:
#   Linux
#
# DEPENDENCIES:
#   gem: aws-sdk
#   gem: sensu-plugin
#
# USAGE:
#   ./check-cloudfront-tag.rb --aws-region eu-west-1 --tag-keys xxx
#
# NOTES:
#
# LICENSE:
#   Copyright (c) 2016, Olivier Bazoud, olivier.bazoud@gmail.com
#   Released under the same terms as Sensu (the MIT license); see LICENSE
#   for details.
#

require 'sensu-plugin/check/cli'
require 'sensu-plugins-aws/common'
require 'aws-sdk'

class CheckCloudFrontTag < Sensu::Plugin::Check::CLI
  include Common

  option :aws_region,
         short: '-r AWS_REGION',
         long: '--aws-region REGION',
         description: 'AWS Region (defaults to us-east-1).',
         default: 'us-east-1'

  option :tag_keys,
         short: '-t TAG_KEYS',
         long: '--tag-keys TAG_KEYS',
         description: 'Tag keys'

  def run
    tags = config[:tag_keys].split(',')
    cloudfront = Aws::CloudFront::Client.new
    missing_tags = []
    cloudfront.list_distributions.distribution_list.items.each do |distribution|
      begin
        keys = cloudfront.list_tags_for_resource(resource: distribution.arn).tags.items.map(&:key)
        if keys.sort & tags.sort != tags.sort
          missing_tags.push distribution.id
        end
      rescue StandardError
        missing_tags.push distribution.id
      end
    end

    if missing_tags.empty?
      ok
    else
      critical("Missing tags in #{missing_tags}")
    end
  rescue StandardError => e
    critical "Error: #{e.message} - #{e.backtrace}"
  end
end

Version data entries

41 entries across 41 versions & 2 rubygems

Version Path
sensu-plugins-aws-18.6.0 bin/check-cloudfront-tag.rb
sensu-plugins-aws-boutetnico-1.4.0 bin/check-cloudfront-tag.rb
sensu-plugins-aws-boutetnico-1.3.4 bin/check-cloudfront-tag.rb
sensu-plugins-aws-boutetnico-1.2.0 bin/check-cloudfront-tag.rb
sensu-plugins-aws-boutetnico-1.1.1 bin/check-cloudfront-tag.rb
sensu-plugins-aws-boutetnico-1.0.6 bin/check-cloudfront-tag.rb
sensu-plugins-aws-18.5.0 bin/check-cloudfront-tag.rb
sensu-plugins-aws-18.4.2 bin/check-cloudfront-tag.rb
sensu-plugins-aws-18.4.1 bin/check-cloudfront-tag.rb
sensu-plugins-aws-18.4.0 bin/check-cloudfront-tag.rb
sensu-plugins-aws-18.3.0 bin/check-cloudfront-tag.rb
sensu-plugins-aws-18.2.0 bin/check-cloudfront-tag.rb
sensu-plugins-aws-18.1.0 bin/check-cloudfront-tag.rb
sensu-plugins-aws-18.0.0 bin/check-cloudfront-tag.rb
sensu-plugins-aws-17.2.0 bin/check-cloudfront-tag.rb
sensu-plugins-aws-17.1.0 bin/check-cloudfront-tag.rb
sensu-plugins-aws-17.0.0 bin/check-cloudfront-tag.rb
sensu-plugins-aws-16.2.0 bin/check-cloudfront-tag.rb
sensu-plugins-aws-16.1.0 bin/check-cloudfront-tag.rb
sensu-plugins-aws-16.0.0 bin/check-cloudfront-tag.rb