Utilizzo

Provider Terraform Hero Load Balancer (HLB)

Il Provider Terraform Hero Load Balancer (HLB) ti permette di gestire le risorse HLB nelle tue configurazioni Terraform. Questo documento copre le risorse disponibili e il loro utilizzo.

Configurazione del Provider

Per utilizzare il provider HLB, devi configurarlo nella tua configurazione Terraform. Ecco un esempio di base:

terraform {
  required_providers {
    hlb = {
      source = "orographiclift/hlb"
      version = "~> 1.0"
    }
  }
}

provider "hlb" {
  # Opzioni di configurazione
}

Risorse

hlb_load_balancer

La risorsa hlb_load_balancer ti permette di creare e gestire un Hero Load Balancer.

Esempio di utilizzo

resource "hlb_load_balancer" "example" {
  name        = "example-hlb"
  internal    = false
  subnets     = ["subnet-12345678", "subnet-87654321"]
  enable_http2 = true

  access_logs {
    bucket  = "my-logs-bucket"
    prefix  = "my-hlb-logs"
    enabled = true
  }

  # Facoltativo: personalizza la configurazione di lancio
  launch_config {
    instance_type      = "c7g.large"
    min_instance_count = 2
    target_cpu_usage   = 40
  }

  tags = {
    Environment = "production"
  }
}

output "load_balancer_dns" {
  value = hlb_load_balancer.example.dns_name
}

Riferimento degli argomenti

Sono supportati i seguenti argomenti:

  • name - (Facoltativo) Nome dell’HLB. Deve essere unico nel tuo account, massimo 32 caratteri, solo alfanumerici e trattini.
  • name_prefix - (Facoltativo) Crea un nome unico che inizia con il prefisso specificato. Incompatibile con name.
  • internal - (Facoltativo) Se vero, l’HLB sarà interno. Predefinito: false.
  • subnets - (Facoltativo) Lista degli ID delle subnet da collegare all’HLB.
  • security_groups - (Facoltativo) Lista degli ID dei gruppi di sicurezza da assegnare all’HLB.
  • access_logs - (Facoltativo) Un blocco Access Logs. Dettagli di seguito.
  • launch_config - (Facoltativo) Un blocco Launch Configuration. Dettagli di seguito.
  • enable_deletion_protection - (Facoltativo) Impedisce la cancellazione tramite API. Predefinito: false.
  • enable_http2 - (Facoltativo) Abilita HTTP/2. Predefinito: true.
  • idle_timeout - (Facoltativo) Timeout di inattività in secondi. Predefinito: 60.
  • ip_address_type - (Facoltativo) Tipo di indirizzo IP. Valori validi: ipv4, dualstack, dualstack-without-public-ipv4.
  • preserve_host_header - (Facoltativo) Preserva l’header Host. Predefinito: false.
  • enable_cross_zone_load_balancing - (Facoltativo) Bilanciamento del carico tra zone. Valori: “full”, “avoid” (predefinito), “off”.
  • client_keep_alive - (Facoltativo) Keep-alive client in secondi (60-604800). Predefinito: 3600.
  • xff_header_processing_mode - (Facoltativo) Elaborazione dell’header X-Forwarded-For. Valori: append, preserve, remove. Predefinito: append.
  • tags - (Facoltativo) Una mappa di tag da assegnare alla risorsa.
Argomenti dei log di accesso

Per access_logs, sono supportati i seguenti attributi:

  • bucket - (Necessario) Il nome del bucket S3 dove memorizzare i log.
  • prefix - (Facoltativo) Il prefisso del bucket S3. I log vengono memorizzati nella radice se non configurato.
  • enabled - (Facoltativo) Booleano per abilitare/disabilitare i log di accesso. Predefinito: false.
Argomenti della configurazione di lancio

Per launch_config, sono supportati i seguenti attributi:

  • instance_type - (Facoltativo) Il tipo di istanza EC2 da utilizzare per i nodi di bilanciamento del carico. Se non specificato, il backend sceglierà un valore predefinito appropriato (attualmente c7g.medium).
  • min_instance_count - (Facoltativo) Il numero minimo di istanze da mantenere (intero, minimo 1). Questo numero verrà arrotondato al multiplo superiore del numero di AZ. Se non specificato, il backend sceglierà un valore predefinito appropriato.
  • max_instance_count - (Facoltativo) Il numero massimo di istanze da mantenere (intero, minimo 1). Questo numero verrà arrotondato al multiplo inferiore del numero di AZ. Se non specificato, il backend sceglierà 10 x min_instance_count.
  • target_cpu_usage - (Facoltativo) La percentuale di utilizzo CPU target (10-90) per l’auto-scaling. Se non specificato, il backend sceglierà un valore predefinito appropriato.

Nota: La configurazione di lancio è completamente Facoltativo. Se non specificata, il backend utilizzerà valori predefiniti appropriati per tutti i campi. Questo permette al backend di regolare automaticamente i valori predefiniti per tutti i clienti che non hanno esplicitamente definito questi valori.

Riferimento degli attributi

Oltre agli argomenti sopra, vengono esportati i seguenti attributi:

  • id - L’ID dell’HLB.
  • uri - L’URI completo dell’HLB.
  • dns_name - Il nome DNS dell’HLB (fornito dall’API).
  • zone_id - L’ID della zona ospitata canonica dell’HLB.

hlb_listener_attachment

La risorsa hlb_listener_attachment ti permette di creare e gestire un listener per il tuo Hero Load Balancer.

Esempio di utilizzo

resource "hlb_listener_attachment" "front_end" {
  load_balancer_id     = hlb_load_balancer.front_end.id
  port                 = 443
  protocol             = "HTTPS"
  target_group_arn     = aws_lb_target_group.front_end.arn
  certificate_secrets_arn = "arn:aws:secretsmanager:us-west-2:123456789012:secret:my-certificate-secret-123abc"
  alpn_policy          = "HTTP2Preferred"
}

Riferimento degli argomenti

Sono supportati i seguenti argomenti:

  • load_balancer_id - (Necessario) L’ID dell’HLB.
  • port - (Necessario) La porta su cui il load balancer ascolta.
  • target_group_arn - (Necessario) L’ARN del gruppo target verso cui indirizzare il traffico.
  • overprovisioning_factor - (Facoltativo) Quando enable_cross_zone_load_balancing è impostato su avoid (predefinito), permette al load balancer di inviare al massimo ‘overprovisioning_factor * la quantità media di richieste’ a una singola istanza. Si applica al gruppo target, il comportamento è indefinito se vengono assegnati valori diversi a diversi listener con lo stesso gruppo target. Predefinito: 1.1
  • protocol - (Facoltativo) Il protocollo per le connessioni dei client verso il load balancer. Valori validi: HTTP e HTTPS. Predefinito: HTTP.
  • alpn_policy - (Facoltativo) La policy di negoziazione del protocollo applicativo (ALPN). Valori validi: HTTP1Only, HTTP2Only, HTTP2Optional, HTTP2Preferred, e None.
  • certificate_secrets_arn - (Facoltativo) ARN del segreto in AWS Secrets Manager contenente il certificato SSL del server. Necessario se il protocollo è HTTPS.

Riferimento degli attributi

Oltre agli argomenti sopra, vengono esportati i seguenti attributi:

  • id - L’ID del listener.
  • uri - L’URI completo del listener.

Importazione

Le risorse HLB possono essere importate utilizzando l’id, per esempio:

$ terraform import hlb_load_balancer.test hlb-1234567890abcdef
$ terraform import hlb_listener_attachment.test lis-1234567890abcdef

Per ulteriori informazioni sull’utilizzo del Provider Terraform HLB, consulta la nostra documentazione completa o contatta il nostro team di supporto.