Memo Garcia

Software Engineer

Cloud Architect

Wizard lvl 9


Why am I always busy?

I’m trying to learn everything at once. I’m trying to do everything at once. … Except what I should be doing right now.

August 30, 2022 · 1 min · Memo Garcia

Demystifying Kubernetes

Kubernetes is becoming a monster and as it grows it becomes more and more challenging for newcomers to understand it. My goal is to demystify its components. Main components There are two main components in a Kubernetes cluster. Master nodes Worker nodes The only difference is the workloads they run. You can assign metadata to these nodes to schedule specific workloads on each node or type of node. For Users Containers A container is a filesystem and process wrapped in a “box” with some labels on it....

June 30, 2022 · 3 min · Memo Garcia

A lesson from my dog

Looming recession !! , third world war !!, climate change !! Meanwhile taquito…

June 28, 2022 · 1 min · Memo Garcia

How to use GitOps in a non-cloud-native environment

The rapid development and adoption of cloud-native stacks that brings a better developer experience, security, reproducibility and speed at which organizations deliver value are leaving more traditional stacks behind. Hence, there is more pressure from the markets, organizations and developers to bring those stacks into a more modern era. We often wonder whether the same techniques and toolchains of these modern stacks can be used to configure not-so-modern applications or infrastructures....

March 4, 2022 · 4 min · Memo Garcia

Setup multiple git identities and pgp keys

Be very carrefull in your setup : any misconfiguration make all the git config to fail silently ! Setup multiple git ssh identities for git Generate your SSH keys as per your git provider documentation. Add each public SSH keys to your git providers acounts. In your ~/.ssh/config, set each ssh key for each repository as in this exemple: Host HostName User git IdentityFile ~/.ssh/github_private_key IdentitiesOnly=yes Host Hostname gitlab....

March 4, 2022 · 2 min · Memo Garcia

i3 running on WSL2

WSL configuration Install i3 sudo apt install i3 -y Create an init script vim ~/src/scripts/ #!/bin/zsh source ~/.zshrc # If not running interactively, don't do anything [ -z "$PS1" ] && return export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0 export LIBGL_ALWAYS_INDIRECT=1 dbus_status=$(service dbus status) if [[ $dbus_status = *"is not running"* ]]; then sudo service dbus --full-restart fi i3 To run WSL2 as root wsl.exe -d Ubuntu-20.04 -u root -- /bin/bash Windows configuration Install vcxsrv from powershell...

September 23, 2020 · 2 min · Memo Garcia

Understanding Computer Networks by Analogy - Part 2 - Switches and Routers

Switches or “The floor concierge” Imagine that you want to send a package from room 69 to room 62. In a typical building you cannot go to your neighbor and give them the package, it’s rude, you need to do it through the floor concierge. The concierge or switch has a table of everyone’s door numbers: | Floor | Room number | Door number | |-------|-------------|-------------| | 6 | 602 | 1 | | 6 | 609 | 1 | Remember that each room can have many doors....

August 21, 2020 · 4 min · Memo Garcia

Understanding Computer Networks by Analogy - Part 1 - Networks and subnets

Prologue There are many ways to learn something new and no approach is best. But, what works best for me is a combination of trial and error and learning by first principles. But, as someone once said: Knowledge is only valuable when it leads to taking action on an idea. And as long as you share that knowledge you are taking action on an idea. Just one big question is: how to share them?...

August 20, 2020 · 3 min · Memo Garcia

Modular CLI Documentation Fuzzy Finder

Fuzzy Search documentation from the CLI. See it in action here Disclaimer This tool was built to learn FZF capabilities. Feel free to use it or extend it. Usage doc-fzf ansible doc-fzf ansible -q yum Installation pip3 install doc-fzf Verify your installation: doc-fzf -h usage: [-h] [-q QUERY] module_name doc-fzf. positional arguments: module_name Name of the module to search optional arguments: -h, --help show this help message and exit -q QUERY Query the docs Extending Doc-FZF doc-fzf is a modular application....

June 14, 2019 · 1 min · Memo Garcia

Generating a dynamic host inventory for ansible with Netbox

Usage: pip install pynetbox ansible ansible all -i hosts/env -m setup --tree /tmp/facts/env #!/opt/netbox/bin/python import argparse import json import os import sys import pynetbox import yaml import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) if sys.version_info < (3, 6): print("Python 3.6 is required") sys.exit(2) def to_json(in_dict): return json.dumps(in_dict, sort_keys=True, indent=4) def load_configuration(path="/etc/ansible/netbox.yml"): """ Load netbox configuration /etc/ansible/netbox.yml """ try: with open(path, "r") as fd: return yaml.safe_load(fd) except yaml.YAMLError as yml_error: print(yml_error) NETBOX_ENDPOINT = load_configuration()["netbox_endpoint"] NETBOX_TOKEN = load_configuration()["netbox_token"] if not NETBOX_ENDPOINT: raise OSError("environmet var NETBOX_ENDPOINT not set") if not NETBOX_TOKEN: raise OSError("environmet var NETBOX_TOKEN not set") nb = pynetbox....

January 10, 2019 · 3 min · Memo Garcia

Some Richard Feynman videos

The World from another point of view Fun to imagine Knowing versus Understanding

January 4, 2019 · 1 min · Memo Garcia

Waju - A fun and brutal game

Waju or whatever is called is a game that until this day I don’t know from where it comes. But, is fun. Edit: The game is based on a German game called Mensch ärgere Dich nicht Goal The goal of the game is very simple: Move your marbles for one lap from your home to your goal. Don’t worry about winning but don’t let anyone else win. Have fun. Board The board has six main components:...

January 4, 2019 · 4 min · Memo Garcia

Beyond PEP 8 - Best practices for beautiful intelligible code

January 3, 2019 · 0 min · Memo Garcia

Linux on Huawei Matebook X Pro

This laptop has very decent specs: 8th Generation Intel® Core™ i7-8550U processor GPU: NVIDIA® GeForce® MX150 with 2 GB GDDR5 / Intel® UHD Graphics 620 16 GB LPDDR3 2133 MHz BT 4.1 (compatible with 3.0 and 2.1+EDR) 512 GB NVMe PCIe SSD Don’t expect running workstation level workloads in this machine but it is a wonderful dev machine. Things I don’t like about the laptop Palm rejection, especially this one, maybe this is Linux....

December 4, 2018 · 3 min · Memo Garcia

Deploying OpenStack with Docker

Note This is a Work-In-Progress Document and the most up-to-date information is available at: Deploying OpenStack using containers allows easy customisation and flexibility on how to deploy the platform for development, testing and production environments. Current deployment: stable/queens Host configuration The default configuration for this environment is composed by 3 main components that need to run on the host: Docker Libvirtd OpenVSwitch Docker will act as the control plane for OpenStack while the host will provide the hypervisor, network and storage....

May 5, 2018 · 2 min · Memo Garcia

Becoming a Certificate Authority (CA)

A Certificate Authority or CA is an entity that signs digital certificates. These digital certificates are used to validate the connection while using secure mechanisms. Generating a root CA We will use a root CA to create intermediate CA’s which are trusted to sign certificates on its behalf. First, prepare the environment. mkdir /root/ca && cd /root/ca mkdir certs crl newcerts private chmod 700 private touch index.txt echo 1000 > serial Then download the template for /root/ca/openssl....

February 5, 2018 · 3 min · Memo Garcia

Pratai, event driven platform for OpenStack

Note This is a Work-In-Progress Document. Read the docs at memogarcia/pratai-docs Abstract Pratai provides an incredibly flexible and resilient platform to migrate workloads to the cloud that respond to events without having to manage any server or network. How it works The goal of Pratai is simple. Deploy “code” (disclaimer, from now on I will refer to code as functions), that will react to an event without worrying about anything else, the platform handles the execution....

January 5, 2018 · 6 min · Memo Garcia