Usando Jenkins para executar o Terraform para gerenciamento IaC: prós e contras

Publicados: 2023-12-31

O Terraform continua a ganhar popularidade na área de configuração e gerenciamento de infraestrutura como código (IaC). Sem dúvida, tornou-se um participante significativo agora que vários artigos sobre “alternativas do Terraform” foram publicados online. Até o Gartner publicou seu próprio artigo sobre alternativas ao Terraform . Artigos como este geralmente são escritos apenas para produtos líderes.

No entanto, o Terraform não é a única ferramenta popular útil no tratamento de IaC. Existem outras ferramentas que complementam o Terraform. Uma boa opção é o Jenkins, um servidor de automação de código aberto criado para integração e implantação contínuas (CI/CD). Extensível e escalonável, garante construção, teste e implantação de código confiáveis.

Aqui está um guia rápido sobre o papel que Jenkins desempenha no aprimoramento do gerenciamento de IaC, especialmente em termos de escalabilidade, fluxos de trabalho e segurança.

Usando Jenkins para gerenciamento IaC

Antes de mais nada, vale ressaltar que Jenkins não é uma ferramenta específica para IaC. Eventualmente, tornou-se uma ferramenta comum para gerenciamento de IaC porque vem prontamente com a capacidade de automatizar e organizar a implantação de fluxos de trabalho. Não só permite a integração contínua; também estrutura o progresso da implantação. Além disso, diminui a distância entre as equipes envolvidas no desenvolvimento e nas operações.

É preferível usar Jenkins para gerenciamento de IaC se uma organização já o estiver utilizando para fins de CI/CD. A organização já possui proficiência no uso da ferramenta, por isso faz todo o sentido continuar a utilizá-la para a gestão de IaC, visto que possui funções adequadas para realizar o trabalho. Além disso, o Jenkins é uma ferramenta gratuita, pelo que as organizações que procuram reduzir as suas despesas podem tirar partido dela e evitar custos adicionais com ferramentas de gestão IaC e formação associada (na utilização de outra ferramenta).

Usar Jenkins para executar o Terraform (para gerenciar IaC) é um pouco complicado. Geralmente, é improvável que usar Jenkins seja melhor do que empregar ferramentas específicas de IaC. As soluções especialmente destinadas ao gerenciamento IaC estão repletas de todos os recursos e funções úteis e são projetadas para uma operação eficiente. No entanto, seria inconveniente desconsiderar a engenhosidade que as organizações demonstram ao usar Jenkins para gerenciamento de IaC.

Vantagens e benefícios

Uma das maiores vantagens de usar Jenkins para gerenciamento IaC é seu extenso ecossistema de plugins. Pode não ter as funções nativas para gerenciar a infraestrutura, mas possui uma infinidade de plugins para compensar o que falta. Esses plug-ins, juntamente com scripts, permitem governança básica para fluxos de trabalho. Quando se trata de segurança, Jenkins oferece proteção básica decente que pode ser expandida por meio de plug-ins. Junto com soluções de armazenamento customizadas, os plugins também possibilitam o gerenciamento de estado com Jenkins.

Em termos de escalabilidade, Jenkins é capaz de acompanhar as mudanças nas necessidades de uma organização. Esta vantagem de escalabilidade não é automática, mas pode ser alcançada com a configuração e infraestrutura corretas. Além disso, a familiaridade de uma organização com o Jenkins torna consideravelmente mais fácil usá-lo para gerenciamento de infraestrutura, independentemente da mudança de escala.

Por outro lado, Jenkins se destaca por sua vantagem de custo. Por ser uma solução de código aberto, as organizações não precisam se preocupar com taxas únicas ou recorrentes e custos adicionais durante a expansão. Talvez o único custo significativo que as organizações terão de enfrentar seja o treinamento das equipes de tecnologia e de outros usuários da solução. Jenkins permite que as organizações utilizem um produto já familiar para gerenciamento de IaC e evitem a necessidade de gastar com outra ferramenta e o treinamento correspondente.

Além disso, Jenkins possui uma grande comunidade de usuários. Isso garante que os usuários possam obter assistência facilmente sempre que encontrarem desafios ou problemas ao usar a ferramenta. A solução de problemas não é um incômodo, pois é provável que outras pessoas já tenham encontrado o problema que um novo usuário do Jenkins está enfrentando e geralmente estão mais do que dispostos a compartilhar seus conhecimentos e percepções.

Desvantagens e fraquezas

A principal vantagem do Jenkins, seus plugins, nem sempre podem ser vistos como um benefício para alguns usuários. Em particular, o uso de vários plugins leva a uma maior complexidade para uma organização. Esta desvantagem é particularmente pronunciada em grandes organizações, pois implica despesas adicionais de manutenção e a necessidade de supervisionar e manter mais ferramentas, configurações e acesso.

Os plug-ins também tendem a não ter recursos avançados de governança, como a capacidade de implementar políticas como código e controle de acesso baseado em funções (RBAC). Na mesma linha, a falta de gerenciamento de estado nativo geralmente vem com a ausência de funções IaC integradas, como planejamento automático e detecção de desvios. Às vezes, os plug-ins não conseguem compensar adequadamente a falta dessas funções cruciais. Os plug-ins disponíveis podem apresentar bugs, ser disfuncionais ou não otimizados. Além disso, o uso de muitos plug-ins acarreta a necessidade de uma configuração customizada, o que pode agregar mais complexidade e risco a uma organização.

Quando se trata de segurança, o uso de plugins tem o ponto fraco de depender praticamente da proficiência em segurança do usuário. Não há barreiras de segurança abrangentes e prontamente configuradas. As configurações de segurança são decididas pela pessoa ou equipe que administra o Jenkins, o que não é muito tranquilizador.

Por outro lado, a escalabilidade com Jenkins não é tão notável, mas a ferramenta é realmente escalável. O problema, porém, é que o gerenciamento do sistema pode se tornar bastante complicado à medida que a complexidade da infraestrutura aumenta. Além disso, o gerenciamento da infraestrutura pode consumir muitos recursos.

No que diz respeito aos custos, nem todos conseguem desfrutar da eficiência de custos usando Jenkins. Não há custos iniciais no uso de uma solução de código aberto, mas às vezes há custos ocultos associados à manutenção e ao escalonamento. O tempo de inatividade que ocorre se o Jenkins falhar também pode ser bastante significativo.

Pesando as opções

Ferramentas IaC dedicadas são criadas especificamente para abordar as muitas facetas do gerenciamento IaC. Como tal, eles vêm com todas as funções prontas para uso, como gerenciamento de segredos, gerenciamento robusto de estado e política como código. Além disso, as ferramentas específicas de IaC geralmente são mais eficientes porque são desenvolvidas para funcionar em escala, eliminando despesas desnecessárias associadas à configuração e manutenção.

Portanto, é vital que a equipe que lida com o gerenciamento de IaC avalie cuidadosamente os prós e os contras de seguir o Jenkins. Embora ofereça diversas vantagens, há também diversas compensações a serem levadas em consideração. Usar o Jenkins faz sentido em uma escala menor, e as vantagens tendem a diminuir à medida que a infraestrutura gerenciada cresce.