Provisionando sua infraestrutura com Ansible: um case de sucesso

Ontem rolou mais uma edição do MeetUp sobre Ansible na sede do Moip, em São Paulo. Por parte da Rivendel Tecnologia, os DevOps Gustavo Biondo e Vinicius Cavalcanti apresentaram um case de sucesso envolvendo provisionamento de infraestrutura com Ansible. Vinícius, que é Tech Leader na Rivendel, mostrou a evolução do projeto, realizado na AWS. “A gente precisava desenhar toda a infraestrutura do projeto, e tínhamos alguns desafios complexos pela frente”, conta ele. E destacou como principais:  

  • Gerenciar infraestrutura de grande/médio porte
  • Escolha do configuration manager e cloud provisioning
  • Prazos de entregas apertados
  • Turn-over de colaboradores
  • Documentação do ambiente

    O passo seguinte foi pesquisar e estudar as ferramentas disponíveis (e estáveis) mais usadas no momento. E a dupla DevOps escolheu então:

  • Ansible como Configuration Manager
  • Cloud Formation como Cloud Provisioning
  • Github como Remote Repository
  • Jenkins como CI/CD server
  • Zabbix como Monitoring System

“Uma das principais razões para a escolha do Ansible foi justamente a curva de aprendizado, que é muito rápida. Entre outras, podemos destacar também a auto documentação da stack – por sinal muito simples e objetiva – e, acima de tudo, o fato de ser agentless, ou seja, não necessita de agentes”. (Na abordagem agentless, os dados são coletados de computadores sem instalar a necessidade de agentes adicionais). 

Resistências na implementação

Como nem tudo são flores nessa vida, é claro que a dupla DevOps também teve que vencer barreiras para seguir com o projeto. Entre as resistências na implementação da solução, pairavam:

  • Dúvidas sobre a eficiência em relação aos concorrentes mais consolidados no mercado
  • Necessidade de trabalhar de forma dinâmica, sem optar por IPs estáticos
  • Por ser extremamente customizável, dificuldade em definir uma estrutura padrão
  • Como provisionar o Scaling Up do ambiente?

Soluções e descobertas

Vinícius conta que foi preciso entender e definir um padrão de estrutura de diretórios e de nomes para os playbooks. Bem como conhecer o inventário dinâmico (para poder trabalhar com IPs dinâmicos) e o group_vars (usado para separar os ambientes).

Também foi feita uma configuração de UserData com Ansible, ou seja, no momento em que a máquina ligar, o Ansible já será instalado e executado. E quando executar, ele fará todo o resto: instalar um microserviço, colocar estrutura de ELK no ElasticSearch com Kibana etc.

Por fim, o resultado prático foi a capacidade de resolução de problemas (troubleshooting) aprimorada, com alterações rápidas e testadas previamente. Mas, melhor que ler, é ver a demo preparada pelos DevOps mostrando o sistema em ação. E garantindo algo precioso para qualquer sysadmin: mais horas de sono! 😛

Assista a uma parte do MeetUp Ansible realizado ontem na sede do Moip, em São Paulo:

21