Image for post
Image for post

Localstack has become popular in the DevOps and AWS local testing space.

I was looking to gain some basic experience with Terraform Cloud and using Localstack as the AWS provider with minimal or no firewall/router configuration changes. To achieve this would require localhost be accessible from the Internet.

This article is a guide on using tunnelling service to achieve the set up by enabling access to localhost via a public URL solely for the purposes of sandpit testing.

Signup for a Terraform Cloud Account

Hashicorp Terraform Cloud offers access to a free account with feature limitations. …

If you’ve interfaced with Devops teams, chances are that you’re well aware of tools used to manage infrastructure and application releases. Serverless holds a place on this long list.

Having worked with AWS, I became interested in exploring how Serverless fits into this space. This article outlines the learnings from setting up Serverless to work with Localstack for the purposes of testing application provisioning.

The aim is to create and deploy a service helloservice comprising of a basic hello Lambda function.

Installing Serverless

The following command installs Serverless onto a Linux host:

$ curl -o- -L | bash

As part of the process, the serverless binary path is appended to the PATH environment variable within ~/.bashrc, so we run the following to refresh our profile. …

As of now, Google has yet to release an official backup/sync client for Linux, and as a frequent WSL2 user, I was after a solution that would allow automated backups to Google drive from the WSL2 Linux file system/distro.

I’m a big fan of both Windows & Linux, and the evolution of WSL2 (with an actual Linux kernel) is making it easier to work in an almost “real” Linux environment without the need for third-party virtualization software. …

The inspiration for writing this article came after reading the following on Airflow extensibility using CWL-Airflow:

The latest documentation, published by the above developer/s, can be found at,

With the documentation link above and concepts learned from, what follows is an outline of setting up a cwl-airflow Docker Compose stack.

A git repo containing the stack components be found at this link.

This stack is not intended for use on a public network. Windows 10 WLS2 running Ubuntu 20.0 LTS from the MS Store was used as the host environment, with WSL2 integration enabled via Docker for Desktop. …

Image for post
Image for post

In the space of Data Science/Analytics, we rely heavily on automation to drive insights from several data sources. Docker, Python, node, JSON and YAML are a amongst a wide range of technologies used as part of the automation.

I recently came across Rabix and Common Workflow Language (CWL) in the space of biomedical research. As a developer, and not having come from a biomedical background, I wanted to explore opportunities for using Rabix/CWL.

After looking into Cancer Genomics Cloud and signing up, I started to get a feel for Rabix/CWL. I decided to setup a local Rabix/CWL playground on my Windows WSL2 environment. …

Image for post
Image for post

The main objective of this article is to demonstrate a procedure for building a local DevOps mock environment on a Windows 10 Pro (version 2004) host using WSL2 & Docker.

The local environment we aim to build comprises the following containers/images:

Docker-compose will be used to network the containers using static IP addresses within a docker network.

Before running the network, each image/container will be discussed and configured in isolation (where required). This will hopefully provide an insight of each component.

Once the environment is up and running, a Jenkins pipeline will be setup to achieve the…

This write-up outlines methods of working with the AWS Secure Token Service (STS) and Federated user accounts, where Google has been established as the Identity Provider. It is based on a recent experience where AWS programmatic access was only permitted via STS temp credentials.

A summary of the scenario and what we aim to achieve are as follows:

  • You are a developer working with the aws cli for the purposes of testing your Dev stack.
  • Your organisation has enabled SSO via SAML, with Google as the Identity Provider.
  • Your Google account ( has been provisioned for access to AWS.
  • Access to AWS resources requires that you authenticate using your Federated user and request temporary credentials using the Secure Token Service (STS). You are advised that the role you need to “assume” to request the credentials is, arn:aws:iam::111222333444:role/saml-init. …

Image for post
Image for post

Going through my clutter of gadgets, I came across an old Android ZTE Axon 7 (A2017G) phone that was running Nougat. It’s been lying around for a while, and I was looking for (as usual) an excuse to kick off another one of my tech-discovery projects.

I was reading up on LineageOS — a fork of CyanogenMod. CyanogenMod’s roots originate from the Android Open Source Platform (AOSP).

I could just download an existing Lineage build zip and flash it onto the Axon…but that’s no fun.

What was more of an appealing option, was building the OS from source using base LineageOS 15.1 repo and the official ZTE Axon 7 git device-specific source branch (LineageOS 15.1 Axon Tree). There’d more satisfaction from installing a build I’ve generated vs somebody else’. It would also be a stepping stone into the sphere of Custom ROMs and Android tweaking. …

Amongst the different types of virtual disk images, we occasionally bump into the .img type.

There are various methods that can be used when analyzing or working with these virtual disks, and/or their respective partitions.

This article describes some of these alternative options using a combination of mount, losetup, kpartx and loop devices.

Packages Required

Installing kpartx for mapping partitions. Using apt on Ubuntu, kpartx can installed as follows:

sudo apt install kpartx

Virtual Disk Image Demo Details

For examples used throughout the article, we’ll be using the .img file, as listed below, consisting of 2 partitions. Our primary focus will be on manipulating/mounting the data partition (i.e. …

This article aims to:

  • describe the process for installing SuperSU or Magisk on an Android AOSP 10 Virtual Device (AVD) using the official Emulator, which is provided as part of the Android SDK tools
  • provide insight into the behaviour of SuperSU/Magisk su binaries vs AOSP's default su binary
  • highlight constraints that have been implemented for Android Builds starting from 9 and onwards, particularly in relation to partition layouts and the init process
  • highlight the limitations of working with/installing Magisk/SuperSU using Android’s SDK emulator


Android Studio SDK Emulator & AVD

  • The Android Virtual Device (AVD) that will used, runs using the Android SDK with an Atom x64 Image. …


Tony Tannous

Primarily a Learner/Coder with interests in Python, Cloud Technologies, Security and Automation. Pandas munching on Bamboo sticks give me the “Giggles” :))

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store