juju_machine (Resource)

A resource that represents a Juju machine deployment. Refer to the juju add-machine CLI command for more information and limitations.

Example Usage

resource "juju_machine" "this_machine" {
  model       = juju_model.development.name
  base        = "[email protected]"
  name        = "this_machine"
  constraints = "tags=my-machine-tag"
}

Schema

Required

  • model (String) The Juju model in which to add a new machine. Changing this value will cause the machine to be destroyed and recreated by terraform.

Optional

  • annotations (Map of String) Annotations are key/value pairs that can be used to store additional information about the machine. May not contain dots (.) in keys.

  • base (String) The operating system to install on the new machine(s). E.g. ubuntu@22.04. Changing this value will cause the machine to be destroyed and recreated by terraform.

  • constraints (String) Machine constraints that overwrite those available from ‘juju get-model-constraints’ and provider’s defaults. Changing this value will cause the application to be destroyed and recreated by terraform.

  • disks (String) Storage constraints for disks to attach to the machine(s). Changing this value will cause the machine to be destroyed and recreated by terraform.

  • name (String) A name for the machine resource in Terraform.

  • placement (String) Additional information about how to allocate the machine in the cloud. Changing this value will cause the application to be destroyed and recreated by terraform.

  • private_key_file (String) The file path to read the private key from.

  • public_key_file (String) The file path to read the public key from.

  • series (String, Deprecated) The operating system series to install on the new machine(s). Changing this value will cause the machine to be destroyed and recreated by terraform.

  • ssh_address (String) The user@host directive for manual provisioning an existing machine via ssh. Requires public_key_file & private_key_file arguments. Changing this value will cause the machine to be destroyed and recreated by terraform.

Read-Only

  • id (String) The ID of this resource.

  • machine_id (String) The id of the machine Juju creates.

Notes

Juju will automatically remove a machine if all application units deployed to that machine are removed.

Import

Import is supported using the following syntax:

# Machines can be imported using the format: `model_name:machine_id:machine_name`.
# The value of machine_id is the Juju Machine ID. machine_name is an optional 
# name you can define in Terraform for the machine. It is not used in Juju.
# Here is an example to import a machine from the development model with 
# machine ID 1 and a name "machine_one":
$ terraform import juju_machine.machine_one `development:1:machine_one`