Esta postagem no blog é um capítulo do eBook De Admin para DevOps: O Caminho Sem Firulas para DevOps no Azure. Certifique-se de conferir se você quer mergulhar fundo no que é necessário para ter sucesso no DevOps no Microsoft Azure, aprendendo Infraestrutura como Código.
Se você já criou algum tipo de infraestrutura em nuvem ou virtual manualmente no local, sabe que há muitos cliques ou muita digitação acontecendo. A 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 o negócio, processos de produção onde tempo é dinheiro, algo tem que mudar.
Quando sua organização começa a levar a sério a provisionamento e gerenciamento de infraestrutura, você enfrentará muitos novos desafios.
Você encontrará duplicação desnecessária de trabalho, casos repetidos de síndrome do dedo gordo, problemas de gerenciamento de mudanças, deriva de configuração e mais. Quanto maior a organização e a equipe, maiores 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 todas as coisas necessárias para construir componentes de infraestrutura em código. Esse código é tipicamente definido em arquivos JSON ou YAML representando como sua infraestrutura deveria ser.
Uma vez que todos os componentes são definidos em um arquivo estruturado, outro processo vem, 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 áspera 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 meuvm.json.
Controle de Origem
Agora você tem tudo o 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 o VM com essas especificações exatas sem nenhuma outra interação.
Ótimo negócio, certo? Isso não é tudo.
Combatendo 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 remotamente à 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.
- Não há uma maneira automatizada de reverter a alteração caso você digite o endereço IP errado por engano.
A Infraestrutura como Código (IaC) pode resolver todos os desafios mencionados acima. Com literalmente alguns toques no teclado, você pode fazer essa alteração de uma maneira que seu gerente e auditor vão adorar.
Abra o arquivo myvm.json, altere o atributo IPAddress
, faça o commit da alteração no controle de versão 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 toda a VM. Todas as ferramentas e serviços de IaC são inteligentes o suficiente para entender como fazer a alteração. Mágica!
Mas agora você percebeu que usou o IP errado e precisa reverter. Sem problemas. Reverta a alteração no controle de versão, faça o commit, execute a ferramenta e pronto.
Mas espere, tem mais.
O Início da Entrega Contínua
Quando você tem infraestrutura armazenada em modelos sob controle de origem, você tem um conjunto de ingredientes para o início de um lançamento automatizado ou pipeline de entrega contínua.
Lembre-se de que você tinha que executar essa ferramenta toda vez que alterava o modelo. Em um pipeline/fluxo de trabalho 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 uma alteração no modelo, a infraestrutura corresponde.
Construa modelos suficientes e eventualmente, toda a sua infraestrutura poderia ser representada em código ou como código.
Conclusão
IaC é uma metodologia DevOps que permite às operações seguir o playbook do desenvolvedor de software. IaC traz muitas vantagens que um desenvolvedor de software vem aproveitando há anos e coloca essas vantagens nas mãos do administrador do sistema.
Source:
https://adamtheautomator.com/infrastructure-as-code-iac/