# Terraform Provider for Juju > The Terraform Provider for Juju is a Terraform provider that provides a declarativeway to use Juju and JAAS. 2026 CC-BY-SA, Canonical Ltd. ## Pages - [Terraform Provider for Juju documentation](https://documentation.ubuntu.com/terraform-provider-juju/latest/index.md): Terraform Provider for Juju extends Terraform with Juju functionality to deploy, configure, and manage infrastructure and applications on any cloud. - [Get started with the Terraform Provider for Juju](https://documentation.ubuntu.com/terraform-provider-juju/latest/tutorial.md): Learn to manage Juju infrastructure as code with the Terraform Provider, using declarative configuration files, version control, and infrastructure-as-code workflows. - [How-to guides](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto.md): Step-by-step guides for managing Terraform Provider for Juju: setup, authentication, deployment, and infrastructure operations. - [Manage the Terraform Provider for Juju](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-the-terraform-provider-for-juju.md): Learn how to install, configure, and upgrade the Terraform Provider for Juju with detailed setup instructions and version migration guides. - [Upgrade the provider to v1](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-provider/upgrade-provider-to-v1.md): Complete guide for upgrading the Terraform Provider for Juju from v0.x to v1.0.0 with breaking changes and migration steps. - [Upgrade the provider to v2](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-provider/upgrade-provider-to-v2.md): Complete guide for upgrading the Terraform Provider for Juju from v1.x to v2.0.0. - [Manage controllers](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-controllers.md): Learn how to reference and connect to Juju and JIMM controllers using static credentials, environment variables, or the Juju CLI. - [Manage clouds](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-clouds.md): Learn how to add machine and Kubernetes clouds to Juju controllers and manage cloud access permissions with JAAS. - [Manage credentials](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-credentials.md): Learn how to define, add, update, and remove cloud credentials in the Terraform Provider for Juju for secure authentication. - [Use a bootstrapped controller](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/use-a-bootstrapped-controller.md): How to bootstrap and use a controller in Terraform. - [Use the Juju CLI in Terraform](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/use-the-juju-cli.md): Learn how to use the Juju CLI within Terraform plans using provisioners for Juju and JAAS controllers. - [Manage SSH keys](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-ssh-keys.md): Learn how to add SSH keys to Juju models using Terraform, including examples for GitHub and Launchpad key integration. - [Manage users](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-users.md): Learn how to add, manage access, update passwords, and remove users in Juju controllers using Terraform Provider. - [Manage service accounts](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-service-accounts.md): Learn how to manage service account access to controllers, clouds, models, offers, roles, and groups in JAAS. - [Manage roles](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-roles.md): Learn how to add, reference, and manage JAAS roles and role access permissions for users, service accounts, and groups. - [Manage groups](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-groups.md): Learn how to add, reference, and manage JAAS groups and group membership for users, service accounts, and nested groups. - [Create deployment dependencies](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/create-deployment-dependencies.md): Learn how to create deployment dependencies in the Terraform Provider for Juju using null_resource and juju wait-for commands. - [Manage models](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-models.md): Learn how to reference, add, configure, and manage Juju models with constraints and configuration keys using Terraform, and how to export and import them. - [Manage charms](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-charms.md): Learn how to deploy Charmhub charms with specific channels and revisions, including automatic revision computation examples. - [Manage charm resources](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-charm-resources.md): Learn how to specify and manage charm resources when deploying or updating applications with Terraform Provider for Juju. - [Manage applications](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-applications.md): Learn how to deploy, configure, scale, and trust Juju applications using Terraform with detailed configuration examples. - [Manage relations](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-relations.md): Learn how to add and remove same-model and cross-model relations between Juju applications using Terraform integration resources. - [Manage offers](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-offers.md): Learn how to create, reference, and integrate with Juju application offers for same-controller and cross-controller relations. - [Manage units](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-units.md): Learn how to control the number of units for Juju applications using the Terraform Provider for Juju to scale your deployments. - [Manage secrets](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-secrets.md): Learn how to add, reference, update, and manage access to user secrets in Juju models using the Terraform Provider for Juju. - [Manage secret backends](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-secret-backends.md): Learn how to manage secret backends in Juju models using the Terraform Provider for Juju. - [Manage machines](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-machines.md): Learn how to add, reference, configure constraints, and remove machines in Juju models using the Terraform Provider for Juju. - [Manage storage pools](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-storage-pools.md): Learn how to create, reference, list, and remove storage pools in Juju models using the Terraform Provider for Juju. - [Manage spaces](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-spaces.md): Learn how to create, reference, list, and remove Juju spaces and assign subnets to spaces using the Terraform Provider for Juju. - [Manage actions](https://documentation.ubuntu.com/terraform-provider-juju/latest/howto/manage-actions.md): Learn how to run Juju actions on application units and consume their output using the Terraform Provider for Juju. - [`juju` provider reference](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference.md): file terraform-provider/index.md --> - [Actions](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/actions.md): This file will be copied in ./terraform-provider/actions/index.md - [juju_enable_ha (Action)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/actions/enable_ha.md): Enables high availability (HA) on a Juju controller by ensuring the desired number of controller uni... - [Data sources](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/data-sources.md): This file will be copied in ./terraform-provider/data-sources/index.md - [juju_action (Data Source)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/data-sources/action.md): A data source representing a Juju action. The action’s result is fetched via its ID and awaited duri... - [juju_application (Data Source)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/data-sources/application.md): A data source that represents a single Juju application deployment from a charm. - [juju_charm (Data Source)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/data-sources/charm.md): A data source that fetches charm metadata from CharmHub, including the resolved revision, the names ... - [juju_jaas_group (Data Source)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/data-sources/jaas_group.md): A data source representing a Juju JAAS Group. - [juju_jaas_role (Data Source)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/data-sources/jaas_role.md): A data source representing a Juju JAAS Role. - [juju_machine (Data Source)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/data-sources/machine.md): A data source representing a Juju Machine. - [juju_model (Data Source)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/data-sources/model.md): Use the model data source to retrieve information about an existing Juju model. This is useful when ... - [juju_offer (Data Source)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/data-sources/offer.md): A data source representing a Juju Offer. - [juju_secret (Data Source)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/data-sources/secret.md): A data source representing a Juju Secret. - [juju_space (Data Source)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/data-sources/space.md): A data source representing a Juju space. - [juju_storage_pool (Data Source)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/data-sources/storage_pool.md): A data source representing a Juju Storage Pool. - [juju_subnets (Data Source)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/data-sources/subnets.md): A data source representing a list of Juju subnets. - [List resources](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/list-resources.md): This file will be copied in ./terraform-provider/list-resources/index.md - [juju_application (List Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/list-resources/application.md): ```terraform - [juju_integration (List Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/list-resources/integration.md): ```terraform - [juju_machine (List Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/list-resources/machine.md): ```terraform - [juju_model (List Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/list-resources/model.md): ```terraform - [juju_offer (List Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/list-resources/offer.md): ```terraform - [juju_secret (List Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/list-resources/secret.md): ```terraform - [juju_space (List Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/list-resources/space.md): ```terraform - [juju_ssh_key (List Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/list-resources/ssh_key.md): ```terraform - [juju_storage_pool (List Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/list-resources/storage_pool.md): ```terraform - [Resources](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources.md): This file will be copied in ./terraform-provider/resources/index.md - [juju_access_model (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/access_model.md): A resource that represent a Juju Access Model. - [juju_access_offer (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/access_offer.md): A resource that represent a Juju Access Offer. Warning: Do not repeat users across different access ... - [juju_access_secret (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/access_secret.md): A resource that represents a Juju secret access. - [juju_action (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/action.md): A resource that represents a Juju action. The action is run and its result awaited during the resour... - [juju_application (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/application.md): A resource that represents a single Juju application deployment from a charm. Deployment of bundles ... - [juju_cloud (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/cloud.md): A resource that represents a Juju Cloud for an existing controller. - [juju_controller (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/controller.md): A resource that represents a Juju Controller. - [juju_credential (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/credential.md): A resource that represent a credential for a cloud. - [juju_integration (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/integration.md): A resource that represents a Juju Integration. - [juju_jaas_access_cloud (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/jaas_access_cloud.md): A resource that represents access to a cloud when using JAAS. - [juju_jaas_access_controller (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/jaas_access_controller.md): A resource that represents direct access the JAAS controller. - [juju_jaas_access_group (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/jaas_access_group.md): A resource that represents access to a group when using JAAS. - [juju_jaas_access_model (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/jaas_access_model.md): A resource that represent access to a model when using JAAS. - [juju_jaas_access_offer (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/jaas_access_offer.md): A resource that represent access to an offer when using JAAS. - [juju_jaas_access_role (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/jaas_access_role.md): A resource that represents access to a role when using JAAS. - [juju_jaas_controller (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/jaas_controller.md): A resource that represents a controller registered in JAAS (JIMM). - [juju_jaas_group (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/jaas_group.md): A resource that represents a group in JAAS - [juju_jaas_role (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/jaas_role.md): A resource that represents a role in JAAS - [juju_kubernetes_cloud (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/kubernetes_cloud.md): A resource that represent a Juju Cloud for existing controller. - [juju_machine (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/machine.md): A resource that represents a Juju machine deployment. Refer to the juju add-machine CLI command for ... - [juju_model (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/model.md): A resource that represent a Juju Model. - [juju_offer (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/offer.md): A resource that represent a Juju Offer. - [juju_secret (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/secret.md): A resource that represents a Juju secret. - [juju_secret_backend (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/secret_backend.md): A resource that represents a Juju secret backend. - [juju_space (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/space.md): A resource that represents a Juju space. - [juju_ssh_key (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/ssh_key.md): Resource representing an SSH key. - [juju_storage_pool (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/storage_pool.md): A resource that represents a Juju storage pool. - [juju_subnet (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/subnet.md): A resource that represents assignment of a subnet to a Juju space. - [juju_user (Resource)](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider/resources/user.md): A resource that represents a Juju User. - [Explanation](https://documentation.ubuntu.com/terraform-provider-juju/latest/explanation.md): Understand the Terraform Provider for Juju: provider fundamentals, resource lifecycle patterns, and integration strategies. - [Security overview](https://documentation.ubuntu.com/terraform-provider-juju/latest/explanation/tf-security-overview.md): Comprehensive Juju Terraform security overview. - [Landing Pages Documentation Standards for Terraform Provider for Juju](https://documentation.ubuntu.com/terraform-provider-juju/latest/AGENTS.documentation-landing-pages.md): **Standard structure**: Four brief paragraphs covering: - [Juju Provider](https://documentation.ubuntu.com/terraform-provider-juju/latest/reference/terraform-provider.md): The provider can be used to interact with Juju - an open source orchestration engine by Canonical.