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 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")
, , :
