Menu English version
Blog Infra como Código

Shell Script pode não ser a melhor solução

shell

É aceito pelo mercado que um bom administrador de sistemas é aquele que faz suas próprias ferramentas e automatiza ao máximo seu trabalho.

Automatizar ao máximo seu trabalho é excelente, fazer as próprias ferramentas, talvez não.

As práticas da maioria dos administradores, até as dos mais experientes, têm certos limites de viabilidade em ambientes mais complexos ou com equipes multidisciplinares. É comum copiar arquivos de configuração de um sistema “que funciona” para um sistema novo. Muitas vezes, quando são necessárias alterações em muitas máquinas, executar ssh em uma lista de nomes de máquinas também é comum.

O que para muitos é magia negra, para o outros é a solução: shell script. Longos scripts com comandos encadeados e conectados com pipes e saídas filtradas com expressões regulares, que resultam na entrada de outro comando que ordena e depois corta e recorta a saída final.

Não nos entendam mal, shell script é excelente para atividades repetitivas e para agilizar pequenas tarefas cotidianas, mas tem seus limites e pontos negativos.

É de difícil leitura, principalmente para quem não é o autor. É comum administradores que descartam todos os scripts de um antecessor na empresa, pois é mais fácil fazer um novo do que tentar entender o que já existe.

Além disso, quando estamos desenvolvendo um shell script, nos desprendemos de diversas amarras das linguagens de programação, que na verdade podem ser úteis para garantir uma melhor qualidade do código.

Aqui vai uma lista de maus hábitos que geralmente temos ao programar utilizando shell script. Você conseguiria se preocupar com todas essas questões ao fazer um shell script que vai modificar dezenas de máquinas?

  • Proteção quanto à concorrência: você está checando se tem acesso exclusivo à máquina ou aos arquivos e diretórios que está manipulando? Certificou-se que não existe mais ninguém logado e se isso pode interferir com o que você está fazendo?
  • Testável: é possível simular a execução do seu script e verificar de o que vai acontecer?Reversíveis? Os comandos dados pelo script podem ser revertidos naturalmente?
  • Legíveis: não existem convenções para estilo em shell script, o que torna alguns scripts verdadeiros monstros ilegíveis.
  • Geram bons logs: é possível saber o que está acontecendo, em diferentes níveis de prioridade? Tudo o que está sendo feito está sendo registrado?
  • Portabilidade: o mesmo script funciona em todos os sistemas do seu ambiente?Considere-se com muita sorte se todos os seus sistemas são idênticos.

Diante de todos esses problemas, é necessário evoluir. Para isso, precisamos quebrar paradigmas e a resposta para essas questões é utilizar uma linguagem que seja específica para declaração de configurações.