Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Infraestrutura como código (IaC) é uma prática chave de DevOps que envolve o gerenciamento de infraestrutura, como redes, serviços de computação, bancos de dados, armazenamentos e topologia de conexão, em um modelo descritivo. O IaC permite que as equipes desenvolvam e liberem mudanças mais rapidamente e com maior confiança. Os benefícios do IaC incluem:
- Maior confiança nas implantações
- Capacidade de gerenciar vários ambientes
- Melhor compreensão do estado da infraestrutura
Para obter mais informações sobre os benefícios de usar a infraestrutura como código, consulte Infraestrutura repetível.
Ferramentas
Há duas abordagens que você pode adotar ao implementar a infraestrutura como código.
- Imperative Infrastructure as Code envolve a escrita de scripts em linguagens como Bash ou PowerShell. Você declara explicitamente os comandos que são executados para produzir um resultado desejado. Quando você usa implantações imperativas, cabe a você gerenciar a sequência de dependências, o controle de erros e as atualizações de recursos.
- Infraestrutura declarativa como código envolve escrever uma definição que define como você deseja que seu ambiente pareça. Nesta definição, você especifica um resultado desejado em vez de como deseja que ele seja realizado. A ferramenta descobre como concretizar o resultado inspecionando o seu estado atual, comparando-o com o seu estado de destino e, em seguida, aplicando as diferenças.
Modelos de ARM
Revise as informações sobre os modelos do Azure Resource Manager (modelos ARM).
Bíceps
Bicep é uma linguagem de domínio específico (DSL) que utiliza sintaxe declarativa para implementar recursos do Azure. Nos arquivos Bicep, você define a infraestrutura que pretende implantar e suas propriedades. Em comparação com os modelos ARM, os arquivos Bicep são mais fáceis de ler e gravar para um público que não é desenvolvedor porque usam uma sintaxe concisa.
Este código Bicep de exemplo implanta uma Conta de Armazenamento do Azure na região do grupo de recursos. Aplica a redundância Standard_LRS e o tipo StorageV2. A camada de acesso é definida como 'Hot' para acesso frequente a dados.
param location string = resourceGroup().location
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Terraformação
Revise as informações sobre Terraform.
Azure CLI (Interface de Linha de Comando da Azure)
Revise as informações sobre a CLI do Azure.
Módulos de Infraestrutura como Código
Um dos objetivos do uso de código para implantar a infraestrutura é evitar a duplicação de trabalho ou a criação de vários modelos para os mesmos fins ou semelhantes. Os módulos de infraestrutura devem ser reutilizáveis e flexíveis e ter uma finalidade clara.
Os módulos são arquivos independentes, normalmente contendo um conjunto de recursos destinados a serem implantados juntos. Os módulos permitem que você divida modelos complexos em conjuntos de código menores e mais gerenciáveis. Você pode garantir que cada módulo se concentre em uma tarefa específica e que todos os módulos sejam reutilizáveis para várias implantações e cargas de trabalho.
Módulos de bíceps
O Bicep permite criar e chamar módulos. Uma vez que os módulos são criados, eles podem ser consumidos a partir de qualquer outro modelo Bicep. Um módulo Bicep de alta qualidade deve definir vários recursos relacionados. Por exemplo, quando você define uma função do Azure, normalmente implanta um aplicativo específico, um plano de hospedagem para esse aplicativo e uma conta de armazenamento para os metadados desse aplicativo. Esses componentes são definidos separadamente, mas formam um agrupamento lógico de recursos, portanto, você deve considerar defini-los juntos como um módulo.
Os módulos Bicep geralmente usam:
- Parâmetros para aceitar valores de um módulo chamador.
- Valores de saída para retornar resultados para um módulo de chamada.
- Recursos para definir um ou mais objetos de infraestrutura para um módulo gerenciar.
Publicar módulos Bicep
Você tem várias opções para publicar e compartilhar módulos Bicep.
- Registo público: O registro do módulo público é hospedado em um registro de contêiner da Microsoft (MCR). Seu código-fonte e os módulos que ele contém são armazenados no GitHub.
- Registo privado: Você pode usar o Registro de contêiner do Azure para publicar módulos em um registro privado. Para obter informações sobre como publicar módulos em um registro em um pipeline de CI/CD, consulte Ações do Bicep e do GitHub ou, se preferir, Pipelines do Bicep e do Azure.
- Especificação do modelo: Você pode usar especificações de modelo para publicar módulos Bicep. As especificações de modelo devem ser modelos completos, mas o Bicep permite que você use especificações de modelo para implantar módulos.
- Sistema de controle de versão: Você pode carregar módulos diretamente de ferramentas de controle de versão, como GitHub ou Azure DevOps.
Módulos Terraform
Terraform permite que você crie e chame módulos. Cada configuração Terraform tem pelo menos um módulo, conhecido como seu módulo raiz, consistindo em recursos definidos em .tf
arquivos em seu diretório de trabalho principal. Cada módulo pode chamar outros módulos, o que permite incluir módulos filho em seu arquivo de configuração principal. Os módulos também podem ser chamados várias vezes dentro da mesma configuração ou de configurações diferentes.
Os módulos são definidos com todos os mesmos conceitos de linguagem de configuração. Eles mais comumente usam:
- Variáveis de entrada para aceitar valores de um módulo chamador.
- Valores de saída para retornar resultados para um módulo de chamada.
- Recursos para definir um ou mais objetos de infraestrutura para um módulo gerenciar.
Publicação de módulos Terraform
Você tem várias opções para publicar e compartilhar módulos Terraform:
- Registo público: HashiCorp tem seu próprio Registro de Módulo Terraform que permite aos usuários gerar módulos Terraform compartilháveis. Atualmente, existem vários módulos do Azure publicados no Registro do Módulo Terraform.
- Registo privado: Você pode publicar perfeitamente os módulos do Terraform em um repositório privado, como o Terraform Cloud Private Registry ou o Azure Container Registry.
- Sistema de controle de versão: Você pode carregar módulos privados diretamente de ferramentas de controle de versão como o GitHub. Para obter informações sobre fontes suportadas, consulte Fontes do módulo Terraform.
Considerações de design
Considere usar o IaC ao implantar recursos da zona de aterrissagem no Azure. O IaC realiza totalmente a otimização da implantação, reduz o esforço de configuração e automatiza as implantações de todo o ambiente.
Determine se você deve adotar uma abordagem IaC imperativa ou declarativa.
Se adotar uma abordagem imperativa, indique explicitamente os comandos a serem executados que produzem o resultado desejado.
Se adotar uma abordagem declarativa, especifique o resultado desejado em vez de como você deseja que ele seja feito.
Considere os escopos de implantação. Tenha uma boa compreensão dos níveis de gerenciamento e da hierarquia do Azure. Cada implantação do IaC deve saber o escopo no qual os recursos do Azure são implantados.
Determine se você deve usar uma ferramenta IaC nativa ou não nativa do Azure. Alguns pontos a considerar:
As ferramentas nativas do Azure, como CLI do Azure, Modelos ARM e Bicep, são totalmente suportadas pela Microsoft, o que permite que seus novos recursos sejam integrados mais rapidamente.
Ferramentas não nativas como o Terraform permitem que você gerencie a infraestrutura como código em vários provedores de nuvem, como AWS ou GCP. No entanto, os novos recursos do Azure podem demorar algum tempo para serem incluídos em ambientes não nativos. Se sua organização é multicloud ou sua organização já está usando e bem versada em Terraform, considere usar Terraform para implantar zonas de aterrissagem do Azure.
Como os módulos permitem que você divida modelos complexos em conjuntos menores de código, considere o uso de módulos IaC para recursos que geralmente são implantados juntos. Você pode garantir que cada módulo se concentre em uma tarefa específica e seja reutilizável para várias implantações e cargas de trabalho.
Considere adotar uma estratégia de publicação para módulos IaC escolhendo entre registros públicos, registros privados ou um sistema de controle de versão como um repositório Git.
Considere o uso de um pipeline de CI/CD para implementações de IaC. Um pipeline impõe o processo reutilizável que você definiu para garantir a qualidade de suas implantações e do ambiente do Azure.
Recomendações de design
Adote uma abordagem IaC para implantar, gerenciar, governar e dar suporte a implantações de zona de aterrissagem do Azure.
Use as ferramentas nativas do Azure para IaC nos seguintes cenários:
Você deseja usar apenas ferramentas nativas do Azure. Sua organização pode ter experiência anterior de implantação de modelo ARM ou Bicep.
Sua organização deseja ter suporte imediato para todas as versões de visualização e GA dos serviços do Azure.
Use ferramentas não nativas para IaC nos seguintes cenários:
Atualmente, sua organização usa o Terraform para implantar infraestrutura em outras nuvens, como AWS ou GCP.
Sua organização não precisa ter suporte imediato para todas as versões de visualização e GA dos serviços do Azure.
Use módulos IaC reutilizáveis para evitar trabalho repetitivo. Você pode compartilhar módulos em toda a organização para implantar vários projetos ou cargas de trabalho e gerenciar códigos menos complexos.
Publique e use módulos IaC de registros públicos nos seguintes cenários:
Você deseja usar módulos para a Zona de Aterrissagem do Azure já publicados em registros públicos. Para obter mais informações, consulte Módulo Terraform de zonas de aterrissagem do Azure.
Você deseja usar módulos que são mantidos, atualizados e suportados pela Microsoft, Terraform ou outros provedores de módulos.
- Certifique-se de verificar a declaração de suporte de qualquer provedor de módulo que você avaliar.
Publique e use módulos IaC de registros privados ou sistemas de controle de versão nos seguintes cenários:
Você deseja criar seus próprios módulos com base em seus requisitos organizacionais.
Você deseja ter controle total de todos os recursos e manter, atualizar e publicar novas versões dos módulos.
Utilize um pipeline de CI/CD para implementar recursos de IaC e garantir a qualidade da sua implementação e dos ambientes do Azure.