Skip to content

Instantly share code, notes, and snippets.

@ukayani
ukayani / test.js
Last active Sep 10, 2020
test.js
View test.js
//exercise 1
function toLeet(input) {
let leet = {
a: "4",
A: "4",
e: "3",
E: "3",
i: "1",
I: "1",
@ukayani
ukayani / main.tf
Created Jan 11, 2019
Kubernetes Rollout Status - Terraform External Data Source
View main.tf
resource "local_file" "kube_config" {
content = "${var.kube_config}"
filename = "${path.module}/kubeconfig"
}
# Hacky way to force a dependency on some external resource (since modules dont support a depends_on)
data "template_file" "deps" {
template = "${join(",", var.depends_on)}"
}
@ukayani
ukayani / kubernetes-status_main.tf
Created Jan 11, 2019
kubernetes rollout status external data source
View kubernetes-status_main.tf
resource "local_file" "kube_config" {
content = "${var.kube_config}"
filename = "${path.module}/kubeconfig"
}
# Hacky way to force a dependency on some external resource (since modules dont support a depends_on)
data "template_file" "deps" {
template = "${join(",", var.depends_on)}"
}
@ukayani
ukayani / movestate.sh
Created Jan 8, 2019
Terraform/Terragrunt wrapper module state move
View movestate.sh
#!/bin/bash
# Lets say we have all resources under state /A using module A
# We decide to wrap all the resources of the module into a inner module B
# So now all resources that were orignally top level in A are now top level in B
# Normally if we try to plan our changes, terraform will want to delete all resources originally under A and create new ones under B
# However, we may not want that (what if our resources are vpc level resources that we cant afford to delete)
# Terraform provides a state move command
# We can list all the resources in a module via `terraform state list`
# We can pipe this list to xargs and for each resource we can move it to the new prefix, ie. under inner module B.
@ukayani
ukayani / params.sh
Last active Dec 4, 2018
BashNamedArgs
View params.sh
#!/usr/bin/env bash
set -o pipefail
set -o nounset # fail on unset var usage
set -o errexit # exit on command failure
err_report() {
echo "Exited with error on line $1"
}
# prints errors out along with line number
@ukayani
ukayani / sample.sbt
Last active Oct 11, 2018
SBT Environment Variables
View sample.sbt
val mavenResolver = sys.env.get("TOKEN").map(token => Seq("repo" at s"https://repourl/maven2"))
resolvers ++= mavenResolver.getOrElse(Seq.empty[Resolver])
View retry-batch-source-akka-streams
object Stage {
/**
* A source which feeds an initial batch into a provided flow and emits when entire batch is completed while retrying
* unprocessed elements with a backoff strategy.
*
* The provided flow must accept a set of elements and emit a subset containing unprocessed items or an empty set if
* all elements are processed successfully
*
* @param flow a flow which processes sets at a time and emits corresponding sets containing unprocessed items (if any)
* @param minBackoff min time to back off when retrying unprocessed elements
@ukayani
ukayani / ssh-tunnelling.sh
Last active Apr 10, 2020
SSH Tunnel example to access http server on private AWS network
View ssh-tunnelling.sh
// Goal: Be able to do a curl from local to server in AWS private subnet
// Host - The machine running the server in a private subnet
// Bastion - A machine which has access to the Host in the private subnet. You need to have SSH access to this machine
// Local - Your local machine
// Normally, if you SSH into your Bastion, you are able to curl the DNS/IP of the private Host machine running your server
// To be able to curl from your local machine, you'll need to set up a tunnel between your local and the bastion
// When you tunnel, you have to provide the DNS/IP of the private Host as seen from the Bastion. This will typically be a private IP
// an internal DNS name
@ukayani
ukayani / service.json
Last active Nov 21, 2017
A service definition for ECS
View service.json
"Service": {
"Type": "AWS::ECS::Service",
"Properties": {
"ServiceName": "theatre-service",
"TaskDefinition": {
"Ref": "TaskDefinition"
},
"DesiredCount": 3,
"LoadBalancers": [
{
@ukayani
ukayani / task-definition.json
Last active Nov 21, 2017
ECS Task Definition for deploying an Akka cluster
View task-definition.json
"TaskDefinition": {
"Type": "AWS::ECS::TaskDefinition",
"Properties": {
"ContainerDefinitions": [{
"Name": "theatre-example",
"Image": "loyaltyone/theatre-example:latest",
"PortMappings": [{
"ContainerPort": 8080,
"HostPort": 0
}, {