CAT: openstack


Juju GUI nginx proxy

In LXD on localhost we introduced using LXD container to bootstrap a Juju controller. But how to access the Juju GUI? Launching it is easy enough with $ juju gui from juju host; accessing it from anywhere outside the host is a challenge. One way is through $ ssh -X to the ...


Juju local LXD

Using Juju's LXD provider is the least-hassle way to start an experience of Juju and its charms. However, if you have done charm development for a while, you know making a one line of code change, deploying charm, then wait to see the new code got executed ← it's ...


Charm Ansible integration

Let's face it. Ansible has the mouth (and market) share these days. For our modeling purpose, we are to utilize its procedural strength to carry out actions, which provides an abstraction instead of coding in charm's Python files.

Design objectives:

  1. Design as reusable layer(s)
  2. Be compatible with ...


Charm layer-basic

Have you ever wondered what layer-basic is for? and why every charm needs to include it? In this article we will take a look at its code base to decipher this mystery.


We already know hooks are hardcoded. Juju expects certain hooks and hook sequence is always executed in ...


Juju charm Python2

Charm is based on Python 3 while RHEL/CentOS7 ships


Charm Reactive

Charm's reactive framework is the core of charm design and


Charm chained states

This charm is created to demonstrate chained states using Juju charm. Chained states is essentially mirroring a pattern of any sequential execution in a workflow. Potentially each execution block can also have conditions to set the next state, even though this type of knowledge should be exposed outside function element ...


MAAS vs. Ironic

This article is to analyze Openstack Ironic and Canonical MAAS, both are tools to turn baremetal into a pool of managed resources that are ready for consumption by upstream srervice. On the highest level, a baremetal is either managed or not-managed. Being managed requires that the manager is aware of ...


Baremetal provisioning

Everyone of us has installed an operating system to a computer at some point in life. It is easy to perceive inserting a disk or USB key to make this happen because the OS files are there. A fancier version is to boot from network using PXE boot option, which ...


Openstack Ironic

This article is an outcome of my writing a Juju-Ironic provider. The plan was to first figure out Ironic APIs that will achieve what Juju provider needs — start an instance on demand, then build those REST requests into Juju provider code. After playing with Ironic API and Openstack's Devstack ...


Introduction of Juju charms

Juju charms are, charming. It promises a selection of blueprints that hold magic to make an application deployment easy. But devils are in the details, as always the case. In this article we will walk in the charm world to learn its design.

Bundle, charm, service, application

Juju terms can ...


Juju deploy and Provider

In this article, we have demonstrated how Juju deploys a charm, including what makes a node eligible as a target and what files will be put on by the deployer.If you recall, there were four steps in a deploy process:

  1. Add a new machine to the cloud environment. In ...


Juju charm deployment

We have covered Juju's bootstrap phase. In this article, we will continue our research into another important function — juju deploy.

Deploy will command a node to pull down requested charm and install whatever needed based the charm's instruction. As the bootstrap research, I'm interested in the internal ...


Juju bootstrap process

The very first command user will encounter is the juju bootstrap. It createa a special machine — state controller, machine-0, control node, etc. — naming convention aside, it is the brain that tracks others nodes in the cloud, applications installed and their status.


Through research I want to learn about its ...


Juju charm model

This article is a high level view of Juju's internal modelings. For me it was fairly confusing when looking at its document which has an army of these concepts: charm, bundle, model, unit.... of course, each of them makes sense after a while. Its terminology page helps on understanding ...


Targets in MAAS lab

After setting up the MAAS server and its subnet, bringing up a target node is simple.

All nodes must be on the same subnet, and they must support PXE boot.

PXE boot

The MAAS machine functions as both the DHCP server and the TFTP server ...


Setup a MAAS Virtualbox lab

Canonical MAAS is a deployment tool that can give a bare metal life by putting an OS on it. Working together with Juju, they can setup a cluster of applications quite quickly. Think of them as a package manage like Ubuntu's apt-get, but in the context of a cloud ...