Familiaridade com casos de uso comuns para funções integradas do Terraform

Um rápido tutorial sobre como usar o Terraform para aprender e aplicar os diferentes tipos de funções integradas, incluindo numérica, string e data e hora nesta ferramenta IaC.







As equipes de TI podem usar o Terraform da HashiCorp para implantar e gerenciar recursos na nuvem e no local. Para otimizar o uso da ferramenta, aprenda e instale os recursos do Terraform.







Os administradores podem usar funções integradas do Terraform para realizar vários cálculos matemáticos relacionados à implantação e para realizar operações como codificação e decodificação ou captura e exibição de carimbos de data / hora. O Terraform só oferece suporte a funções integradas ; funções especiais ou definidas pelo usuário não estão disponíveis.







Use este tutorial do Terraform para aprender os fundamentos dos recursos, bem como algumas maneiras comuns de usá-los em implantações empresariais.







Vamos começar com a sintaxe



A sintaxe da função Terraform começa com o nome da função, seguido por parênteses contendo de zero a vários argumentos, separados por vírgulas:







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