Skip to content

Instantly share code, notes, and snippets.

@neilellis
neilellis / README.md
Last active December 7, 2019 22:51
An example Blue/Green deployment using Tutum and Cloudflare (for DNS)
@neilellis
neilellis / sanitized-stack.yml
Created May 20, 2015 11:50
Example tutum stack
lb:
image: 'tutum/haproxy:latest'
links:
- brochure
- render
- server
ports:
- '80:80'
restart: always
roles:
@neilellis
neilellis / cached-circle.yml
Last active August 29, 2015 14:19
Basic Circle.yml files for Tutum
machine:
services:
- docker
dependencies:
cache_directories:
- "~/docker"
override:
- docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS tutum.co
@neilellis
neilellis / bash_tricks.sh
Created April 16, 2015 15:05
Some useful bash features
#!/usr/bin/env bash
set -eux
#e - error if non zero return value
#u - undefined variables trigger syntax error
#x - debug
#minus sign ADDS the flags
#plus sign REMOVES the flags
@neilellis
neilellis / JsonUtil.java
Last active August 29, 2015 14:07
Convert Main style string arguments to Json. This includes using --foo bar syntax
/*
* Copyright (c) 2014 Neil Ellis
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
$GET("/v2/webshot/:key", (http) ->
$($("params", http.params()), $("query", http.queryParams()))
.$pipe(new ParamValidator())
.$pipe(new KeyValidator())
.$void(() -> $().$error(
"Sorry your key is not recognized, maybe you need to check http://app.snapito.io/#/account",
var.ErrorType.VALIDATION))
.$pipe((v) -> {
if (v.$match("userStatus", "over_free")) {
http.status(302);
@neilellis
neilellis / FirstScript.java
Created October 6, 2014 14:05
Piping in Dollar
package com.cazcade.dollar.pipe;
import com.cazcade.dollar.Script;
import com.cazcade.dollar.var;
import java.util.Date;
/**
* @author <a href="http://uk.linkedin.com/in/neilellis">Neil Ellis</a>
*/
@neilellis
neilellis / HelloScript.java
Last active August 29, 2015 14:07
An example of the http://github.com/cazcade/dollar library in action. And yes this is all valid Java!
import com.cazcade.dollar.Script;
import com.cazcade.dollar.SecondScript;
import com.cazcade.dollar.var;
import java.util.Date;
/**
* @author <a href="http://uk.linkedin.com/in/neilellis">Neil Ellis</a>
*/
public class HelloScript extends Script {
@neilellis
neilellis / therapist.sh
Last active August 29, 2015 14:06
Gets rid of shellshock on Digital ocean + Ubuntu by running security updates in parallel - requires tugboat to be installed first.
#!/bin/bash -eu
function fixIt() {
ip=$1
if ssh -o "StrictHostKeyChecking no" root@${ip} "env X='() { (a)=>\' bash -c \"echo date\"; cat echo" | grep 2014
then
ssh -o "StrictHostKeyChecking no" root@${ip} "apt-get install -y unattended-upgrades; apt-get update; unattended-upgrades; rm echo"
else
echo $ip passed
fi
@neilellis
neilellis / obtain_subnet_address.sh
Last active August 29, 2015 14:06
Create a subnet for this host to use in zettio/weave
#!/bin/bash -eu
#apt-get install -y jq
host_ip=$1
#Check to see if we have a cached session for this machine and if it is still valid
if [ -f ~/.consul_subnet_session ] && [[ -n $(< ~/.consul_subnet_session) ]] && [[ $(curl "http://localhost:8500/v1/session/info/$(< ~/.consul_subnet_session)") != null ]]
then
session=$(< ~/.consul_subnet_session)
else