Familiaridad con casos de uso comunes para las funciones integradas de Terraform

Un tutorial rápido sobre el uso de Terraform para aprender y aplicar los diferentes tipos de funciones integradas, incluidas Numérico, Cadena y Fecha y Hora en esta herramienta de IaC.







Los equipos de TI pueden utilizar Terraform de HashiCorp para implementar y administrar recursos en la nube y locales. Para optimizar el uso de su herramienta, aprenda e instale las funciones de Terraform.







Los administradores pueden utilizar las funciones integradas de Terraform para realizar varias operaciones matemáticas relacionadas con la implementación y realizar operaciones como codificar y decodificar o capturar y mostrar marcas de tiempo. Terraform solo admite funciones integradas ; las funciones especiales o definidas por el usuario no están disponibles.







Use este tutorial de Terraform para aprender los conceptos básicos de las funciones, así como algunas formas comunes de usarlas en implementaciones empresariales.







Empecemos por la sintaxis



La sintaxis de la función Terraform comienza con el nombre de la función, seguida de paréntesis que contienen de cero a varios argumentos, separados por comas:







name(arg-1, arg-2, … arg-n)
      
      





, , timestamp()



, :







> timestamp()
2019-12-07T07:44:12Z
      
      





, file()



:













Terraform



Terraform , . $ {builtinfunction ()}



, :







resource "myinstance" "web" {
    tags = ["${var.env == "prod" ? var.prod_subnet : var.dev_subnet}"]
}
      
      





Terraform, . Terraform, .







. Terraform environment



, production, AWS (AZs). availzone



, , , us-east-1a



, us-east-1b



us-east-1c



. , , :







variable "environment" {
default = {
    "test" = "us-east-1"
    "prod" = "us-west-2"
  }
}

variable "availzone" {
  description = "Availability Zones Mapping"
  default = {
    "us-east-1" = "us-east-1a,us-east-1b,us-east-1c"
    "us-west-2" = "us-west-2a,us-west-2b,us-east-1c"
  }
}
      
      





AZ, lookup()



, , , (,)



split()



.







, element()



. AZ . $ {}



, , Terraform , .







output "availabiltyzones" {
  value = "${element(split(",", lookup(var.availzone,var.environment.prod)), 1)}"
}
      
      





, :













Terraform



Terraform .













, , , / , :



















Terraform . , title()



, lower()



upper()



:













- , :



















Terraform. , timestamp()



:













formatdate()



, :



















Terraform , . , base64encode('string')



Base64, Azure, Base64 . file()



, Base64encode()



:







resource "azurerm_virtual_machine_extension" "Example" {
  name                 = "MyVM"
  location             = "${azurerm_resource_group.test.location}"
  resource_group_name  = "${azurerm_resource_group.test.name}"
  virtual_machine_name = "${azurerm_virtual_machine.test.name}"
  publisher            = "Microsoft.Azure.Extensions"
  type                 = "CustomScript"
  type_handler_version = "2.0"
  settings = <
      
      





(Collections)







Terraform , , :







length([1,12,31,14,5,2])
length("this is a string")
      
      





, , :














All Articles