Este é um re-post (trapaça), mas vale a pena.
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.