Skip to main content

Your submission was sent successfully! Close

Thank you for signing up for our newsletter!
In these regular emails you will find the latest updates from Canonical and upcoming events where you can meet our team.Close

Thank you for contacting us. A member of our team will be in touch shortly. Close

  1. Blog
  2. Article

Canonical
on 4 January 2021

Juju vs Infrastructure as Code Tools


Summary

  • Infrastructure as Code (IaC) tools, like Terraform, CloudFormation and Pulumi, ensure easily reproducible infrastructure setups.
  • Juju focuses on the lifecycle and relations of applications.
  • Juju and IaC tools mostly operate on different layers of abstraction.
  • Use Juju to manage any application, from simple web application/database combinations to complex platforms like Kubeflow and OpenStack.
  • Use IaC tools to provision service roles, network configurations or managed services.

There are several tools available for provisioning and managing infrastructure resources, such as low-level network configurations, service roles, or K8s clusters, using the Infrastructure as Code (IaC) approach. IaC is a DevOps practice that uses idempotent operations to ensure easily reproducible infrastructure. Among the most popular IaC tools are Hashicorp Terraform, AWS CloudFormation and Pulumi (by the startup that shares the same name).

Terraform is an open-source IaC tool that uses declarative configuration files, written in a Domain Specific Language (DSL) called Hashicorp Configuration Language (HCL). Terraform can provision resources across multiple public and private clouds; it uses a state file to keep track of the resources it manages and a dependency graph to determine the order of modifications. Terraform has a strong community that contributes to its public registry with Modules and Providers. Modules are reusable Terraform configurations. Providers extend Terraform’s support for managing infrastructure providers.

Pulumi is also open source and supports provisioning infrastructure across multiple cloud providers. It is similar to Terraform in many respects, the key difference being that Pulumi uses general-purpose programming languages to describe the infrastructure. This allows developers to use the languages and tools they are already familiar with in the DevOps process, including unit and functional testing tools which is often difficult with Terraform-managed infrastructure without the use of additional third-party utilities

CloudFormation is AWS’s template-driven IaC tool. While originally proprietary and limited to AWS resources, at the end of 2019 AWS released an open-source CloudFormation CLI, allowing users to manage third-party and private resources. Similar template-driven tools are offered by other public cloud providers, such as Google Cloud Deployment Manager and Azure Resource Manager.

Juju, on the other hand, is an open-source tool for model-driven application management. The powerful combination of Juju’s Charmed Operator Lifecycle Manager (OLM) with Charmed Operators, packaged as “Charms”, enables the management of an application’s complete lifecycle, including deployment, configuration and upgrades across multiple clouds and substrates. Juju provisions machines and containers as needed for the applications placed on the model. Charms can be written using any general-purpose language, the preferred method using the Charmed Operator Framework with Python.

While there is some overlap between the capabilities of Juju and IaC tools, they mostly operate on different layers of abstraction.

It is possible to deploy applications with IaC tools by using either raw Kubernetes YAML or Helm Charts, but it is very difficult to express advanced deployment scenarios with them. Whereas Juju can handle all sorts of scenarios, from simple web application/database combinations to complex platforms like Kubeflow and OpenStack.

Finally, IaC tools compliment Juju’s capabilities when there is a need for fine-grained service roles, network configurations, secret rotations or configuration of managed services.

Related posts


Serdar Vural
20 September 2024

Canonical and OpenAirInterface to collaborate on open source telecom network infrastructure

5G Article

Canonical is excited to announce that we are collaborating with OpenAirInterface (OAI) to drive the development and promotion of open source software for open radio access networks (Open RAN). Canonical will bring automation in software lifecycle management to OAI’s RAN stack, alongside additional infrastructure capabilities. This will be ...


Michael C. Jaeger
29 April 2024

Kubernetes backups just got easier with the CloudCasa charm from Catalogic

Charms Article

For a native integration for Canonical’s Kubernetes platform, Juju was the perfect fit, and the charm makes consuming CloudCasa seamless for users. ...


Michael C. Jaeger
23 February 2024

What is a Kubernetes operator?

Charms Article

Kubernetes is the open source, industry-standard platform for deploying, managing and scaling containerized applications – and applications on Kubernetes are easier with operators. ...