O que é o Infrastructure as Code?

Em termos simples, a Infraestrutura como Código ( IaC ) está usando código para gerenciar e provisionar a infraestrutura (redes, máquinas virtuais, balanceadores de carga, clusters, serviços e topologia de conexão) em um modelo descritivo em vez de processos manuais.

Com IaC, os arquivos de configuração definem sua infraestrutura, o que também facilita a edição, o compartilhamento e a reutilização de configurações. Ao codificar sua infraestrutura, você provisiona o mesmo ambiente toda vez evitando alterações de configuração não documentadas, ad hoc.

O Schematics utiliza o Ansible de software livre e o Terraform para fornecer um conjunto poderoso de ferramentas IaC como um serviço para programar sua infraestrutura de nuvem. Com o Schematics, é possível usar esse rico conjunto de recursos de automação do IaC para construir pilhas de recursos de nuvem, gerenciar seu ciclo de vida, gerenciar mudanças em suas configurações, implementar suas cargas de trabalho do app e executar operações day-2.

Benefícios da Infra-estrutura como Código

A adoção de uma abordagem IaC para a implementação de infraestrutura resolve muitos problemas comuns com o provisionamento de infraestrutura e oferece vários benefícios. O site Schematics permite que você obtenha esses benefícios sem a necessidade de instalar, executar e gerenciar suas próprias ferramentas IaC.

  • Confiabilidade e Consistência: Novos ambientes ou infraestrutura são provisionados de forma confiável. Os processos manuais resultam em erros. Com o IaC, as mesmas configurações são implementadas repetidamente, sem diferenças. O IaC melhora a consistência entre ambientes e implementações.

  • Velocidade: o IaC permite configurar rapidamente sua infraestrutura completa por meio da automação. Você a aplica a todo ambiente, desde desenvolvimento até produção, encenação, QA, e mais. Isso pode levar a custos menores, já que o tempo para implantar, gerenciar e manter ambientes diminui.

  • Rastreamento e Responsabilidade: As mudanças na infraestrutura existente são feitas em código, e as mudanças são acompanhadas. Como qualquer arquivo de código fonte, você tem total rastreabilidade das alterações feitas em uma configuração.

  • Detectar e corrigir deriva do ambiente: Se uma parte da infraestrutura for modificada manualmente fora do código, ela pode ser trazida de volta em linha com o estado desejado na próxima execução. Detecção de desvio é um recurso de áreas de trabalho Schematics.

Melhores práticas

Ao adotar o site IaC para provisionamento e gerenciamento de configuração, há uma série de práticas recomendadas. Essas práticas são totalmente compatíveis com o uso do site Schematics.

Codificando tudo no IaC

Todas as especificações de infraestrutura devem ser explicitamente codificadas em um arquivo de configuração, por exemplo, como configurações do Terraform ou playbooks do Ansible. Os arquivos de configuração são a única origem da verdade de sua especificação de infraestrutura e descrevem quais componentes de infraestrutura são usados em sua configuração.?

Minimizar a documentação

IaC é a documentação. Com o site IaC instalado, os arquivos de configuração representam a documentação e estão sempre atualizados, o que reduz o esforço. A documentação restante é sobre o processo. Manter código em um Sistema de Controle de Versão.

Os arquivos de configuração do IaC devem ser mantidos em um sistema de controle de versão (VCS), como GitHub ou GitLab. Isso fornece uma trilha de auditoria para mudanças de código, mas também dá a oportunidade de colaborar ou revisão por pares e alterações de teste antes de irem ao vivo.

Com essa prática, você pode facilmente rastrear, gerenciar e reverter quaisquer mudanças potenciais em seus sistemas, com rastreabilidade aprimorada e visibilidade.

Teste

Uma das práticas que o site IaC empresta do desenvolvimento de software é o teste. O teste rigoroso de configuração de infraestrutura desempenha um papel na redução de problemas de implementação de post. Quando combinado com sistemas de controle de versão, os testes podem ser acionados automaticamente toda vez que houver uma modificação no código.

Com a Integração contínua (IC) em vigor, a configuração de infraestrutura de modelo pode ser implementada em diversos ambientes, como o ambiente development, UAT, QA ou production com mudanças mínimas aplicadas efetivamente.

Infraestrutura Modular

Quebrar a infraestrutura em módulos permite o reuso, a confiabilidade melhorada e um caminho de adoção mais fácil. Similar ao uso de módulos e pacotes em linguagens de programação. Confessa a seguir os benefícios para esta prática.

  • Configurações usadas freqüentemente podem ser codificadas como módulos e reutilizadas várias vezes através de ambientes.
  • A confiabilidade aumenta conforme os módulos podem ser testados e se tornam endurecidos ao longo do tempo com uso.
  • A composição de módulos reutilizáveis reduz a barreira de qualificações para a adoção do IaC
  • As mudanças são mais fáceis de fazer e testar em um nível de módulo.
  • O risco de mudança reduz à medida que as mudanças de configuração são localizadas.

Aproveitamento do Terraform IBM Modules

O Terraform IBM Modules(TIM) fornece componentes de infraestrutura reutilizáveis e prontos para produção, projetados especificamente para o IBM Cloud. Esses módulos seguem as práticas recomendadas para infraestrutura como código e reduzem significativamente a complexidade da implementação de serviços comuns do IBM Cloud.

Explore o Terraform IBM Modules para descobrir módulos pré-criados para infraestrutura de VPC, serviços de segurança, observabilidade e muito mais. Cada módulo é exaustivamente testado e mantido por especialistas do IBM Cloud, garantindo a confiabilidade e a adesão às práticas recomendadas de segurança.

Abordagens declarativas versus imperativas para IaC

Com a adoção do site IaC,, um aspecto a ser considerado é a abordagem do seu ferramental. Há dois estilos diferentes, declarativos ou imperativos, também por vezes descritos como procedimentais.

Uma abordagem declarativa define o estado desejado do sistema, incluindo os recursos que você precisa e quaisquer propriedades que eles devem ter e a ferramenta configura para você. A própria ferramenta determina as operações para chegar ao estado desejado a partir de qualquer ponto inicial.

Uma abordagem imperativa em vez disso define os comandos específicos necessários para alcançar a configuração desejada, e esses comandos então precisam ser executados na ordem correta.

O chef é pensado como uma ferramenta imperativa. Terraforma é classificada como declarativa. Ansible é declarativo mas também pode ser usado com comandos imperativos.

Terraforma declarativa e gestão do ciclo de vida

Schematics suporta o Terraform e o Ansible como ferramentas IaC com espaços de trabalho e ações Schematics. Quando o gerenciamento do ciclo de vida é importante, com os ambientes sendo regularmente montados e desmontados, recomenda-se o uso do Terraform com espaços de trabalho Schematics. O Terraform mantém um registro do estado atual da infraestrutura de nuvem implantada e o Schematics é capaz de remover a infraestrutura na ordem inversa de dependência sem intervenção manual.

Idempotence

Uma vantagem da abordagem declarativa usada pelo Terraform e pelo Ansible é o idempotence. Tarefas idempotentes podem ser executadas várias vezes com o mesmo resultado final. Independentemente do estado anterior ou de início ao reinício após falhas, a infraestrutura e a configuração provisionadas são sempre as mesmas. Esse aspecto é fundamental para garantir a consistência e a repetibilidade dos ambientes implantados usando o Schematics.

Como você usa uma ferramenta e os módulos usados têm um impacto no idempotency. Geralmente, os módulos Terraform e Ansible são gravados para serem idempotentes. Com ambas as ferramentas, código podemos escrever que não rende um resultado idempoente. Nesse caso, a configuração pode afastar-se do estado-alvo desejado. Com o Terraform, essa forma de desvio é mais provável quando null-resources é usado para estender a funcionalidade do provedor com scripts customizados que não são idempotentes.

A imutabilidade é uma prática de IaC que minimiza o risco de desvio do estado de destino.

imutável

Infraestrutura imutável refere-se a gerenciamento de serviços e implementações de software onde recursos como contêineres ou máquinas virtuais são substituídos em vez de alterados (usando scripts). O principal desejo aqui de imutabilidade é evitar a deriva de configuração. Inconsistências que surgem devido a alterações locais ou manuais, ou diferenças na sequência de operações automatizadas. Mudanças que tornam mais difícil depurar e resolver questões, além de aumentar os custos de suporte.

Para assegurar a imutabilidade e eliminar o desvio, todas as mudanças devem ser feitas por meio da configuração do Schematics IaC e recursos como VSIs devem ser reimplementados quando precisarem de atualização.

Próximas etapas

Agora que você entende mais sobre IaC, por que não revisar o uso de IaC em Schematics: