Skip to content

Instantly share code, notes, and snippets.

@ddgenome
ddgenome / go-static-compilation
Created May 2, 2015 21:20
Compile Go program into a static binary
# Go 1.4
CGO_ENABLED=0 GOOS=linux go get -a -installsuffix cgo -ldflags '-s' github.com/elastic/logstash-forwarder
# Go 1.3
CGO_ENABLED=0 GOOS=linux go get -a -ldflags '-s' github.com/elastic/logstash-forwarder
# GOOS is the OS target of the binary
# -a forces recompilation of all components
# you can replace get with build and the GitHub URL with a path to the directory with the code
# the -s ld option strips the symbols from the binary making it smaller
$ for d in $(for g in $(find "$GOPATH" -name .git); do r=${g%.git}; b=$(cd $r && git rev-parse --abbrev-ref HEAD); if [[ $b == HEAD ]]; then echo "$r"; fi; done | grep -v -F '/atomisthq/'); do echo "$d"; (cd "$d" && git fetch && git checkout master && git rebase); done
@ddgenome
ddgenome / coreos-ami-info.bash
Created August 10, 2016 15:40
Get CoreOS AMI information from AWS
#!/bin/bash
for c in stable beta alpha; do
for ra in $(curl -s "https://coreos.com/dist/aws/aws-$c.json" | jq --raw-output 'del(.release_info) | del(."us-gov-west-1") | map_values(.hvm) | to_entries | .[] | "\(.key):\(.value)"'); do
r=$(echo "$ra" | cut -d : -f 1)
a=$(echo "$ra" | cut -d : -f 2)
echo "$c $r $a"
aws --region "$r" ec2 describe-images --image-id "$a" | jq '.Images[].Name?'
done
done
exit 0
@ddgenome
ddgenome / defer-capture-error.go
Last active October 5, 2016 15:38
Capture an error in a Go defer function
import (
"fmt"
"io/ioutil"
"os"
)
func f() (e error) {
tmpDir, tmpErr := ioutil.TempDir("", "prefix")
if tmpErr != nil {
return nil, tmpErr
@ddgenome
ddgenome / cli.yml
Created January 31, 2017 02:36
Default Rug CLI configuration
# Set up the path to the local repository
local-repository:
path: "${user.home}/.atomist/repository"
# Set up remote repositories to query for Rug archives. Additionally one of the
# repositories can also be enabled for publication (publish: true).
remote-repositories:
maven-central:
publish: false
url: "http://repo.maven.apache.org/maven2/"
@ddgenome
ddgenome / cli-publish.yml
Last active February 3, 2017 05:19
Rug CLI configuration for publishing Rug archives
# Set up the path to the local repository
local-repository:
path: "${user.home}/.atomist/repository"
# Set up remote repositories to query for Rug archives. Additionally one of the
# repositories can also be enabled for publication (publish: true).
remote-repositories:
maven-central:
publish: false
url: "http://repo.maven.apache.org/maven2/"
@ddgenome
ddgenome / atomist-link-image-webhook-codeship.bash
Created May 22, 2018 18:12
Atomist Link Image Webhook - Codeship
@ddgenome
ddgenome / rbac-noaccess.ts
Created January 15, 2019 16:56
Kubernetes RBAC role, service account, and role binding for no access to in-cluster Kubernetes API
import * as k8s from "@kubernetes/client-node";
import { DeepPartial } from "ts-essentials";
const serviceAccount: DeepPartial<k8s.V1ServiceAccount> = {
apiVersion: "v1",
kind: "ServiceAccount",
metadata: {
name: "noaccess",
},
};
const role: DeepPartial<k8s.V1Role> = {
@ddgenome
ddgenome / k8.bash
Last active July 5, 2019 08:00
Kubernetes bash functions
# bash kubernetes functions
# kubectl with kubeconfig
function k () {
kubectl --kubeconfig=kubeconfig "$@"
}
# exec shell in pod
function k8sh () {
local p="$1"
shift
@ddgenome
ddgenome / kaniko-gvisor-test.bash
Last active February 28, 2020 18:50
Run various versions of kaniko against runc and various versions of gVisor
#!/bin/bash
# test kaniko under gvisor
declare Pkg=kgtest
declare Version=0.1.0
set -o pipefail
# usage: msg MSG
function msg () {