Skip to content

frostmoln_lb_pool (Resource) ​

Manages a backend pool on a Frostmoln load balancer.

Authoritative scope — who owns what on this resource, declared in internal/scopedecl and machine-checked against the schema.

Enacted and reconciled — every configurable attribute not listed below: the platform applies it, and a refresh reads the truth back.

Create-immutable — listener_id, load_balancer_id, protocol: the pool's identity is its listener, load balancer and protocol; changing one is a different pool.

Observed, not enacted — tags_all: keys set outside Terraform — in the portal, by the fm CLI, or stamped by the platform — appear only here and are kept on every apply, never removed.

Example Usage ​

terraform
# A backend pool for a load balancer.
#
# The pool's listener_id attaches this pool to a listener. This is the canonical
# direction for the listener<->pool link; do NOT also set default_pool_id on the
# listener, or Terraform will report a dependency cycle.
resource "frostmoln_lb_pool" "backend" {
  load_balancer_id = frostmoln_load_balancer.web.id
  listener_id      = frostmoln_lb_listener.https.id
  name             = "backend"
  protocol         = "http"
  lb_algorithm     = "round_robin"
  proxy_protocol   = "none"

  # Optional session persistence (nested attribute). Omit for none.
  session_persistence = {
    type                = "APP_COOKIE"
    cookie_name         = "SESSIONID"
    persistence_timeout = 3600
  }

  # The pool's OWN tags. The load balancer's tags are separate and are not
  # inherited; removing this block removes every tag from the pool.
  tags = {
    env   = "prod"
    owner = "team-a"
  }
}

Schema ​

Required ​

  • lb_algorithm (String) The load balancing algorithm: round_robin, least_connections, source_ip, or source_ip_port (source_ip_port is required on an l4 load balancer, which accepts no other algorithm).
  • load_balancer_id (String) The ID of the load balancer this pool belongs to. Changing this forces a new resource.
  • name (String) The name of the pool.
  • protocol (String) The pool protocol: tcp, udp, sctp, http, https, or terminated_https.

Optional ​

  • listener_id (String) The ID of the listener this pool is attached to. Changing this forces a new resource.
  • proxy_protocol (String) The PROXY protocol version sent to backend members: none (default), v1, or v2.
  • session_persistence (Attributes) Session persistence configuration for the pool. Omit for no persistence. (see below for nested schema)
  • tags (Map of String) Key-value tags for the pool. These are the pool's own tags, separate from the load balancer's. Merged with the provider's default_tags on every write (a key set here wins). Holds only the keys this configuration sets; the full set is in tags_all.
  • timeouts (Block, Optional) (see below for nested schema)

Read-Only ​

  • created_at (String) The creation timestamp.
  • id (String) The unique identifier of the pool.
  • tags_all (Map of String) Every tag the platform holds on this resource: the provider's default_tags, this resource's own tags (which win on a shared key), and any key set outside Terraform — in the portal, by the fm CLI, or stamped by the platform. Keys set outside Terraform appear only here and are kept on every apply, never removed.
  • updated_at (String) The last update timestamp.

Nested Schema for session_persistence ​

Required:

  • type (String) The session persistence type: SOURCE_IP, HTTP_COOKIE, or APP_COOKIE.

    Optional:

  • cookie_name (String) The cookie name to use for persistence (required for APP_COOKIE).

  • persistence_granularity (String) The persistence granularity (netmask) for SOURCE_IP persistence.

  • persistence_timeout (Number) The persistence timeout in seconds.

Nested Schema for timeouts ​

Optional:

  • create (String) How long the provider waits for the create operation to converge before giving up (e.g. "45m", "2h").
  • delete (String) How long the provider waits for the delete to complete before giving up (e.g. "30m").
  • update (String) How long the provider waits for an update (resize, in-place change) to converge before giving up (e.g. "30m").