# 

# exoscale_elastic_ip (Resource)

Manage Exoscale [Elastic IPs (EIP)](https://community.exoscale.com/product/networking/eip/).

Corresponding data source: [exoscale_elastic_ip]({{< ref "../data-sources/elastic_ip.md" >}}).

## Example Usage

*Unmanaged* EIPv4:

```terraform
resource "exoscale_elastic_ip" "my_elastic_ip" {
  zone = "ch-gva-2"
}
```

*Managed* EIPv6:

```terraform
resource "exoscale_elastic_ip" "my_managed_elastic_ip" {
  zone = "ch-gva-2"
  address_family = "inet6"
  reverse_dns = "example.net"

  healthcheck {
    mode         = "https"
    port         = 443
    uri          = "/health"
    interval     = 5
    timeout      = 3
    strikes_ok   = 2
    strikes_fail = 3
    tls_sni      = "example.net"
  }
}
```

Please refer to the [examples](https://github.com/exoscale/terraform-provider-exoscale/tree/master/examples/)
directory for complete configuration examples.

<!-- schema generated by tfplugindocs -->
## Schema

### Required

- `zone` (String) ❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.

### Optional

- `address_family` (String) ❗ The Elastic IP (EIP) address family (`inet4` or `inet6`; default: `inet4`).
- `description` (String) A free-form text describing the Elastic IP (EIP).
- `healthcheck` (Block List, Max: 1) Healthcheck configuration for *managed* EIPs. It can not be added to an existing *Unmanaged* EIP. (see [below for nested schema](#nestedblock--healthcheck))
- `labels` (Map of String) A map of key/value labels.
- `reverse_dns` (String) Domain name for reverse DNS record.
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))

### Read-Only

- `cidr` (String) The Elastic IP (EIP) CIDR.
- `id` (String) The ID of this resource.
- `ip_address` (String) The Elastic IP (EIP) IPv4 or IPv6 address.

<a id="nestedblock--healthcheck"></a>
### Nested Schema for `healthcheck`

Required:

- `mode` (String) The healthcheck mode (`tcp`, `http` or `https`; may only be set at creation time).
- `port` (Number) The healthcheck target port (must be between `1` and `65535`).

Optional:

- `interval` (Number) The healthcheck interval (seconds; must be between `5` and `300`; default: `10`).
- `strikes_fail` (Number) The number of failed healthcheck attempts before considering the target unhealthy (must be between `1` and `20`; default: `2`).
- `strikes_ok` (Number) The number of successful healthcheck attempts before considering the target healthy (must be between `1` and `20`; default: `3`).
- `timeout` (Number) The time before considering a healthcheck probing failed (seconds; must be between `2` and `60`; default: `3`).
- `tls_skip_verify` (Boolean) Disable TLS certificate verification for healthcheck in `https` mode (boolean; default: `false`).
- `tls_sni` (String) The healthcheck server name to present with SNI in `https` mode.
- `uri` (String) The healthcheck target URI (required in `http(s)` modes).


<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`

Optional:

- `create` (String)
- `delete` (String)
- `read` (String)
- `update` (String)

-> The symbol ❗ in an attribute indicates that modifying it, will force the creation of a new resource.

## Import

An existing Elastic IP (EIP) may be imported by `<ID>@<zone>`:

```shell
terraform import \
  exoscale_elastic_ip.my_elastic_ip \
  f81d4fae-7dec-11d0-a765-00a0c91e6bf6@ch-gva-2
```

