# 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 in this subsection - [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. ## Optional - [Top-level llms.txt](https://documentation.ubuntu.com/terraform-provider-juju/latest/llms.txt): Complete documentation index.