Sysadmin 201

Agora que você já entendeu os pré-requisitos e os pontos negativos e positivos de ser um sysadmin (contando que tenha lido o Sysadmin 101) aqui vão algumas idéias do que buscar tecnicamente. Recebi um bocado de feedback de outros sysadmins sobre o post anterior via twitter ou IM. Se quiserem postar aqui as respostas mais gente vai poder ver. 😉 Minha experiência pessoal é como sysadmin de redes (na época basicamente com equipamentos Cisco) e com Linux/Unix. Mas certeza que a idéia geral serve pra quem pensa em seguir carreirar como Sysadmin Microsoft, Oracle ou qualquer outra variação. ...

November 22, 2010 · Eri

Não reinvente a roda você também

Preâmbulo: Recentemente coloquei no ar o FollowUpTime, que como já disse em outros posts é um sistema de monitoração para redes e servidores. Como podem imaginar, um bocado de linhas de código está envolvida num sistema assim e a conta só do engine principal passa das 90 mil linhas. Isso sem incluir templates, javascripts, etc. O sistema é composto de duas partes: Uma que roda num servidor principal gerenciando a maior parte das tarefas e as “probes”. As probes são pequenos scripts que recebem instruções sobre hosts a serem testados e respondem para o servidor principal com o tempo de resposta, um OK ou um FAIL. Simples assim. São essas probes que temos espalhados por vários cantos do planeta. Porém quando recebi a probe dos desenvolvedores me vi com um pequeno, mas incoveniente problema. Os desenvolvedores realmente optaram pelo princípio KISS. Eles me entregaram uma excelente probe que fazia o que era necessário. E nada mais. Eu tinha nas mãos um daemon que rodava em foreground e jogava mensagens para stdout e stderr e nada mais. Eu não me demorei e ataquei o problema da forma errada, pensando como um programador e não como um administrador Unix. E acabei reinventado a roda. Introdução – O problema Quando percebi o que eu tinha nas mãos logo pensei nos problemas que eu precisava resolver: Preciso iniciar o daemon sempre que der boot na máquina Preciso ser capaz de rodar em daemon em background, ou vai me zoar a seqüencia de boot Posso precisar parar/reiniciar/iniciar manualmente este daemon Se o processo morrer eu tenho que ser notificado e que, de preferência, ele seja reiniciado automaticamente E sim, esse processo não deve rodar como root Já velhaco de Linux logo pensei num script para ser colocado em /etc/init.d/ que ia resolver boa parte dos meus problemas. Com uma combinação bonita de bash scripting, várias ferramentas e comandos Linux que só se conhece depois de muito tempo de casa (como nohup, pidof, &) e gambiarras na crontab eu consegui. Consegui reinventar a roda. Não vou entrar em detalhes da solução que fiz, pois apesar de 100% funcional não era nem de perto tão bonita quanto: A solução – Daemontools Nosso caro amigo D.J.B, autor do famoso Qmail também já passou por um problema parecido com o meu, mas ao invés de criar um solução simples para resolver um problema pontual ele foi mais longe. Ele criou uma solução global que atende o problema dele, o meu e provavelmente também o seu. Na página oficial do daemontools tem uma tabela, que traduzo abaixo, comparando a ferramenta dele com outras abordagens (incluindo a minha, que utilizava init.d): <td width="86" align="center" bgcolor="#2300dc"> <strong><em><span style="font-family: Verdana; color: #ffffff;">inittab</span></em></strong> </td> <td width="86" align="center" bgcolor="#2300dc"> <strong><em><span style="font-family: Verdana; color: #ffffff;">ttys</span></em></strong> </td> <td width="86" align="center" bgcolor="#2300dc"> <strong><em><span style="font-family: Verdana; color: #ffffff;">init.d</span></em></strong> </td> <td width="86" align="center" bgcolor="#2300dc"> <strong><em><span style="font-family: Verdana; color: #ffffff;">rc.local</span></em></strong> </td> <td style="border-right: 1px solid #000000;" width="86" align="center" bgcolor="#2300dc"> <strong><em><span style="font-family: Verdana; color: #ffffff;">/service</span></em></strong> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> Dá para perceber que o cara pensou em tudo e não tem porquê reinventar a roda. Vamos utilizar o daemontools! ...

July 1, 2009 · Eri

Restringindo acesso via SFTP

Restringir acesso de um usuário a seu diretório home usando o ProFTP já virou carne-de-vaca, então vou colocar um dica diferente aqui: Como manter seus usuários restritos usando SFTP. Atenção: Não estou falando de FTPS (FTP over SSL). O primeiro requisito é ter um servidor OpenSSH pelo menos na versão 4.9p1. Tanto meu Ubuntu 8.10 quanto meu OpenSuSE 11.1 vieram com pacotes superiores a essa versão, mas infelizmente o Red Hat Enterprise 5.3 não. ...

March 5, 2009 · Eri

Filosofia Unix

Eu já tinho lido a filosofia Unix algumas vezes, mas hoje cruzei de novo o texto e parei para analisar um pouco. É impressionante como minha personalidade combina com as idéias do Unix, mas eu não sei mais dizer que eu gosto do Unix por causa disso – uma atração natural pelos mesmos valores – ou se depois de 10 anos mexendo com isso eu acabei incorporando as idéias. O texto é longo e tem várias idéias, mas abaixo são as que eu mais concordo: ...

March 4, 2009 · Eri

Truques no Bash

Alguns truques para facilitar o seu dia-a-dia na linha de comando: !$ Representa a última parte do último comando executado. Exemplo: Expansão automática Expande automaticamente os valores entre chaves. Uma mão na roda para loops: Também funciona com letras: E pode ser útil em situações assim: ...

January 15, 2009 · Eri

Computadores por habitante

De acordo com o lista 10, o Canadá é o segundo país com mais computadores por pessoa, perdendo apenas para Israel. Aqui tem-se 87.6 computadores para cada 100 habitantes. Eu a esposa estamos ajudando a engordar as estatísticas, claro, mas não sei como fazer a contagem, já que “computador” é um termo muito genérico. Se contarmos como computador hardwares com plataforma x86-compativel, temos 4. Se contamos como desktop ou laptop, temos 3. Se contamos os que servem para acessar internet, temos 5. Se contarmos os que rodam alguma variante de Unix/Linux temos 6… Sei lá como fazer essas contas. ...

January 8, 2009 · Eri

Emacs

$ sudo bash Password: # test -f /bin/emacs && mv /bin/emacs /bin/emacs.NEVER # cat «EOF >/bin/emacs #!/bin/bash echo emacs: command not found EOF # exit $ logout Copiado daqui.

November 7, 2008 · Eri

OpenBSD 4.4

Lançado hoje o OpenBSD 4.4. Entre a família BSD é, sem dúvida, meu favorito. Infelizmente não tenho oportunidade de utiliza-lo desde 2003. Mas ainda assim, recomendo.

October 31, 2008 · Eri

De volta à universidade

Pois é. Estou voltando pra universidade. Mas não, não é isso que você está pensando. Estou indo trabalhar para uma universidade. Meu atual emprego até que foi interessante até um determinado ponto. Aprendi muito e vi como é infra-estrutura de IT de gente grande. E aprendi como é que se implementa Linux no que se chama “enterprise class” e entendi porque wall-street ama open source. Também me mandaram pra Nova York e me deram curso de Perl. E só de birra, resolvi aprender Python. Além de que a famosa frase “a prática leva à perfeição” se mostrou real com o tanto que tive que colocar minha experiência com Bash pra funcionar. ...

July 12, 2008 · Eri

De volta às raízes

Depois deste outro post não teve jeito… O dedo coçou e eu tive que baixar o Slackware. Lógico que não coloquei ele no nosso computador de uso corrente, mas sim dentro de uma instância de VMWare. Já falei que adoro virtualização? O que eu tinha na cabeça era o seguinte: Pelo menos desde 1999 eu não coloca as mãos no Slackware. E vale aqui abrir um longo parênteses: Comecei com Conectiva Marumbi (com uma rápida passagem anterior pelo RedHat, nem sei que versão), passei pelo Conectiva Guarani, Conectiva 4.0 e depois Slackware. A linha do tempo bate? Nem sei mais. Alguém lembra as datas de lançamento das versões? Rodei Slackware talvez por uns 6 meses, mas surgiu na época uma possibilidade de negócios em relação ao SuSE e usei essa distribuição por um bom tempo, até conhecer o Debian. Depois foi um pinga-pinga entre Debian e Kurumin (Debian em servidores e Kurumin em desktops) até eu conhecer o Ubuntu, que tenho usado desde então. Vale dizer que durante uma época por volta de 2000 eu tinha uma máquina de testes e participava de um grupo de usuários que recebia CD de tudo quanto é lado mundo e por isso tive a chance de brincar com distribuições como Caldera Linux (SCO, alguém?), Corel Linux, Turbo Linux e diversos outros já falecidos neste momento. Fecha parênteses. Ou seja, eu já fui geek de verdade. Compilava meus próprios programas do fonte, já que tanto na época do Slackware como do SuSE tinha muita coisa que só dava pra instalar via fonte. Hoje é ridiculamente simples instalar o Ubuntu, dando um duplo-clique no Live-CD e respondendo meio dúzia de perguntas, mas a coisa já foi bem diferente. E achei que valia a pena, mesmo por diversão, reviver os bons momentos do passado com o bom e velho Slackware. Me propuz a fazer o seguinte: Baixei o ISO, configurei o VMWare pra dar boot usando a imagem, coloquei a máquina virtual em full screen e decidi fingir que não tinha mais nenhum recurso à minha disposição. Afinal era isso que acontecia no passado. Uma vez iniciado o processo de instalação você estava por conta própria. Não era simples fazer uma instalação dual-boot e eu logo que comecei a usar Linux já tinha decidido por single boot. Então não tinha pra onde correr. Era pra macho. Você, o teclado e uma telinha preta. Me colocando neste cenário então parti pras cabeças. ...

February 15, 2008 · Eri