A infraestrutura como código (IaC) é o processo de aprovisionamento e gestão da infraestrutura de aplicações de software através de código, em vez de interfaces gráficas do utilizador ou scripts de linhas de comando.
Normalmente, o aprovisionamento da infraestrutura de aplicações envolve a configuração e a gestão de máquinas virtuais, ligações a bases de dados, armazenamento e outros elementos de infraestrutura. A gestão manual desta infraestrutura é demorada e propensa a erros, especialmente quando se gerem aplicações em grande escala.
A IaC permite-lhe definir a sua infraestrutura com ficheiros de configuração, o que lhe permite criar, alterar e gerir a sua infraestrutura de forma segura e repetível. Pode definir configurações de recursos que pode controlar por versão, reutilizar e partilhar. A IaC permite-lhe especificar o estado pretendido da sua infraestrutura. Em seguida, pode implementar a mesma configuração várias vezes para criar ambientes de desenvolvimento, teste e produção reproduzíveis.
A IaC permite-lhe tratar o aprovisionamento e a configuração da sua infraestrutura da mesma forma que trata o código da aplicação. Pode armazenar a lógica de configuração de aprovisionamento no controlo de origem e tirar partido dos pipelines de integração contínua e implementação contínua (CI/CD).
Vantagens da IaC
A utilização da IaC para configurar e gerir a infraestrutura da sua aplicação é uma prática recomendada para vários exemplos de utilização comuns. A Google gere os respetivos sistemas com IaC, e estabeleceu-o como uma prática padrão internamente.
A IaC oferece as seguintes vantagens:
- Pode definir a sua infraestrutura com base nos seus requisitos e reutilizar a mesma configuração para criar vários ambientes de forma consistente.
- Pode automatizar a criação e a gestão dos seus recursos na nuvem, incluindo para ambientes de implementação e teste.
- Pode tratar as alterações de infraestrutura como trata as alterações de aplicações. Por exemplo, pode garantir que as alterações à configuração são revistas e validadas automaticamente. A gestão de ambientes de produção através de processos controlados por alterações com a IaC é uma prática recomendada.
- Pode manter um histórico de todas as alterações de configuração. As alterações podem ser auditadas e revertidas.
- Pode ter uma única fonte de verdade para a sua infraestrutura na nuvem.
Ferramentas de IaC para Google Cloud
OGoogle Cloud está totalmente integrado com muitas ferramentas de IaC. Escolha uma das seguintes ferramentas consoante o seu exemplo de utilização:
Terraform
Em geral, para configurar e gerir a infraestrutura do Google Cloud através de código, use o fornecedor do Terraform para o Google Cloud.
O HashiCorp Terraform é uma ferramenta de IaC que lhe permite definir recursos na nuvem e no local em ficheiros de configuração legíveis que pode controlar por versão, reutilizar e partilhar. Em seguida, pode usar um fluxo de trabalho consistente para aprovisionar e gerir toda a sua infraestrutura ao longo do respetivo ciclo de vida. Para mais informações, consulte o artigo Vista geral do Terraform no Google Cloud.
Infrastructure Manager
Se quiser automatizar a implementação da sua configuração do Terraform, use o Infrastructure Manager (Infra Manager).
O Infra Manager automatiza a implementação e a gestão de Google Cloud recursos de infraestrutura através do Terraform. O Infra Manager permite-lhe implementar programaticamente noGoogle Cloud, o que lhe permite usar este serviço em vez de manter uma cadeia de ferramentas diferente para trabalhar com o Terraform no Google Cloud. Para mais informações, consulte a vista geral do Infra Manager.
Terraform Cloud e Terraform Enterprise
Se precisar de uma gestão de alterações completa com o Terraform na sua organização, use o Terraform Cloud ou o Terraform Enterprise.
O Terraform Cloud é uma aplicação de software como serviço (SaaS) que executa o Terraform num ambiente remoto estável e armazena de forma segura o estado e os segredos. O Terraform Cloud também se integra com a CLI do Terraform e liga-se a sistemas de controlo de versões (VCS) comuns, como o GitHub, o GitLab e o Bitbucket. Quando associa um espaço de trabalho do Terraform Cloud a um repositório de VCS, as novas consolidações e alterações podem acionar automaticamente planos do Terraform. O Terraform Cloud também oferece uma API, o que lhe permite integrá-lo em fluxos de trabalho existentes.
O Terraform Enterprise permite-lhe configurar uma distribuição autoalojada do Terraform Cloud. Oferece limites de recursos personalizáveis e é ideal para organizações com requisitos rigorosos de segurança e conformidade.
Para mais informações, consulte a página das edições do Terraform na documentação da Hashicorp.
Cloud Development Kit para Terraform
Se quiser gerar infraestrutura com uma linguagem de programação de uso geral, em vez de usar a linguagem de configuração da Hashicorp (HCL), use o Cloud Development Kit for Terraform (CDKTF).
O CDKTF permite-lhe configurar o Terraform através de uma linguagem de programação para definir e aprovisionar Google Cloud a infraestrutura, e permite-lhe usar a sua cadeia de ferramentas existente para processos como testes e gestão de dependências.
Pulumi
O Pulumi é outra ferramenta que pode usar para aprovisionar infraestrutura através de linguagens de programação. Pode usar o Google Cloud fornecedor para o Pulumi para criar código de infraestrutura com linguagens de programação como TypeScript, Python, Go, C#, Java ou YAML.
Configure o controlador e o conetor de configuração
Para gerir Google Cloud recursos através do Kubernetes, use o Config Controller e o Config Connector.
O Config Controller e o Config Connector permitem-lhe configurar Google Cloud serviços e recursos através de ferramentas do Kubernetes. Pode usar ferramentas GitOps, como o Config Sync, e APIs Kubernetes, bem como configurar e usar primitivos de engenharia de plataformas, como webhooks de admissão e operadores.
Para mais informações, consulte a vista geral do Config Controller e a vista geral do Config Connector.
Crossplane
Outra opção para gerir Google Cloud recursos através do Kubernetes é usar o Crossplane.
O Crossplane liga o seu cluster do Kubernetes a recursos externos que não são do Kubernetes e permite que as equipas de plataformas criem APIs Kubernetes personalizadas para consumir esses recursos. O Crossplane funciona como um controlador do Kubernetes para monitorizar o estado dos recursos externos e aplicar o estado. Com o Crossplane instalado num cluster do Kubernetes, os utilizadores comunicam apenas com o Kubernetes. O Crossplane gere a comunicação com recursos externos, como Google Cloud. Se algo modificar ou eliminar um recurso fora do Kubernetes, o Crossplane reverte a alteração ou recria o recurso eliminado.
Para mais informações, consulte a documentação do Crossplane.
Ansible
Se quiser automatizar o aprovisionamento, a gestão da configuração, a implementação de aplicações, a orquestração e outros processos de TI, use o Ansible. Para mais informações, consulte o artigo Ansible para Google Cloud.
O que se segue?
- Saiba mais sobre o Terraform
- Saiba como criar um servidor Web básico no Compute Engine com o Terraform
- Saiba como armazenar o estado do Terraform num contentor do Cloud Storage