Variáveis ​​de terraform

Variáveis ​​de terraform
Terraform emergiu como uma das principais ferramentas de provisionamento para o desenvolvimento de várias nuvens. Ele usa sua própria linguagem baseada em sintaxe chamada - HCl (Hashicorp Configuration Language), embora seja desenvolvida em Golang.

Terraform é usado para automatizar e gerenciar infraestruturas, plataformas e serviços usando linguagem declarativa. Construído para fins de infraestrutura como solução de código (IAC), a Terraform suporta vários provedores de serviços em nuvem. É uma ferramenta de código aberto desenvolvido por Hashicorp. Usando o IAC, podemos gerenciar a configuração de infraestrutura com arquivos de configuração. Para e.g., Podemos implantar, atualizar e gerenciar nossa infraestrutura, definindo os recursos necessários.

O que vamos cobrir?

Neste guia, aprenderemos sobre variáveis ​​de terraform. Veremos por que as variáveis ​​de terraform são importantes e como devemos defini -las e usá -las.

Por que você deveria se preocupar com variáveis ​​de terraform?

Em Terraform, podemos atribuir valores aos argumentos por meio de literais como números inteiros e strings. Essa pode ser uma boa abordagem para pequenas configurações de infraestrutura, mas à medida que o tamanho da infraestrutura cresce, essa abordagem se torna muito ineficiente. Nesses casos, podemos usar as variáveis ​​de entrada da Terraform, onde declaramos um valor em apenas um lugar e depois usamos esse valor em outras partes do código e arquivos, referenciando -os a. Essa abordagem é mais eficiente, pois torna o código reutilizável e composível.

Observe que o Terraform usa o termo 'variáveis' ou 'variáveis ​​de terraforma' para referenciar variáveis ​​de entrada.

Definindo uma variável

No Terraform, as variáveis ​​são definidas dentro de um bloco 'variável', que possui o seguinte tipo de sintaxe:

variável variável_name argumentos

A própria palavra -chave 'variável' declara o bloco como um tipo de bloco 'variável'. O 'variável_name', após a palavra -chave variável, é o nome da variável que vamos definir. Este nome deve ser distinto de outras variáveis ​​dentro do mesmo módulo. Usando esse nome, a variável recebe um valor de fora. Da mesma forma, usando o nome da variável, podemos fazer referência ao seu valor no módulo.

Observe que os seguintes identificadores reservados não podem ser usados ​​para um nome de variável: fonte, versão, provedores, contagem, for_each, ciclo de vida, depende_on, moradores locais.

Argumentos para o bloco variável

Os seguintes argumentos podem ser declarados dentro de um bloco de tipo de variável:

padrão - ele define um valor padrão para o bloco. Uma variável é opcional se um valor padrão estiver presente. Este valor será usado se nenhum outro valor for especificado enquanto chama um módulo.

Tipo - ele especifica os tipos de valores que podem ser usados ​​com a variável.

Descrição - É uma espécie de comentário sobre a própria variável.

Validação - é um bloco definir condições/verificações para uma variável.

sensível - ele esconde dados confidenciais a serem mostrados ao executar o comando 'plano' ou 'aplicar'.

Nullável - controla se a variável pode receber um valor no módulo.

Acessando os valores de uma variável

Para acessar um valor da variável de dentro do módulo, use o formato:

var.

Onde 'var' é um prefixo e é o rótulo após a palavra -chave 'variável'. Este valor atribuído de uma variável só pode ser acessado em expressões dentro do módulo onde foi definido. Como exemplo, considere uma variável 'chave' definida como:

variável “instance_type”
padrão = “T2.micro ”


Podemos fazer referência à variável acima da seguinte forma:

Recurso "AWS_INSTANCE" "Exemplo"
instance_type = "var.instance_type "
ami = var.image_id

Variáveis ​​da linha de comando

Para atribuir um valor a uma variável na linha de comando, a Terraform usa a opção '-var'. Para e.g., Quando o Plano Terraform e o Comando Terraform Apply são executados, podemos fazer o seguinte:

1. Passando uma instância Ami-Id

$ Terraform Aplicar -var = "image_id = ami -xyz123"


2. Passando uma lista de instância ami-ids

$ Terraform Aplicar -var = 'image_id_list = ["ami -xyz123", "ami -abc456"]' -var = "instance_type = t2.micro "


3. Passando um valor de tipo de mapa

$ Terraform Aplicar -var = 'Image_Id_Map = "US-East-1": "AMI-XYZ123", "US-EAST-2": "AMI-ABC456"'

Arquivos de definições variáveis ​​(.tfvars)

Quando há muitas variáveis, é uma boa ideia colocá -las em um arquivo de definição variável (a .arquivo tfvars ou .tfvars.arquivo json). Podemos então passar este arquivo na linha de comando da seguinte forma:

$ Terraform Aplicar -var -File = "Exemplo.tfvars "


Este arquivo será analisado automaticamente se for nomeado 'Terraform.tfvars '.

Observe que não colocamos este arquivo em nenhum sistema de controle de origem para evitar a exposição a dados confidenciais.

Além disso, se adicionarmos '.Auto 'para um nome de arquivo antes'.tfvars ', por exemplo, myfile.auto.TFVARS, este arquivo será carregado automaticamente sem especificar o sinalizador 'VAR-FILE'. É o mesmo que o 'Terraform.arquivo tfvars '.

variáveis ​​ambientais

Variáveis ​​de ambiente, com nomes prefixados com tf_var, podem ser usados ​​para definir variáveis ​​de entrada. Para e.g., "TF_VAR_MYKEY" se referirá ao valor de uma variável de Terraform chamada "MyKey". Para definir um único valor para essa variável de ambiente no Unix/Linux, use o formato:

$ Tf_var_mykey = “fhj7-47dd-hll02-pJU8”


Da mesma forma, para o sistema operacional Windows, use o formato:

Definir tf_var_mykey = “fhj7-47dd-hll02-pju8”


Como alternativa, também podemos usar o Terraform.arquivo tfvars.

Empacotando

Agora estamos finalmente fechando este artigo, embora haja muitas outras coisas para cobrir. Apresentamos uma visão de alto nível das variáveis ​​de terraformação. Além do Terraform, também existem outras ferramentas como a AWS CloudFormation, Chef, Puppet, Ansible, e assim por diante. Cada ferramenta tem suas próprias vantagens e limitações. O benefício de usar o Terraform é que ele não está vinculado a um determinado provedor de serviços.