Getting Git Submodule Detailed Status

The Story

I manage every one of my Chef cookbooks as a single git repository, complying with the BerkShelf paradigm. I keep them all as submodules in a "supermodule", to allow my teammates to easily clone them all. I can use git status from the supermodule to get submodule information …

more ...

CSV Tricks

The Story

I've been requested to recreate some spreadsheet for our execs. Being annoying as usual, I made it a point to only use scripting to build the tables.
Most of the reconstruction is interesting in an unrelated way, but I wanted to post about some little gimmicks that helped …

more ...

Troubleshooting StatsD

About StatsD

StatsD is a tool developed by Etsy and Flickr (complicated story).
Its main use is providing a middleman for Graphite, which is a real-time graphing tool, mainly used for performance metrics.
Thanks to StatsD, I can use TCP sockets between servers (guaranteeing packet delivery), while processes generating the …

more ...

SSH vs OpenVPN for Tunneling

Update 28.01.16

I found some sites referring to this post. Below are the common complaints I saw, and my replies:

  • I'm criminally bad with setting up OpenVPN, meaning the testing is completely off
    I'm not an expert in networking, but I have a working knowledge of it and …

more ...

AWS's Block Device Mapping in CentOS

The Story

I'm using Amazon's EC2 for some of my VMs, which run CentOS. When viewing Block Device Mappings (mapping between the virtual storage - ebs, ephemerals etc. and the block devices inside the VM) in CentOS 6.5, I ran into an annoying issue. When inspecting my instance metadata using …

more ...


Git Prompt Variables

I recently reinstalled my laptop and had to reconfigure my git prompt. I use the git prompt script that is included in Ubuntu's git package, and integrate it into my prompt by editing ~/.bashrc, executing source /etc/bash_completion.d/git-prompt, and adding $(__git_ps1) to my PS1 variable, just before the …

more ...

Validating network segments using Puppet

The Problem

When configuring KeepaliveD using Puppet, sometimes an interface name has to be used. Imagine a server with 2 interfaces (eth0,eth1), where one is facing the internal network and one is facing the internet.
My puppet configuration for an internet-facing virtual interface can be something like:

keepalived::vrrp …
more ...

Accessing a specific server in an HTTP cluster

The Problem

Part1 - Fault tolerence

A common configuration of web servers is setting up multiple servers to serve the same content, with a load-balancing method redirecting / forwarding clients to a specific server.
For instance, let's say I'm using servers server and otherserver to serve the site cluster-name.
The cheapest (as …

more ...

Linux and SSDs - Should You TRIM?

Note: Although my experience is with Debian, I think this post helps anyone using some modern Linux distribution.

What is TRIM?

As a Windows sysadmin, I didn't really consider the cons of running on top of Solid-State Drives, or SSDs. These drives are based on flash memory (similar to a Disk-On-Key), rather than metallic plates.
A big difference between magnetic hard drives and SSDs is block reuse. more ...