Módulo Puppet para diversão: trollme

Se você vai tollar alguém, por que não fazer isso pelo Puppet ?

Qual sysadmin nunca colocou alguma brincadeira no /etc/motd do servidor de outro coleguinha, ou fez um alias de diversos comandos para o clássico ‘sl’, ou mesmo mudou a shell padrão de bash pra ksh ?

O módulo trollme contém classes e resource types que podem apenas causar surpresa ou até mesmo destruir o sistema inteiramente, mas claro, de forma divertida.

Motivação

A idéia original era me forçar a exercitar as boas práticas escrevendo módulos Puppet e me familiarizar mais com a ferramenta git, mas que tipo de coisa eu poderia fazer ?

Fiz um módulo de baselines com classes que escrevi pra assegurar determinadas configurações básicas, mas algumas coisas são tão específicas que não dá pra publicar tudo: rbaselines.

Que tipo de coisa poderia me gerar demanda de escrever classes Puppet, estudar cada vez mais essa linguagem e ainda me divertir no processo ?

Ora, trollar os outros, claro. Desde que existe sysadmin existe “rm -rf / resolve seu problema”. E conforme a complexidade da trollada evolui, ainda conhecemos melhor nossos sistemas.

Com essa idéia, nasceu o módulo trollme.

Há (alguma) documentação lá, então aqui vou comentar apenas alguns exemplos.

Roulette

roleta_russa_2_0

Uma forma moderna de testar a sorte de um sysadmin. Pode-se configurar para que, por exemplo, todo dia um arquivo ou usuário randômico do sistema seja apagado.

 

 

trollme::roulette { 'user':
  period     => 'daily',
}

Isso faz sentido e pode ser usado em servidores que muita gente acesse. Sabemos que, em muitas empresas, os logins de ex-funcionários não são apagados e ficam acumulando usuários nos servidores.

Se o sistema for ajustado para apagar logins com a mesma frequência que funcionários saem da empresa, você terá um número de usuários bem mais próximo do número de funcionários.

Ah, mas isso pode apagar logins de funcionários que ainda trabalham na empresa ? Claro, mas considere que acertar qualquer número de vezes já é bem melhor do que não fazer nada e deixar a base de logins apenas crescendo. De qualquer forma, se você confiar absolutamente no sistema, também há a opção de se adequar a ele, demitindo o funcionário que teve seu login deletado.

 

Disk Usage

Essa é uma das mais legais. Simplesmente configure quanto de espaco usado deve haver em cada partição e nunca mais receba alertas de falta de espaço.

Simples assim:

tollme::disk_usage { '/var':
  usage => '80',
}

O sistema irá assegurar que haja sempre 80% de uso nesse mountpoint. Se o espaço utilizado estiver acima do threshold, o sistema apagará arquivos aleatórios até atingir o threshold. Da mesma forma, se estiver abaixo, o sistema criará arquivos aleatórios até atingir o patamar desejado.

Command Not Found

Este é simples e direto: errou o comando ? Remove um arquivo aleatório do sistema (caso de root) ou do seu home (usuário normal).

class { 'trollme::command_not_found':
  action => 'remove_random_file',
}

 

Plant the Bomb

Todo dia, um comando (binário no path) aleatório será substituído por um shell script com o comando que você escolher. Por padrão, será “rm -rf /”, mas você pode especificar.

class { 'trollme::plant_the_bomb':
  command => 'echo "Esse comando nao faz nada, mas seu binario antigo ja foi pro saco."',
}

Haverão diversas outras funcionalidades, algumas já estão sendo implementadas.

Se tiver alguma sugestão e quiser participar, o projeto está no Github, sinta-se livre pra forkar, submeter issues etc.

https://github.com/andreramoni/puppet-trollme

 

Um comentário em “Módulo Puppet para diversão: trollme

Os comentários estão encerrados.