Infraestrutura como código (IaC, na sigla em inglês) é o processo de provisionar e gerenciar a infraestrutura de aplicativos de software usando código em vez de interfaces gráficas do usuário ou scripts de linha de comando.
O provisionamento da infraestrutura de aplicativos geralmente envolve a configuração e o gerenciamento de máquinas virtuais, conexões de banco de dados, armazenamento e outros elementos de infraestrutura. O gerenciamento manual dessa infraestrutura é demorado e propenso a erros, especialmente no gerenciamento de aplicativos em escala.
A IaC permite definir sua infraestrutura com arquivos de configuração, o que permite criar, alterar e gerenciar sua infraestrutura de maneira segura e repetível. É possível definir configurações de recursos para controlar, reutilizar e compartilhar. A IaC permite especificar o estado desejado da infraestrutura. Em seguida, você pode implantar a mesma configuração várias vezes para criar ambientes de desenvolvimento, teste e produção reproduzíveis.
A IaC permite tratar o provisionamento e a configuração da infraestrutura da mesma maneira que o código do aplicativo. É possível armazenar sua lógica de configuração de provisionamento no controle de origem e aproveitar os pipelines de integração e implantação contínuas (CI/CD).
Benefícios de IaC
O uso da IaC para configurar e gerenciar a infraestrutura do aplicativo é uma prática recomendada para vários casos de uso comuns. O Google gerencia os sistemas com IaC e a estabeleceu como uma prática padrão internamente.
A IaC oferece os seguintes benefícios:
- É possível definir a infraestrutura com base nos seus requisitos e reutilizar a mesma configuração para criar vários ambientes de maneira consistente.
- Automatize a criação e o gerenciamento de seus recursos de nuvem, inclusive para ambientes de implantação e teste.
- Trate as alterações de infraestrutura como trata as alterações nos aplicativos. Por exemplo, você pode garantir que as alterações na configuração sejam revisadas e validadas automaticamente. Gerenciar ambientes de produção usando processos controlados por mudanças usando a IaC é uma prática recomendada.
- É possível manter um histórico de todas as alterações de configuração. As alterações podem ser auditadas e revertidas.
- Você pode ter uma única fonte de verdade para sua infraestrutura em nuvem.
Ferramentas de IaC para o Google Cloud
O Google Cloud é totalmente integrado a muitas ferramentas de IaC. Escolha uma das ferramentas abaixo, dependendo do caso de uso:
Terraform
Em geral, para configurar e gerenciar a infraestrutura do Google Cloud usando código, use o provedor do Terraform para o Google Cloud.
O HashiCorp Terraform é uma ferramenta de IaC que permite definir recursos na nuvem e no local em arquivos de configuração legíveis por humanos que você pode controlar, reutilizar e compartilhar. Assim, é possível usar um fluxo de trabalho consistente para provisionar e gerenciar toda a infraestrutura durante todo o ciclo de vida. Para mais informações, consulte Visão geral do Terraform no Google Cloud.
Infrastructure Manager
Se você quiser automatizar a implantação da configuração do Terraform, use o Infrastructure Manager (Infra Manager).
O Infra Manager automatiza a implantação e o gerenciamento dos recursos de infraestrutura do Google Cloud usando o Terraform. O Infra Manager permite implantar programaticamente no Google Cloud, permitindo que você use esse serviço em vez de manter um conjunto de ferramentas diferente para trabalhar com o Terraform no Google Cloud. Para mais informações, consulte Visão geral do Infra Manager.
Terraform Cloud e Terraform Enterprise
Se você precisar de um gerenciamento completo de mudanças com o Terraform em sua organização, use o Terraform Cloud ou o Terraform Enterprise.
O Terraform Cloud é um aplicativo de software como serviço (SaaS) que executa o Terraform em um ambiente remoto e estável e armazena estados e secrets com segurança. Ele também se integra à CLI do Terraform e se conecta a sistemas de controle de versões (VCS, na sigla em inglês) comuns, como GitHub, GitLab e Bitbucket. Quando você conecta um espaço de trabalho do Terraform Cloud a um repositório do VCS, novas confirmações e alterações podem acionar automaticamente os planos do Terraform. O Terraform Cloud também oferece uma API, que permite integrá-lo a fluxos de trabalho existentes.
O Terraform Enterprise permite configurar uma distribuição auto-hospedada do Terraform Cloud. Ele 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 Edições do Terraform na documentação da Hashicorp (em inglês).
Cloud Development Kit for Terraform
Se você quiser gerar infraestrutura com uma linguagem de programação de uso geral em vez de usar a linguagem de configuração Hashicorp (HCL, na sigla em inglês), use o Cloud Development Kit para Terraform (CDKTF).
O CDKTF (em inglês) permite configurar o Terraform usando uma linguagem de programação para definir e provisionar a infraestrutura do Google Cloud, além de usar o conjunto de ferramentas atual para processos como testes e gerenciamento de dependências.
Pulumi
Pulumi (em inglês) é outra ferramenta que pode ser usada para provisionar infraestrutura usando linguagens de programação. O provedor do Google Cloud da Pulumi pode ser usado para criar o código de infraestrutura usando linguagens de programação como TypeScript, Python, Go, C#, Java ou YAML.
Config Controller e Config Connector
Para gerenciar os recursos do Google Cloud pelo Kubernetes, use o Config Controller e o Config Connector.
O Config Controller e o Config Connector permitem configurar serviços e recursos do Google Cloud usando ferramentas do Kubernetes. Use ferramentas do GitOps, como o Config Sync e as APIs do Kubernetes, além de configurar e usar primitivos de engenharia de plataforma, como webhooks e operadores de admissão.
Para mais informações, consulte Visão geral do Config Controller e Visão geral do Config Connector.
Crossplane
Outra opção para gerenciar os recursos do Google Cloud pelo Kubernetes é usando o Crossplane.
O Crossplane conecta seu cluster do Kubernetes a recursos externos que não são do Kubernetes e permite que as equipes de plataforma criem APIs personalizadas do Kubernetes para consumir esses recursos. O Crossplane atua como um controlador do Kubernetes para observar o estado dos recursos externos e fornecer aplicação de estado. Quando o Crossplane está instalado em um cluster do Kubernetes, os usuários só se comunicam com o Kubernetes. O Crossplane gerencia a comunicação com recursos externos como o Google Cloud. Se algo modificar ou excluir um recurso fora do Kubernetes, o Crossplane reverterá a alteração ou recriará o recurso excluído.
Para mais informações, consulte a documentação do Crossplane.
Ansible
Para automatizar o provisionamento, o gerenciamento de configurações, a implantação de aplicativos, a orquestração e outros processos de TI, use o Ansible. Para mais informações, consulte Ansible para Google Cloud.
A seguir
- Saiba mais sobre o Terraform
- Aprenda a criar um servidor da Web básico no Compute Engine usando o Terraform.
- Saiba como armazenar o estado do Terraform em um bucket do Cloud Storage.