Esta postagem no blog é um capítulo do eBook De Admin para DevOps: O Jeito Direto de Fazer DevOps no Azure. Certifique-se de conferir se você gostaria de se aprofundar no que é necessário para ter sucesso com DevOps no Microsoft Azure, aprendendo Infraestrutura como Código.
Se você já criou algum tipo de infraestrutura em nuvem ou virtual localmente manualmente, sabe que há muito clique ou digitação acontecendo. Infraestrutura como Código (Iac) cuida disso.
Para provisionar qualquer coisa, é necessário lembrar para qual tela ir ou qual comando executar. Se você está apenas brincando tentando aprender o Azure, tudo bem, mas uma vez que essa brincadeira se torna crítica para os negócios, processos de produção onde tempo é dinheiro, algo precisa mudar.
Assim que sua organização começar a levar a sério o provisionamento e a gestão da infraestrutura, você enfrentará muitos desafios novos.
Você encontrará duplicação desnecessária de trabalho, casos repetidos de erro de digitação, problemas de gerenciamento de mudanças, desvio de configuração e muito mais. Quanto maior a organização e a equipe, maiores serão os problemas. Todos esses problemas podem ser eliminados ou, pelo menos, mitigados com um conceito chamado Infraestrutura como Código (IaC).
Infraestrutura como Código (IaC): Por Exemplo
IaC é um termo da indústria que se refere a armazenar tudo o que é necessário para construir componentes de infraestrutura em código. Esse código é tipicamente definido em arquivos JSON ou YAML representando como sua infraestrutura deve ser.
Uma vez que todos os componentes estão definidos em um arquivo estruturado, outro processo entra em ação, entende o código e imediatamente começa a usar esse documento como instruções para construir a infraestrutura.
Para fornecer um exemplo genérico, semelhante a pseudocódigo, talvez você tenha uma VM para criar. Essa VM tem necessidades como computação, armazenamento e rede. Uma abordagem aproximada de IaC seria descrever a VM e todos os seus componentes em um modelo.
O Modelo
No trecho de código a seguir, você pode ver um exemplo de como cada componente é decomposto por uma hierarquia com atributos definidos sobre cada componente. Este exemplo fictício foi criado em um arquivo JSON que a maioria dos serviços chamaria de modelo.
Este modelo define o VM e todos os atributos associados a esse VM. Ele tem um esquema específico ao qual os autores de modelos aderem para definir como esse VM se parece. Suponha que este modelo seja então salvo em um arquivo chamado myvm.json.
Controle de Origem
Agora você tem tudo que compõe uma VM salvo em um único arquivo. Como qualquer bom profissional de DevOps, você verifica esse arquivo no controle de origem. Agora você tem uma maneira de rastrear as alterações no arquivo.
A Ferramenta
Agora que o arquivo está criado, você precisa de uma ferramenta ou serviço para ler esse arquivo que entenda o que você está tentando construir. Essa ferramenta usa o modelo como entrada e constrói a VM com base nessas especificações exatas, sem nenhuma outra interação.
Bom negócio, certo? Isso não é tudo.
Enfrentando a Deriva de Configuração
Agora suponha que você precise alterar o endereço IP estático atribuído à NIC dessa VM. Você poderia se conectar por RDP à VM e alterar o IP, mas você não quer fazer isso. Por quê?
- Você estaria fazendo a alteração manualmente, o que desperdiça tempo e está sujeito a erros humanos.
- Não há registro de auditoria de quem alterou o IP e quando o fez.
- Não há uma maneira automatizada de reverter a alteração caso você digite o endereço IP incorretamente.
A Infraestrutura como Código (IaC) pode resolver todos os desafios mencionados acima. Com literalmente alguns toques no teclado, você poderia fazer essa alteração de uma maneira que seu gerente e auditor irão adorar.
Abra o arquivo myvm.json, altere o atributo IPAddress
, faça o commit da alteração no controle de origem e execute a ferramenta novamente. Pronto.
A ferramenta será inteligente o suficiente para saber o que precisa ser alterado. Ela não irá desconectar a NIC ou reconstruir a VM inteira. Todas as ferramentas e serviços de IaC são inteligentes o suficiente para entender como fazer a alteração. Mágico!
Mas agora você acabou de perceber que usou o IP errado e precisa reverter. Sem problemas. Reverta a alteração no controle de origem, faça o commit, execute a ferramenta e você estará de volta aos negócios.
Mas espere, há mais.
O Início da Entrega Contínua
Quando você tem infraestrutura armazenada em modelos sob controle de origem, você possui um conjunto de ingredientes para o início de um lançamento automatizado ou pipeline de entrega contínua.
Lembre-se de que era necessário executar essa ferramenta toda vez que você alterava o modelo. Em um pipeline/workflow automatizado, essa ferramenta é executada automaticamente. Uma vez que o processo para criar ou fazer a alteração no ambiente está automatizado, no momento em que você faz um commit em um modelo, a infraestrutura se alinha.
Construa modelos suficientes e, eventualmente, toda a sua infraestrutura pode ser representada em código ou como código.
Conclusão
O IaC é uma metodologia DevOps que permite às operações seguir o playbook do desenvolvedor de software. O IaC traz muitas vantagens que um desenvolvedor de software tem aproveitado há anos e coloca essas vantagens nas mãos do administrador do sistema.
Source:
https://adamtheautomator.com/infrastructure-as-code-iac/