Category Archives: CI

Deploy Large Stacks Easily in ANY Cloud with Juju

First, a lot of people will ask, “What is Juju?”.  I had also not heard of it; however after using it, I can say it is an amazing piece of software.  It is made by Canonical, and this is their description of it:

“Juju is a state-of-the-art, open source modelling tool for operating software in the cloud. Juju allows you to deploy, configure, manage, maintain, and scale cloud applications quickly and efficiently on public clouds, as well as on physical servers, OpenStack, and containers. You can use Juju from the command line or through its beautiful GUI.”  

Essentially, JuJu makes deploying large, complicated, and difficult piece of software a breeze.  It also has a great GUI, and CLI tools.  It also supports many clouds as you can see below. 

I am currently testing this for my use case.  However, if you have to manage several clouds/customers/etc, it has the potential to save tons of time from an operational perspective.

 

Want to install it? Super easy on Ubuntu via a SNAP:

sudo snap install juju --classic

This will setup a new controller on your system behind a NAT’d interface.  It will then walk you through the setup.  Also, I highly recommend a run through of the install documentation; especially if you are going to run it on your own hardware; or localhost (LXD).  Recommended for ‘easy’ setup are the following: Ubuntu 18.04+, LXD, and ZFS (if on your own servers). ZFS is highly  recommended by myself for many other reasons we can get into later, see ZFSonLinux.org.

Don’t forget! Linux Learning Resources

This is kept under the Linux Learning Project and Learning Resources section of the site, and is updated occasionally with new links.  Feel free to suggest one by contacting me directly.


LEARNING RESOURCES

Help/Chat:

Resources:

Need DevOps Help?

  • Had issues with your DevOps pipeline?
  • Need help streamlining automation or configuration management?
  • Need to green field or “lift and shift” applications into the cloud?

If you are trying to do any of these, and running into issues please contact me.  I am now open to consulting directly.  Fixing even a few small inefficiencies can have a huge impact on the bottom line.  Not only that, if the DevOps philosophies are really taken up, its likely that the employee base will also be happier, and proud of their accomplishments as a team.

As far as technologies I support, please take a look at my Technologies page.  (Updated often)  I am also happy to take on new ones for a project if needed.

Creating an efficient pipeline is what I do; and a fully functional system that is working well can be an amazing thing.

 

Matthew Curry
MattCurry.Com

 

What is Revision Control? (GIT/SVN)

A component of software configuration management (aka SCM), version control, also known as revision control or source control, is the management of changes to files and source. Changes are usually identified by a number or letter code, termed the “revision number”, “revision level”, or simply “revision”. For example, an initial set of files is “revision 1”. When the first change is made, the resulting set is “revision 2”, and so on. Each revision is associated with a timestamp and the person making the change. Revisions can be compared, restored, and with some types of files, merged.

Revision control can be very confusing to someone new, as you can see there are many ways to say the exact same thing.  This can make it difficult to pick up the concepts.  There are also many different kinds as you can see here.  However, the major one I would hope everyone would be familiar with is GIT, and SVN for the older folks. JJ… 😛

Git, invented by Linus Torvalds as mentioned here is the most prolific and widely used one out currently.  I also have a links under my Learning Resources page that are great for learning GIT.  Please keep in mind that GIT, and GitHub or two differnt things.  One is the software/method, and the other is a service that simply sells said software as a service.

What is Continuous Integration? (CI)

Continuous Integration is a software development practice where members of a team integrate their work frequently; usually they integrate at least daily – leading to multiple per day. Each integration is verified by an automated build/test to detect integration errors as quickly as possible. This usually leads to significantly reduced integration problems and allows a team to develop software more rapidly.