<a id="cloud-equinix"></a>

# Equinix Metal

In Juju, [Equinix Metal](https://deploy.equinix.com/developers/docs/metal/) is a [machine cloud](https://documentation.ubuntu.com/juju/3.6/reference/cloud.md#machine-cloud) and works as described below.

#### CAUTION
[Equinix Metal has been sunsetted](https://docs.equinix.com/metal/).

#### NOTE
This reference assumes basic familiarity with Juju. If you are new to Juju, start with the [Tutorial](https://documentation.ubuntu.com/juju/3.6/tutorial.md#tutorial), then use this page together with the generic materials it links to.

<a id="equinix-limitations"></a>

## Limitations

- **No firewall support**: Equinix Metal does not implement firewall support. Workloads deployed to machines under the same project ID can reach each other even across Juju models. Deployed machines are always assigned both a public and a private IP address. Any deployed charms are implicitly exposed. Access control must be implemented at the application level.

<a id="equinix-concepts"></a>

## Concepts

The following table shows how Equinix Metal abstractions map to Juju concepts:

| Equinix Metal                    | Juju                                                                   |
|----------------------------------|------------------------------------------------------------------------|
| Provisioned server               | [machine](https://documentation.ubuntu.com/juju/3.6/reference/machine.md#machine)         |
| Process on a server              | [unit](https://documentation.ubuntu.com/juju/3.6/reference/unit.md#unit)               |
| Group of units for one workload  | [application](https://documentation.ubuntu.com/juju/3.6/reference/application.md#application) |
| Attached block storage (if used) | [storage](https://documentation.ubuntu.com/juju/3.6/reference/storage.md#storage)         |
| Facility/metro zone              | Placement target (`zones`)                                             |
| Project ID and API token         | Cloud access boundary and credential                                   |

<a id="equinix-cloud"></a>

## The cloud

See also: [Cloud](https://documentation.ubuntu.com/juju/3.6/reference/cloud.md#cloud), [Juju | Manage clouds](https://documentation.ubuntu.com/juju/3.6/howto/manage-clouds.md#manage-clouds), [Terraform Provider for Juju | Manage clouds](https://canonical.com/juju/docs/terraform-provider-juju/latest/howto/manage-clouds/#manage-clouds)

As for all machine clouds, the cloud is registered in Juju via a cloud definition, stored in `clouds.yaml` on the client (on Linux: `~/.local/share/juju/clouds.yaml`) and following this schema:

```yaml
clouds:
  <cloud-name>:  # Predefined name
    type: equinix
    auth-types:
      - <auth-type>                # See Authentication types below
    config:                        # Optional: model config defaults
      <config-key>: <value>        # See Configuration keys below
```

<a id="equinix-credential"></a>

## Credentials

See also: [Credential](https://documentation.ubuntu.com/juju/3.6/reference/credential.md#credential), [Juju | Manage credentials](https://documentation.ubuntu.com/juju/3.6/howto/manage-credentials.md#manage-credentials), [Terraform Provider for Juju | Manage credentials](https://canonical.com/juju/docs/terraform-provider-juju/latest/howto/manage-credentials/#manage-credentials)

As for all machine clouds, credentials are stored in `credentials.yaml` on the client and follow this schema:

```yaml
credentials:
  equinix                        # Predefined cloud name for Equinix Metal
    <credential-name>:             # User-defined credential name
      auth-type: <auth-type>       # access-key (the only type)
      <attribute>: <value>         # Auth-type-specific attributes (see below)
```

<a id="equinix-credential-authentication-types"></a>

### Authentication types

Equinix Metal supports the following authentication type:

<a id="equinix-credential-access-key"></a>

#### `access-key`

Attributes:

- `project-id`: Equinix Metal project ID (required).
- `api-token`: Equinix Metal API token (required).

<a id="equinix-machine"></a>

## Machines

See also: [Machine](https://documentation.ubuntu.com/juju/3.6/reference/machine.md#machine), [Juju | Manage machines](https://documentation.ubuntu.com/juju/3.6/howto/manage-machines.md#manage-machines), [Terraform Provider for Juju | Manage machines](https://canonical.com/juju/docs/terraform-provider-juju/latest/howto/manage-machines/#manage-machines)

<a id="equinix-machine-constraints"></a>

### Constraints

Equinix Metal supports the following [constraints](https://documentation.ubuntu.com/juju/3.6/reference/constraint.md#constraint):

**Compute**

- [arch](https://documentation.ubuntu.com/juju/3.6/reference/constraint.md#constraint-arch)
- [cores](https://documentation.ubuntu.com/juju/3.6/reference/constraint.md#constraint-cores)
- [cpu-power](https://documentation.ubuntu.com/juju/3.6/reference/constraint.md#constraint-cpu-power)
- [mem](https://documentation.ubuntu.com/juju/3.6/reference/constraint.md#constraint-mem)

**Networking**

- [allocate-public-ip](https://documentation.ubuntu.com/juju/3.6/reference/constraint.md#constraint-allocate-public-ip)
- [zones](https://documentation.ubuntu.com/juju/3.6/reference/constraint.md#constraint-zones)

Constraints not listed above are either not supported or automatically determined by the cloud provider.

<a id="equinix-machine-placement-directives"></a>

### Placement directives

Equinix Metal supports the following [placement directives](https://documentation.ubuntu.com/juju/3.6/reference/placement-directive.md#placement-directive):

- [zone=<zone>](https://documentation.ubuntu.com/juju/3.6/reference/placement-directive.md#placement-directive-zone)

<a id="equinix-storage"></a>

## Storage

See also: [Storage](https://documentation.ubuntu.com/juju/3.6/reference/storage.md#storage), [Juju | Manage storage](https://documentation.ubuntu.com/juju/3.6/howto/manage-storage.md#manage-storage)

Equinix Metal has no cloud-specific storage providers.
