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.

Já pegando o gancho aqui vale a pena citar o seguinte: Quanto mais especializado você for melhor você vai ganhar e menor vai ser o mercado de trabalho.

Explicando: Não tem muitos sysadmins especializados em deployment de super-computadores híbridos para análise meteorológica. Esses caras ganham uma boa grana. Mas em compensação quantos super-computadores tem por ai? Você precisa se decidir o quão especialista quer ser e definir seu plano de carreira.

Independente de que tipo de sysadmin que deseja ser existem algumas coisas que, no meu ponto de vista, são extremamente básicas e já vi muito nego que dá carteirada com certificação passando de otário por não saber o básico.

Redes

IMHO a primeira coisa a se saber é redes. TCP/IP. Não perca tempo com outras tecnologias se não pretende ser sysadmin de rede. (Vale ressaltar aqui que eu estou em dívida comigo mesmo por ainda não ter estudado IPv6 à fundo).

A impressão que eu tenho é que um sysadmin que não sabe rede é como um médico que não sabe dividir o corpo humano em cabeça, tronco e membros. Mas acredite, isso acontece direto. Quando eu trabalhava com redes era ocorrência diária o time de Windows ou Unix mandar chamados de “problema de rede” dizendo que o serviço X ou Y não estava acessível, mas “o servidor está OK”.

Não precisava mais do que 5 minutos de troubleshooting pra descobrir que o serviço não estava rodando, que estava dando connection refused, o processo dava reset na conexão ou outra coisa qualquer, totalmente não-relacionada a rede. Faça um favor para você mesmo e evite pagar de otário aprendendo a utilizar ping, netstat, route.

E sysadmins Microsoft em geral parecem ter um especial dificuldade em entender o conceito de “default gateway”. Então se você for trabalhar com MS e souber isso, já largou na frente. 🙂

Troubleshooting

E falando em troubleshooting eu deveria ter começado é com isso. Capacidade de efetuar troubleshooting é simplesmente a mais importante qualidade na vida de um sysadmin.  E eu penso que “troubleshooting skills” nada mais é do que apenas um nome chique pra “bom-senso”, então todo mundo deveria ter, mas 30 segundos na Internet me mostram que isso não é bem verdade.

Apesar de ser uma coisa que eu considero como um talento nato o mesmo com certeza pode e deve ser melhorado. Ao invés de fugir de problemas encare-os de frente e tente resolver todo tipo de pepino que aparecer na sua frente. Faça uma Wiki pessoal utilizando algo como o Google Notebook ou TiddlyWiki e mantenha registro de como solucionou problemas. Estude estratégias de resolução de problemas, como a minha favorita Divide and Conquer, e lembre-se sempre que você não é tão especial quanto você acha. Grandes chances de alguém já ter tido o mesmo problema que você está tendo. E nesse caso o Google é seu amigo. Aliás, seguindo o link que o Andreyev postou aqui, aprenda a usar o Google direito!

As bases

Então considerando que você já está OK com os dois pontos anteriores, vamos falar da sua área de atuação. E aqui vou usar meu exemplo pessoal como sysadmin Linux.

Antes de sair por ai assinando seu email como sysadmin e tomar uma bofetada como essa, conheça muito bem as bases e raízes do sistema. Saiba a diferença entre sistemas derivados de System V e BSD, leia e aprenda a maior quantidade de comandos que conseguir.

Conheça a estrutura de diretórios Unix e o Filesystem Hierarchy Standard .

Deixe de ser fan-boy de distribuição, já que um bom sysadmin Linux deve ser capaz de sentar na frente de um console, determinar que distribuição está rodando e sair trabalhando. E sim, Ubuntu é lindo, fácil de instalar e cheio de aplicações (eu mesmo uso), mas o fato de você ter ele instalado em dual-boot no seu micro de casa a 6 meses não te qualifica como sysadmin.

Hoje em dia sou preguiçoso, mas no passado já fui mais ativo e perdi as contas de quais distribuições usei. Cheguei a ter uma máquina de teste onde toda semana eu instalava algo diferente, como TurboLinux e Progeny. Sempre um exercício interessante.

Considere usar algo um pouco mais baixo-nível por um tempo, como Slackware ou Gentoo, mas do ponto de vista comercial preocupe-se mesmo com RedHat, SuSE e Ubuntu. Aliás, minha experiência corporativa até o momento diz que a RedHat reina absoluta. Estudar essa distribuição em particular é interessante. Use o CentOS caso, como eu, não tenha US $800 sobrando pra comprar uma licença.

Aprenda a compilar um kernel, compilar pacotes, utilizar gerenciadores de pacotes, e instalar módulos do Perl ou Ruby via CPAN ou Gem.

Por favor, aprenda permissões e saiba parâmetros do chown e chmod. Utilizar o sudoers e saber da existência do /etc/securetty também não machuca ninguém. Não rele no /etc/passwd via editor de texto, mas se realmente não tiver outra opção utilize o vipw!

Scripting

Fato: Mais cedo ou mais tarde você vai precisar criar um script pra alguma coisa. Por isso aprenda shell script muito bem. Eu diria que é um diferencial excelente na hora de procurar emprego. Mas nada de aprender mais ou menos e sair cantando de galo por ai. Saber fazer um “pipe grépe” não é escrever shell script.

E uma coisa que acompanha shell script tão bem quanto café acompanha leite é expressão regular. Poucos sysadmins conhecem regex e a vida é MUITO, MUITO mais fácil com ela.

E se quiser ir um pouco mais fundo (dica: sempre queira), aprender um outra linguagem mais complexa é sempre interessante. Pessoalmente escolhi Python, mas conheço também um pouco de Perl e gostaria muito de ter tempo pra estudar Ruby. Essas linguagens mais complexas e cheias de recursos podem acabar facilitando sua vida reduzindo a quantidade de código que precisaria para fazer a mesma coisa em Bash, por exemplo.

E aqui vale enfatizar: Não invente moda. Nada de criar um script gigante e cheio de frescura se puder resolver o problema só um find -exec.

Seja preguiçoso

Isso mesmo. Pense sempre o seguinte: Como eu consigo executar essa tarefa com o menor esforço possível? Ou então: Como eu posso automatizar essa atividade pra não precisar fazer isso todo dia? E ainda: O que eu posso fazer pra parar de ter esse problema e nego me enchendo o saco todo fim do mês?

Lembre-se que o at, a crontab ou outros schedulers são seus amigos. Criar um daemonzinho utilizando um shell script também pode ser uma saída para algumas coisas.

E caso precise fazer algo que realmente não possa ser 100% automatizado faça uma excelente documentação do processo e deixe em algum lugar disponível para consulta não só sua como de qualquer outro colega. Assim a próxima vez o processo pode passar para mãos mais inexperientes ou simplesmente pra quem estiver disponível. Não precisa ser necessariamente você.

E por falar em preguiça, por hoje chega.