Skip to content

Instantly share code, notes, and snippets.

View ketzacoatl's full-sized avatar

Ketzacoatl ketzacoatl

View GitHub Profile
@ketzacoatl
ketzacoatl / consul-template-git.sls
Last active August 29, 2015 14:26
salt formula to build/install consul-template from source
{%- set repo_root = '/root/consul-template' %}
{%- set revision = 'v0.10.0' %}
include:
- golang
consul-template:
git.latest:
- name: https://github.com/hashicorp/consul-template
@ketzacoatl
ketzacoatl / only-one-active-instance.py
Created September 13, 2015 16:09
Proof of Concept - Docker service orchestration via python consul-lock
import sys
from time import sleep
import consul
import consul_lock
from docker import Client
'''
This is a PoC which uses consul's locking mechanism to ensure only
one instance of the named docker container is running. Requires:
@ketzacoatl
ketzacoatl / Main.hs
Last active August 31, 2016 05:19
is consul online?
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Network.Consul (getSelf, ConsulClient(..), initializeConsulClient, listKeys)
import qualified Network.Consul.Internal as I
client = initializeConsulClient "localhost" 8500 Nothing
@ketzacoatl
ketzacoatl / README.md
Last active October 1, 2020 15:17
Using a wrapper script to work around limitations in Nomad's docker driver

Overview

This gist demonstrates how to run a docker container with nomad, using a wrapper script.

Why would you want to use this?

With the wrapper, we can more easily run the container in the way we need to and without being limited by Nomad's docker driver. For example, while Nomad will have great support for volumes in the future, it has no such support right now, and the driver does not expose a config parameter to tune the volumes mounted in the docker container. This is also a great way to use consul to lookup services before starting your app, or to retrieve credentials from Vault. When running legacy applications with nomad, the wrapper script is the place to put that type of look-up logic.

We use a wrapper script and the raw_exec driver to run the container with the parameters we need.

@ketzacoatl
ketzacoatl / README.md
Last active August 13, 2016 13:41
Shell Snippets, Tips, and Tricks

Useful Snippets for a few Random Ops Tasks

@ketzacoatl
ketzacoatl / README.md
Last active July 3, 2016 17:44
Minimal repro for failures seen with saltutil.sync_all in provisioning with Packer

What..

This is a minimal reproduction of an issue I am seeing when provisioning hosts with Saltstack and Packer. More specifically, running salt-call --local saltutil.sync_all in a script uploaded by packer does not function as expected (no files/modules are sync'd).

Note that saltutil.sync_all works fine on the new host when run manually from the shell directly.

How to use..

@ketzacoatl
ketzacoatl / crash.log
Created November 19, 2016 16:08
Terraform Crash Log - Nomad Provider/Resource
2016/11/19 09:49:12 [INFO] Terraform version: 0.8.0 dev 283d49f12fe203a2cd2ad23acec046f72f7842de+CHANGES
2016/11/19 09:49:12 [INFO] CLI args: []string{"/home/user/bin/terraform-v0.8.0-dev", "apply"}
2016/11/19 09:49:12 [DEBUG] Detected home directory from env var: /home/user
2016/11/19 09:49:12 [DEBUG] Detected home directory from env var: /home/user
2016/11/19 09:49:12 [DEBUG] Attempting to open CLI config file: /home/user/.terraformrc
2016/11/19 09:49:12 [DEBUG] File doesn't exist, but doesn't need to. Ignoring.
2016/11/19 09:49:12 [DEBUG] Detected home directory from env var: /home/user
2016/11/19 09:49:12 [TRACE] Preserving existing state lineage "a56754c9-aed5-4dce-92f8-921e3c1de105"
2016/11/19 09:49:12 [TRACE] Preserving existing state lineage "a56754c9-aed5-4dce-92f8-921e3c1de105"
2016/11/19 09:49:12 [TRACE] Graph after step *terraform.ConfigTransformerOld:
@ketzacoatl
ketzacoatl / keybase.md
Created March 31, 2017 15:33
keybase proof

Keybase proof

I hereby claim:

  • I am ketzacoatl on github.
  • I am ketzacoatl (https://keybase.io/ketzacoatl) on keybase.
  • I have a public key ASABHBuq9eKf_Tg1I5nNIxbqYyoqLkQixEdaZ1v_cOSNcAo

To claim this, I am signing this object:

@ketzacoatl
ketzacoatl / README.md
Created September 11, 2017 20:37
Simple Terraform demo on how to use AWS ALB with multiple apps and host header with different names / FQDN

This is the common component:

# Create a single load balancer for all Atlassian services
resource "aws_alb" "atlassian" {
  name            = "${var.name}"
  internal        = false
  idle_timeout    = "300"
  security_groups = [ 
 "${aws_security_group.atlassian-alb.id}",
@ketzacoatl
ketzacoatl / config.yaml
Created September 18, 2017 15:51
Prometheus on Kubernetes, based on deployments (no operator)
apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus
namespace: ops
data:
prometheus.yml: |
global:
scrape_interval: 30s
scrape_timeout: 30s