"Não somos programadores, somos administradores de sistemas"
Como os tempos mudaram, para pior: esperava -se que um barbudo como eu fosse um programador melhor do que programadores profissionais, ou então nunca seria capaz de passar por um administrador de sistema .
Agora, temos "administradores de sistema", que são basicamente usuários de desktops do Windows que em algum momento se converteram no Linux e não podem programar, e não encontram nada de errado nisso.
O elefante na sala é o motivo pelo qual a administração tolera uma atitude tão destrutiva. Destrutivo para quem ou o quê? Para os negócios e para a infraestrutura.
Voltando ao assunto Puppet [, CFEngine, Chef]: assim que alguém coloca uma solução como essa, perde-se. Todo mundo perde. Por quê? Como quem cria a idéia não é capaz de projetar o gerenciamento de configuração encapsulado na forma de pacotes de sistema operacional agradáveis e limpos, Kickstart [, JumpStart, Instalador Automatizado, AutoYaST, Ignite-UX, NIM]. Quando você precisa usar uma ferramenta de hacking automatizada como Puppet (ou Chef ou CFEngine), isso significa que você não tem os meios necessários para projetar e implementar um processo que, por esse mesmo design, imporia sistemas gerenciados completamente limpos e totalmente apagados , totalmente automatizado e completamente não interativo.
Outro ponto importante é que, se você precisar do Puppet ou alguma solução desse tipo para corrigir manualmente alguém que invadiu a configuração do sistema ou do aplicativo, isso também volta a não ter a experiência necessária para projetar um processo, e nesse processo uma estrutura em que a configuração é empacotada em componentes discretos. De fato, quem implementa o Puppet e similares, não tem conceito de proprietários de componentes, lançamentos, gerenciamento de configuração, Modelo de Maturidade de Capacidade. Isso está se transformando rapidamente em um problema muito sério no setor.
Trabalhar com o Puppet também me ajudou a aprender o Ruby, que substituiu o Bash como minha linguagem padrão de ferramentas do sistema. "
Por que o Ruby é necessário, quando um gerenciamento abrangente de configuração de ponta a ponta pode ser encapsulado nas seções pré-instalação, pós-instalação, pré-remoção e pós-remoção de pacotes do sistema operacional, usando apenas os programas shell Bourne, AWK e sed? Que alguém se esforce ao máximo para aprender uma língua esotérica de Ruby, e um dialeto dela no contexto de Puppet, é completamente desnecessário. O problema do gerenciamento de configurações é facilmente solucionável (e, a saber, foi resolvido) com programas shell e AWK, e um pouco sed (1) aqui e ali como cola.
É uma sensação legal ver seu manifesto Puppet configurar uma máquina inteira ou um novo serviço do zero.
É uma coisa ainda mais bacana vê-lo feito pelo Kickstart, AutoYaST ou JumpStart, sem uma única linha de código , e poder consultar o sistema operacional usando ferramentas integradas, sem a necessidade de nenhum software esotérico ou extra , nenhum servidor cliente arquitetura necessária (o SSH é mais do que bom, muito mais do que bom) e ver o sistema operacional atento a todas as alterações feitas nele.
Código 5.Separate dos dados. Este é um dos conceitos mais difíceis de aprender. Valores codificados como o Monitoring Hosts no código do módulo são ruins. Colocá-los em um armazenamento de dados (db, yaml (o Hiera usa isso como padrão), csv, qualquer que seja) que seus módulos possam consumir é bom. Um exemplo é um aplicativo da web que usa o Mysql. O que isso permite é a capacidade de enviar códigos e dados separadamente. Isso simplifica seu processo de desenvolvimento.
... Ou você pode simplesmente modelar seus arquivos de configuração com variáveis de shell, inclusive aspas posteriores (por exemplo ls -1 ...
) e escrever um script de shell que usa o AWK para chamar eval (1) e expandir todas as variáveis no modelo, aproveitando exatamente o mesmo poder analisador cujas conchas foram incorporadas. Por que torná-lo complexo, quando pode ser muito, muito simples? Onde você armazenará os valores de configuração? Por que, em qualquer lugar que você queira, como, por exemplo, arquivos pkginfo (4), ou em um banco de dados como Oracle, ou em praticamente qualquer lugar . Não há necessidade de soluções ultracomplexas. A biblioteca que eu mencionei acima pode simplesmente ser obtida nas seções de pré-instalação ou pós-instalação nos pacotes do sistema operacional, removendo assim a duplicação e aproveitando um pedaço de código central ...
Acima de tudo, porém, acho que a citação acima é um exemplo da próxima geração de administradores de sistemas que precisam de tutoria, não por administradores de sistema, mas por engenheiros de sistema . Encontre um barbeiro e entre como aprendiz.