---
title: Juju vs Infrastructure as Code Tools
description: 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
  […]
url: https://canonical.com/blog/juju-vs-infrastructure-as-code-tools?format=md
---

1. [Blog](https://canonical.com/blog)
2. Article

---

[Canonical](https://canonical.com/blog/author/canonical "More about Canonical")

4 January 2021

# Juju vs Infrastructure as Code Tools

[Juju](https://canonical.com/blog/tag/juju)

---

Share the article

## 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](https://charmed-kubeflow.io/) and [OpenStack](https://ubuntu.com/blog/tag/charmed-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](https://www.terraform.io/) 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](https://terratest.gruntwork.io/)

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](https://cloud.google.com/deployment-manager) and [Azure Resource Manager](https://azure.microsoft.com/en-us/services/arm-templates/).

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](https://charmed-kubeflow.io/) and [OpenStack](https://ubuntu.com/blog/tag/charmed-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.

[Get in touch

Interested in running Ubuntu in your organization?](https://ubuntu.com/about/contact-us/form)

## Sign up for our newsletter

Get the latest Canonical news and updates in your inbox.

Work email:

\*I agree to receive information about Canonical's
products and services.

By submitting this form, I confirm that I have read and agree to [Canonical's Privacy Policy](https://canonical.com/legal/dataprivacy).

Sign up

## Share on

---

## Related posts

[### Deploy your Spring Boot application to production](https://canonical.com/blog/deploy-spring-application-to-production)

In this article we walk through the steps required to deploy a Spring Boot application to production using Juju and Kubernetes. The goal is to showcase the integration of the...

[Javier de la Puente](https://canonical.com/blog/author/javierdelapuente)

13 January 2026

[### Cut data center energy costs with bare metal automation](https://canonical.com/blog/cut-data-center-energy-costs-with-bare-metal-automation)

Data centers don’t have to be power-hungry monsters. With smart automation using tools like MAAS, you can reduce energy waste and operational costs, and make your...

[David Beamonte](https://canonical.com/blog/author/dbeamonte)

26 June 2025

[### The hitchhiker’s guide to infrastructure modernization](https://canonical.com/blog/hitchhikers-guide-to-infrastructure-modernization)

One of my favourite authors, Douglas Adams, once said that “we are stuck with technology when what we really want is just stuff that works.” Whilst Adams is right about a lot...

[Isobel Kate Maxwell](https://canonical.com/blog/author/iso-maxwell)

24 April 2025

[### Effortless observability for Django applications](https://canonical.com/blog/effortless-observability-for-django-applications)

Observability is critical for web operations to ensure that the application is working as expected and to identify any potential issues. However, setting up observability has...

[jdkandersson](https://canonical.com/blog/author/jdkandersson)

13 March 2025
