Skip to content

Instantly share code, notes, and snippets.

Evan D. Hoffman evandhoffman

Block or report user

Report or block evandhoffman

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
evandhoffman /
Created Nov 10, 2016
Echoservice - service that registers itself with consul and starts a webserver. Useful for playing with Traefik.
import SimpleHTTPServer
import SocketServer
import requests
import json
import getopt, sys
CONSUL_URL = 'http://localhost:8500'
def register_service(name, address, port):
View traefik.toml
logLevel = "DEBUG"
traefiklogsfile = "traefik.log"
accesslogsfile = "access.log"
defaultEntryPoints = ["http"]
address = ":8088"
View imac.json
"fio version" : "fio-2.2.10",
"timestamp" : 1458066508,
"time" : "Tue Mar 15 14:28:28 2016",
"jobs" : [
"jobname" : "imac",
"groupid" : 0,
"error" : 0,
"eta" : 0,
evandhoffman /
Last active Oct 16, 2015
Python script that emits disks and mdadm raid devices in a form usable by Zabbix low-level discovery
import json
import subprocess
blockdev_fullpath_macro = "{#BLOCKDEV_FULLPATH}"
blockdev_type_macro = "{#BLOCKDEV_TYPE}"
blockdev_shortname_macro = "{#BLOCKDEV_SHORTNAME}"
evandhoffman / move_movies.rb
Created Apr 30, 2015
Script to consolidate all the .MOV files on my computer into a single directory, organized by YYYY/YYYY-MM/ dir structure.
View move_movies.rb
require 'fileutils'
base_dir = ARGV[0]
target_dir = ARGV[1]
movies = Dir.glob([base_dir, '**','*.mov'].join('/'))
evandhoffman / 000_cache.conf
Last active Mar 11, 2016
nginx cache config
View 000_cache.conf
proxy_cache_path /var/lib/nginx/cache/staticfiles levels=1:2 keys_zone=staticfilecache:10m max_size=50m;
proxy_cache_path /var/lib/nginx/cache/php levels=2:2 keys_zone=php:10m inactive=20m max_size=50m;
proxy_temp_path /var/lib/nginx/proxy;
proxy_connect_timeout 30;
proxy_read_timeout 120;
proxy_send_timeout 120;
#IMPORTANT - this sets the basic cache key that's used in the static file cache.
proxy_cache_key "$scheme://$host$request_uri";
View nginx.conf
# Change YOUR_TOKEN to your prerender token and uncomment that line if you want to cache urls and view crawl stats
# Change (server_name) to your website url
# Change /path/to/your/root to the correct value
server {
listen 80;
root /path/to/your/root;
index index.html;
evandhoffman /
Last active Aug 29, 2015
Update all ELBs to address POODLE
# To audit, I tried the bash script here but it didn't work,
# so here's my version. It doesn't attempt to check internal ELBs (prefixed with 'internal').
for ELB in $( aws elb describe-load-balancers | grep DNSName | awk '{ print $2 }' | perl -ne 'chomp; $_ =~ /\"([\w-\.]+)\",/; my $elb = $1; print "$elb " unless $elb =~ /^internal/'); do
echo "$ELB ";
echo "01 logout" | openssl s_client -ssl3 -connect $ELB:443 2>&1 | grep DONE &> /dev/null
if [[ "$?" -ne "1" ]]; then
echo FAIL

What is it?

It's a script that renames all your EBS volumes to the name+device of the EC2 instance they're attached to. It also applies the "environment" tag to each volume, read from the instance. (I use the 'environment' tag in billing reports.)

So if your instance's "Name" tag is and the volume is mapped to /dev/sdh, this script would apply the tag Name=backend-1234-prod-example-com-dev-sdh to the volume, and set the environment tag to match the instance's.

evandhoffman / gist:c22f0f3b9cfe8c906fbf
Last active Aug 29, 2015
Tag all EBS volumes in a VPC
View gist:c22f0f3b9cfe8c906fbf

Get list of instances in the VPC:

[evan@Evan ~] $ aws ec2 describe-instances --filter Name=vpc-id,Values=vpc-id | jq '[.Reservations[] | .Instances[] | .InstanceId ] | join(",")'

Get the list of volumes attached to those instances:

[evan@Evan ~] $ aws ec2 describe-volumes --filters Name=attachment.instance-id,Values=i-abcd,i-abce,i-abcf,i-abcg

Paste result into this command:

You can’t perform that action at this time.