Archives For Linux


Getting to Know Containers

Containers have sparked genuine interest over the last few years. As a developer, I’ve had my fair share of “It Works on My Machine” days, where I spent an interesting amount of my time trying to identify why my code doesn’t run in a given environment. Did I make a mistake? Did someone else make a mistake? Uncertainty, risk and the Human Factor definitely make for adrenaline packed all-nighters. Continue Reading…


Using ARM to Deploy Global Solutions

Imagine deploying your secure load balanced solution to three datacenters, putting in place a worldwide load balancer and doing so in roughly 24 minutes. Did I mention that this deployment is predictable and repeatable?

Good, now that I’ve got your attention, it’s time to dive in!

Building on my previous post about managing compute resources on Azure I decided to modify the Azure Resource Manager(ARM) template to deploy a real-world environment to three datacenters (Yes I know, the diagrams shows two locations, but as I built the demo, I got greedy…). Using Azure Traffic Manager we are able positively affect a users experience by directing them to the closest datacenter.

Its important to note that ARM does not support nested copy operation. This means that we have to use a different strategy to deploy identical environments in multiple Azure regions. After a bit of research it became apparent that I had to use nested deployments. This technique requires us to break our template into multiple files. The parent template in this demo is the azuredeploy-multi-geo.json file. It contains the full list of parameters, a nested deployment that deploys instances of our environment to multiple Azure regions, and a Traffic Manager definition. The azuredeploy.json template file was refactored from the template used in my previous blog post. It contains networking, storage and Virtual Machine definitions. Continue Reading…


Provisioning a New Data Disk

Working with Linux on Azure has brought me back to the basics. This post is all about adding a new Data Disk to an existing Azure CentOS Virtual Machine. If you don’t have a Virtual Machine handy, I wrote a short walkthrough to help you get going. Continue Reading…


Disk UUIDs and Linux on Azure

I recently ran a few tests to figure out how UUIDs behave on Azure when we capture VM Images, copy VHDs, move Virtual Machines and re-provision them in different data centers. Continue Reading…


Using CLI to Capture and Deploy VMs

Capturing and deploying Virtual Machines is a routine job when we work with IaaS Dev and Test environments on Azure. If you’ve worked with the Azure PowerShell CmdLets in the past, this will feel quite familiar.

Let’s dive in!

Before we start, it’s important to have the Azure CLI installed on our machine.

There are few ways to install the Azure CLI.

  1. Using an installer
  2. Installing Node.js and npm and then using the npm install command
  3. Run Azure CLI as a Docker container

Once the Azure CLI has been installed, we are able to use the azure command from a command-line interface (Bash, Terminal, Command prompt) to access the Azure CLI commands.
Continue Reading…


Moving to a New Azure Datacenter

From time to time, I face interesting challenges. Azure is an exciting platform, because it’s pushing me to learn about things that I wouldn’t of dreamed of a few years back.

This post is all about moving a CentOS Virtual Machine that has a RAID 0 to a new Microsoft Azure Datacenter. Continue Reading…


Oops . . . did I delete that VM?

Accidents happen. Resource Locks help prevent them.

The Resource Lock level is applied at the resource group or resource scope. These can be set by the administrators can be set to CanNotDelete.

Using a modified version of the ARM Template from a post on creating a CentOS Virtual Machine, let’s provision a VM that is protected it from accidental deletion. The best thing about creating locks in ARM Templates, is that it centralizes the configuration. It makes it easier to maintain and simplifies our workflow.

As a best practice, we should consider creating Resource Locks for mission critical resources in our Azure Resource Manager (ARM) Templates.

Continue Reading…


While I was playing around with the Azure Resource Manager Copy Operation, I started thinking about what I could do with it. The first wild idea that popped into my head was, to use it to deploy multi-geo environments from a single ARM Template.

Alright, some of you might think that it’s not such great idea, and I can appreciate that. But I’m just too curious, so let’s give this a chance. Continue Reading…