Skip to content

Instantly share code, notes, and snippets.

View briceburg's full-sized avatar

Brice Burgess briceburg

  • toil over toil
  • albuquerque, nm
View GitHub Profile
@briceburg
briceburg / build-docker-images
Created October 18, 2023 01:37
bin/build - Docker Image building shell wrapper
#!/usr/bin/env bash
set -eo pipefail
project_root="$(cd "$(dirname "$0")/.." ; pwd -P)"
default_env="prod"
default_src="Dockerfile"
default_tag="build:latest"
(
echo "Build Dir: ${BUILD_DIR:=$project_root}" >&2
@briceburg
briceburg / Dockerfile
Last active April 12, 2023 20:39
TCP Proxy to a Postgres Database - HAProxy Configuration Example
FROM haproxy:2.7-alpine
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
ARG SOURCE_COMMIT=""
ENV DD_SERVICE="haproxy" DD_ENV="local" DD_VERSION="$SOURCE_COMMIT"
@briceburg
briceburg / main.tf
Last active March 21, 2023 18:45
Terraform ECR authentication
resource "aws_ecr_repository" "repo" {
name = "foo"
}
data "aws_ecr_authorization_token" "repo" {}
#
# providers.tf
#
@briceburg
briceburg / reduce_replacements.py
Last active February 4, 2023 07:17
Python multiple replacements using reduce
#!/usr/bin/env python3
import sys
import functools
for line in map(str.rstrip, sys.stdin):
repls = ('prod', 'production'), ('sdlc', 'staging'), ('sandbox', 'development')
print("terraform state mv %s %s" % (line, functools.reduce(lambda a, kv: a.replace(*kv), repls, line)))
@briceburg
briceburg / README.md
Last active March 7, 2023 17:43
Aligning RAILS_ENV, DD_ENV, Amplify Stage, Namespace Stage in AWS Deployments

Questions

  • should RAILS_ENV == DD_ENV
  • should DD_ENV == NAMESPACE_STAGE

how do we make these decisions?

current environment

  • lower level deployed heroku apps use 'staging' as RAILS_ENV.
@briceburg
briceburg / versioning-and-releases.md
Last active December 8, 2021 16:29
eight bullet versioning and release process

releases

  • semantic versioning is used
  • a branch is created for every major release, e.g. release-1.x, release-2.x, &c.
  • when ready to make a release;
    • update any changelogs and documentation with release information, commit/merge to main. ensure CI passes.
    • if backporting fixes into past releases, follow the backporting procedure from containerd, else merge main into the current release branch. e.g. main -> release-2.x.
    • checkout current release branch and update files/version with the current point release, e.g. change 'main' to 2.1.18-rc1.
      • make a release commit (e.g. with message "RELEASE 2.1.18-rc1").
  • tag the release using v as a prefix, e.g. git tag v2.1.18-rc1 && git push --tags
@briceburg
briceburg / packer.json
Last active August 5, 2021 19:33
convert Ubuntu AMI from MBR partitioning to GPT partitioning
// the following assumes AWS nitro (e.g. t3.*, m5.*, &c) instances (which use /dev/nvme0n1 as root disk)
// "safely" switches from MBR to GPT partitioning in Ubuntu < 21.04 or other AMIS.
// Tested using gdisk 1.0.3 from 18.04 / Bionic.
// after the change, you can use >2TB root disks. either initially, or by resizing a smaller one -- in nitro and non-nitro types
provisioners: [
{
"type": "shell",
"inline": [
"echo Converting to GPT - AWS nitro type instance",
@briceburg
briceburg / print-jenkins-secret-file-contents.groovy
Created June 8, 2021 16:08
Print content of secret files from the Jenkins Credentials Store
import com.cloudbees.plugins.credentials.*;
import com.cloudbees.plugins.credentials.domains.Domain;
import org.jenkinsci.plugins.plaincredentials.impl.FileCredentialsImpl;
//
// modify fileName to match the filename of the secret(s) you want to print.
// (ID would probably be more helpful... yay stack overflow copy pasta)
// alternatively comment out the filter [line 15] to dump all secret files.
//
def fileName = "secrets.env"
@briceburg
briceburg / create-postgresql-databases.sh
Last active February 14, 2023 00:41
official PostgresSQL docker images - create multiple databases
#!/bin/bash
set -e
if [ -n "$POSTGRES_DATABASES" ]; then
echo "POSTGRES_DATABASES provided. Creating multiple databases..." >&2
IFS=', '; for db in $POSTGRES_DATABASES; do
echo "Creating '$db'" >&2
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-ESQL
CREATE USER "$db";
CREATE DATABASE "$db";
@briceburg
briceburg / main.go
Created January 13, 2021 03:18 — forked from walm/main.go
Simple Golang DNS Server
package main
import (
"fmt"
"log"
"strconv"
"github.com/miekg/dns"
)