Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
tech:terraform:variables [10/06/2025 06:25] – [terraform variables] matetech:terraform:variables [10/06/2025 06:50] (actual) – [input variables] mate
Línia 3: Línia 3:
 == declaración == declaración
   * recomendado en fichero aparte **variables.tf**   * recomendado en fichero aparte **variables.tf**
-<code properties variables.tf+declaración: <code properties variables.tf>
- +
-declaración:</code>+
 variable "aws_region" { variable "aws_region" {
   description = "AWS region"   description = "AWS region"
Línia 22: Línia 20:
   type        = bool   type        = bool
   default     = false   default     = false
 +}
 +
 +variable "resource_tags" {
 +  description = "Tags to set for all resources"
 +  type        = map(string)
 +  default     = {
 +    project     = "project-alpha",
 +    environment = "dev"
 +  }
 } }
 </code> </code>
Línia 35: Línia 42:
  
    instance_count = var.instance_count    instance_count = var.instance_count
-   ## ...+ 
 +   #tags = { 
 +    project     = "project-alpha", 
 +   #  environment = "dev" 
 +   #} 
 +   tags = var.resource_tags
  }  }
 +
 +
 </code> </code>
  
 == list, map, set == list, map, set
-== tipos + 
-  * **list**: lista de valores retornados en el mismo orden+  * **list**: lista de valores del mismo tipo, retornados en el mismo orden
 +    * Admite el uso de varios tipos: ''list(string)'', ''list(list)'', ''list(map)'', ...
     * <code properties>list("a", "b", "c") # <=0.11</code>     * <code properties>list("a", "b", "c") # <=0.11</code>
     * <code properties>["a", "b", "c"] # >=0.12</code>     * <code properties>["a", "b", "c"] # >=0.12</code>
Línia 58: Línia 73:
   ]   ]
 }</code> }</code>
-  * **set**: colección de __valores únicos__ sin identificadores secundarios y sin orden +  * **map**: colección de valores key=value, identificado cada uno con una cadena
-  * **map**: colección de valores identificado cada uno con una cadena+
     * <code properties>map("a", "b", "c", "d")     * <code properties>map("a", "b", "c", "d")
 { {
Línia 70: Línia 84:
   "c" = "d"   "c" = "d"
 }</code> }</code>
 +  * **set**: colección de __valores únicos__ sin identificadores secundarios y sin orden
 +
 +=== funciones
 +  * [[https://developer.hashicorp.com/terraform/language/functions/slice|slice()]]: obtener parte de una lista. 
 +
 +== más tipos
   * **object**: colección de atributos identificados, con posibilidad de diferentes tipos   * **object**: colección de atributos identificados, con posibilidad de diferentes tipos
     * <code javascript>{     * <code javascript>{
Línia 96: Línia 116:
  
 /via: [[https://www.terraform.io/docs/configuration/types.html]] /via: [[https://www.terraform.io/docs/configuration/types.html]]
- 
-=== funciones 
-  * [[https://developer.hashicorp.com/terraform/language/functions/slice|slice()]]: obtener parte de una lista.  
- 
  
 == input variables == input variables
Línia 133: Línia 149:
   * uso:<code properties>var.<NOMBRE_DECLARATIVO></code>   * uso:<code properties>var.<NOMBRE_DECLARATIVO></code>
  
 +== interpolación
 +<code properties>
 +name        = "web-sg-${var.resource_tags["project"]}-${var.resource_tags["environment"]}"
 +</code>
 +
 +== validación
 +<code properties>
 +variable "resource_tags" {
 +  description = "Tags to set for all resources"
 +  type        = map(string)
 +  default     = {
 +    project     = "my-project",
 +    environment = "dev"
 +  }
 +
 +  validation {
 +    condition     = length(var.resource_tags["project"]) <= 16 && length(regexall("[^a-zA-Z0-9-]", var.resource_tags["project"])) == 0
 +    error_message = "The project tag must be no more than 16 characters, and only contain letters, numbers, and hyphens."
 +  }
 +
 +  validation {
 +    condition     = length(var.resource_tags["environment"]) <= 8 && length(regexall("[^a-zA-Z0-9-]", var.resource_tags["environment"])) == 0
 +    error_message = "The environment tag must be no more than 8 characters, and only contain letters, numbers, and hyphens."
 +  }
 +}
 +
 +</code>
 == asignación de valores en variables del módulo raiz (Root Module) == asignación de valores en variables del módulo raiz (Root Module)
   * mediante parámetro en el cli ''-var='<KEY>="<VALUE>"%%'%%''   * mediante parámetro en el cli ''-var='<KEY>="<VALUE>"%%'%%''
  • tech/terraform/variables.1749561922.txt.gz
  • Darrera modificació: 10/06/2025 06:25
  • per mate