Skip to content

Instantly share code, notes, and snippets.

I'm a banana.

Brian Hatfield bmhatfield

I'm a banana.
Block or report user

Report or block bmhatfield

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View gist:5260740
; Expire old events from the index every 15 seconds.
(periodically-expire 10 {:keep-keys [:host :service :tags]})
(def rollup-ttl 60)
(def throttle-ttl 120)
(defn event-log [prefix]
(fn [e] (info prefix (str e))))
(def email (mailer {:from "riemann@domain"}))
View gist:5454382
time: 1366828063
service: "myservice"
host: ""
ttl: 300.0
attributes {
key: "zoinks"
value: "4"
attributes {
key: "forks"
View gist:6003399
var fields map[string]interface{} = make(map[string]interface{})
func main() {
fields["device"] = json.RawMessage(`{"OMG": 13}`)
jsn, err := json.Marshal(fields)
if err == nil {
} else {
bmhatfield / gist:8600671
Created Jan 24, 2014
Working Ohai Plugin
View gist:8600671
require_plugin "#{os}::network"
provides 'ipaddress'
if virtualization['system'] == 'vbox'
network['interfaces']['eth1']['addresses'].each do |ip, params|
if params['family'] == 'inet'
ipaddress ip

Keybase proof

I hereby claim:

  • I am bmhatfield on github.
  • I am brianhatfield ( on keybase.
  • I have a public key whose fingerprint is 2DF5 8084 BCAC BB25 AA51 9650 FFD6 0508 E5D9 0536

To claim this, I am signing this object:

View gist:e49022dbea8013c3cef4
module StubbedSearch
def stubbed_search(index, query, stub)
# When running in the 'local' environment, dynamically set the hostname
# value for the search_stub to the hostname of the running VM
if node.chef_environment == 'local'
node.normal[:search_stub][stub] = node[:search_stub][stub].map do |n|
hsh = n.to_hash
hsh[:hostname] = node[:hostname]
bmhatfield / ec2-security-group-rules
Created Mar 9, 2016
Output a human-readable & colorized view of your EC2 security group rules
View ec2-security-group-rules
#!/usr/bin/env ruby
require 'aws-sdk'
require 'colorize'
ec2 =
ec2.security_groups.sort_by{|s| s.group_name }.each do |sg|
puts sg.group_name.underline unless sg.ip_permissions.empty?
sg.ip_permissions.each do |perm|
bmhatfield / local_databag.rb
Created Mar 29, 2016
Encrypt, Edit and key-rotate databags.
View local_databag.rb
require 'chef/knife'
module LocalDatabags
class Encrypt < Chef::Knife
deps do
require 'chef/encrypted_data_bag_item'
banner "knife encrypt BAGNAME ITEM KEYFILE"
bmhatfield / .profile
Last active Oct 12, 2019
Automatic Git commit signing with GPG on OSX
View .profile
# In order for gpg to find gpg-agent, gpg-agent must be running, and there must be an env
# variable pointing GPG to the gpg-agent socket. This little script, which must be sourced
# in your shell's init script (ie, .bash_profile, .zshrc, whatever), will either start
# gpg-agent or set up the GPG_AGENT_INFO variable if it's already running.
# Add the following to your shell init to set up gpg-agent automatically for every shell
if [ -f ~/.gnupg/.gpg-agent-info ] && [ -n "$(pgrep gpg-agent)" ]; then
source ~/.gnupg/.gpg-agent-info
bmhatfield / check-recent-oom
Created Apr 16, 2016
A simple, time-based OOM check script for use with riemann-sumd
View check-recent-oom
# Run on a minutely basis by
LAST_OOM="$(grep 'Out of memory' /var/log/kern.log | tail -n 1)";
if [ -n "${LAST_OOM_TIME}" ]; then
if [ $(($((`date +%s` - `date --date="${LAST_OOM_TIME}" +%s`)) / 60 )) -le ${LAST_OOM_WINDOW} ]; then
echo "CRITICAL: OOM within last ${LAST_OOM_WINDOW} minutes!"
echo ${LAST_OOM}
You can’t perform that action at this time.