In the previous post we created an environment in Azure using Juju, which is ready to be modeled. We're really close to make it work, but before we make another step, I'd like to make sure you're familiar with some basic terms, what should help you in the next episodes. Let's get started!
As I said previously, Juju comes with a seamless support regarding all major clouds like AWS, Google Cloud or Azure. It's also possible to use it with e.g. private clouds like OpenStack - the possibilities are unlimited. When we're talking about a 'cloud' here, we're thinking about a whole environment managed by Juju's controllers.
To make things even cooler, Juju gives you a possibility to select a region where you'd like to get started. Of course it has some predefined settings, but you're not forced to choose "the-one-and-the-only" region. What is more, both available clouds and regions are not hardcoded - it's possible to fetch updated data when needed.
When you've chosen your environment, you need something for controlling it. That's the purpose of controllers - nodes in your infrastructure, which are responsible for managing it. The important thing is, that a controller is a machine itself - it's both an element of Juju's structure and a computer, which needs resources. No matter how many machines you spawn later, a controller will always be your machine-0.
A schema of a basic structure used in Juju
Models are virtual environments attached to a controller. By default a controller has two models - admin and default. In fact 'admin' model is designed for some internal stuff and shouldn't be used.
A simple model of a Wordpress instance and a MySQL database on two machines
What is more, models and controllers can be switched anytime. You can have multiple configurations prepared and easily switch between them when needed. The best thing is that models can be constrained - this is a complex topic however and we'll cover it in the future posts.
In this short blog post we learned the most basic terms in Juju. We know what are the main parts of our system and we're aware of their connections. In the next post we'll dig deeper into different components and try to prepare a simple model, which we'll try to reuse.