As variáveis
As variáveis de entrada permitem personalizar aspectos dos módulos Terraform sem alterar o próprio código -fonte do módulo. Isso permite que você compartilhe módulos em diferentes configurações do Terraform, tornando seu módulo composível e reutilizável.
Quando você declara variáveis no módulo raiz da sua configuração, você pode definir seus valores usando opções de CLI e variáveis de ambiente. Quando você os declara nos módulos infantis, o módulo de chamada deve passar valores no bloco do módulo.
Se você estiver familiarizado com as linguagens de programação tradicionais, pode ser útil comparar os módulos Terraform para as definições de função:
- As variáveis de entrada são como argumentos de função.
- Os valores de saída são como valores de retorno da função.
- Os valores locais são como as variáveis locais temporárias de uma função.
Exemplo:
variable "image_id" {
type = string
}
variable "availability_zone_names" {
type = list(string)
default = ["us-west-1a"]
}
variable "docker_ports" {
type = list(object({
internal = number
external = number
protocol = string
}))
default = [
{
internal = 8300
external = 8300
protocol = "tcp"
}
]
}
Os arquivos de variáveis
A Terraform carrega automaticamente vários arquivos de definições de variáveis se estiverem presentes:
- Arquivos nomeados exatamente:
TerraForm.tfvars ou Terraform.tfvars.json
- Ou quaisquer arquivos com nomes terminando em:
.auto.tfvars ou .auto.tfvars.json
Precedência
Além disso o Terraform carrega variáveis na seguinte ordem, com fontes posteriores tendo precedência sobre as anteriores:
- O arquivo Terraform.tfvars, se presente.
- O arquivo Terraform.tfvars.json, se presente.
- Qualquer arquivos .auto.tfvars ou .auto.tfvars.json arquivos, processados em ordem lexical de seus nomes de arquivos.
- Qualquer opções -var e -var -arquivo na linha de comando, na ordem em que são fornecidas. (Isso inclui variáveis definidas por um espaço de trabalho da Terraform Cloud.)