Variáveis de saída x fontes de dados
As saídas e fontes de dados do Terraform podem parecer semelhantes à primeira vista, mas atendem a objetivos distintos em seus fluxos de trabalho de infraestrutura como código (IaC, Infrastructure-as-code). Veja um detalhamento para esclarecer as diferenças:
Variáveis de saída do Terraform
As saídas do Terraform expõem informações sobre recursos gerenciados pelo Terraform. Os valores de saída são derivados de atributos de recursos existentes em sua configuração do Terraform. As saídas normalmente são usadas em casos que envolvem:
- Compartilhamento de dados entre módulos ou configurações do Terraform
- Passar informações para sistemas externos para gerenciamento ou monitoramento de configurações
- Simplificação da lógica de configuração fazendo referência a valores dinâmicos em vez de dados codificados
Um exemplo desse cenário é extrair o endereço IP público de uma instância do EC2 e usá-lo para configurar uma regra de grupo de segurança em outro módulo Terraform.
Fontes de dados Terraform
As fontes de dados recuperam dados de fontes externas. Ele interage com APIs ou plug-ins para buscar informações de provedores de nuvem, ferramentas de gerenciamento de configuração ou outros sistemas externos. As fontes de dados são usadas em casos que envolvem:
- Acessar informações sobre recursos existentes que não são gerenciados pelo próprio Terraform
- Uso de dados externos para configurar dinamicamente os recursos do Terraform
- Integração do seu IaC com outras ferramentas e plataformas
Um exemplo é usar uma fonte de dados para recuperar uma lista de regiões disponíveis em um provedor de nuvem antes de criar recursos nessas regiões.
Simplificando, a escolha entre usar uma variável de saída ou uma fonte de dados depende da origem dos dados que você precisa:
- Se os dados se originarem de recursos gerenciados na configuração do Terraform, use uma variável de saída.
- Se os dados residirem em um sistema externo ou precisarem ser buscados dinamicamente, use uma fonte de dados.
Práticas recomendadas para usar a saída Terraform
Ao usar as saídas do Terraform, você deve considerar as seguintes práticas recomendadas:
- Use nomes descritivos: Escolha nomes claros e concisos que reflitam os dados que estão sendo expostos pela variável de saída. Evite nomes genéricos como "saída1" ou "dados". Em vez disso, use nomes como "rds_instance_public_ip" ou "webserver_security_group_id". Isso melhora a legibilidade e a manutenção de suas configurações.
- Use uma convenção uniforme de nomenclatura: Mantenha uma convenção de nomenclatura uniforme em toda a sua base de código Terraform. Isso pode envolver o uso de sublinhados ou hifens para separação e manter o esquema de nomenclatura alinhado em todos os módulos e configurações.
- Saídas relacionadas ao grupo: Agrupe as saídas relacionadas logicamente. Por exemplo, se você tiver várias saídas relacionadas a uma instância de banco de dados (endereço IP, porta, nome de usuário), agrupe-as sob um único cabeçalho em seu arquivo de configuração. Isso melhora a organização e facilita a localização de informações específicas.
- Use comentários: Inclua comentários claros para explicar a finalidade e o uso de cada variável de saída. Isso é particularmente útil para resultados que podem não ser imediatamente autoexplicativos ou quando usados por outros módulos ou equipes.
- Evite saídas desnecessárias: Evite definir saídas para dados que não são genuinamente necessários. Saídas excessivas podem desorganizar a saída e dificultar a identificação das informações mais relevantes. Avalie se os dados podem ser usados diretamente na configuração do Terraform ou se uma abordagem alternativa pode ser mais eficiente.
- Evite saídas para segredos: Se possível, evite armazenar dados confidenciais nas configurações do Terraform. Explore métodos alternativos para gerenciar segredos, como aproveitar o HashiCorp Vault ou variáveis de ambiente.
- Use o atributo sensível Terraform: Se usar saídas para segredos for inevitável, marque-as como sensíveis usando o atributo sensível no bloco de saída. Isso instrui o comando de saída terraform para suprimir o valor ao exibir a saída.
Veja um exemplo com o atributo sensível adicionado:
output "db_password" {
value = aws_db_instance.example.password
sensitive = true
}
|
Conclusão
A saída Terraform permite preencher a lacuna entre configurações estáticas e infraestrutura dinâmica. Ao aproveitar os resultados, você pode simplificar o compartilhamento de dados, automatizar tarefas e simplificar a verificação.
Para aproveitar todo o potencial da sua infraestrutura, considere usar as soluções da Pure Storage, como a Portworx®, para permitir armazenamento persistente para suas implantações do Terraform Kubernetes, bem como o Pure Cloud Block Store.