Juju Terraform provider 2.1.0 was released

JujuTF 2.1.0 release notes

24 June 2026

:puzzle_piece: Requirements and compatibility

  • This release requires a Juju controller of version 3 or higher. Support for Juju 2.9 controllers was dropped in the v2 track and remains unavailable here; 2.9 continues to be supported on the v1 track for security updates and bug fixes.
  • If you are using JAAS, this release requires a Juju controller of version 3.6.5 or higher.
  • This release builds against the Juju client API code from the tip of the Juju 4.0 branch (juju v4.0.11), and is compatible with both Juju 3 and Juju 4 controllers.

:rocket: New features

Juju spaces and subnets support

The main feature of this release is support for managing Juju network spaces and subnets directly from Terraform. A space is a logical grouping of subnets that share a common purpose or trust boundary; spaces let you segment a model’s network and control which networks applications bind to, so that traffic (for example, internal vs. public, or storage vs. application traffic) can be routed deliberately.

This release adds the building blocks needed to declare and manage that topology as code:

  • juju_space resource β€” create and manage a network space within a model. A space is identified by model_uuid:name, and supports import (by @ale8k in #1233).

    resource "juju_model" "development" {
      name = "development"
    }
    
    resource "juju_space" "development" {
      model_uuid = juju_model.development.uuid
      name       = "development"
    }
    
  • juju_subnet resource β€” assign a subnet (by CIDR) to a space within a model (by @ale8k in #1234).

    resource "juju_subnet" "development" {
      model_uuid = juju_model.development.uuid
      cidr       = "10.0.0.0/24"
      space_name = juju_space.development.name
    }
    
  • juju_space data source β€” look up an existing space by name (by @ale8k in #1235).

  • juju_subnets data source β€” list the subnets available in a model (by @ale8k in #1236).

  • juju_spaces list support β€” enumerate the spaces defined in a model (by @ale8k in #1237).

These resources and data sources are backed by a new spaces and subnets Juju client (by @ale8k in #1241).

Other enhancements

  • secret_uri added to the juju_secret data source β€” the secret URI is now exposed when reading a secret, making it easier to reference secrets across configurations. Add secret_uri to the juju_secret data source by @luci1900 in #1259.
  • Explicit force-destroy support for offers β€” you can now explicitly force the destruction of an application offer. Add explicit force-destroy support for offers by @luci1900 in #1230.
  • type added to the juju_model data source β€” the model type (for example, iaas or caas) is now available from the model data source. Add type to the juju_model data source by @SimoneDutto in #1273.

:hammer_and_wrench: Bug fixes

  • SSH key deletion now only fails when all results are errors β€” deleting an SSH key no longer reports a failure when only some of the underlying results return an error. deleteSSHKey should fail only if all the results are errors by @SimoneDutto in #1248.
  • Adjusted SSH key deletion behaviour β€” merged forward from the v1.5 track. Merge v1.5 to main by @kian99 in #1228.

:broom: Maintenance

  • Improve test worst-case running time by @luci1900 in #1263.
  • Enable Terraform integration tests against JAAS v3 by @SimoneDutto in #1248.
  • Update to the juju v4.0.11 dependency, building against the tip of the Juju 4.0 branch.
  • Merge forward updates from the 2.0 branch by @ale8k in #1245.

Full changelog: Comparing v2.0.1...v2.1.0 Β· juju/terraform-provider-juju Β· GitHub