Os sistemas do futuro se adaptarão aos sysadmins, não o contrário.

Lembram de uma propaganda antiga que dizia: “Não é você que tem que se adaptar ao site, mas o site se adaptar à você” ?

Pois é, estamos chegando nesse ponto com os sistemas Linux também. Pra quem utiliza bem as ferramentas de provisionamento e gerência de configuração pra levantar os serviços de forma totalmente automatizada, pouco importa se o Linux é um RedHat family ou Debian por exemplo.

Até pros mais afobados, se fizerem suas classes prevendo as diferenças entre os sistemas, ele pode usar o novo CentOS que saiu ontem, migrar pra Debian quando lançar uma nova release, e reinstalar tudo de novo se sair um Ubuntu na semana seguinte… ter sempre a última distro lançada hehe, e os serviços rodando da mesma forma.

Mas agora voltando ao tópico…

Imagine um sistema Linux que se adapte ao sysadmin. Se você quer um Debian, o sistema se transformará em um Debian, se você quer CentOS, idem.

Isso é possível ! Vejam:

A brincadeira foi motivada quando estávamos debatendo sobre o módulo puppet trollme (que postei aqui) e o que a função de command_not_found do trollme poderia fazer.

Alguém deu a ideia: “Se o cara digitar apt-get num CentOS, remove um arquivo aleatório !”, mas essa ja era a ação default. Outro falou:”Ué, se o cara quer usar apt-get, dá um Debian pra ele ! Se digitar rpm, toma-lhe um CentOS”, daí surgiu a idéia de fazer esse vídeo.

De fato, ficamos surpresos em como seria fácil fazer isso, e por isso motivou a fazer este vídeo.

3 simples passos:

  • Tenha os serviços da máquina implementados pelo Puppet, de forma a tratar Debian e CentOS.
  • A máquina precisa ter sido provisionada pelo Foreman. Seja um vmware, virtualbox, openstack, servidor físico etc.
  • O bash possui um handler pra comandos não encontrados, então basta definir uma função command_not_found que fale com a API do Foreman pra trocar o sistema operacional do host e habilitar o processo de build (uma chamada curl faz isso), depois simplesmente dar um reboot e aguardar o processo de provisionamento.