TDC 2010, São Paulo / SP.
Como utilizamos Python como parte da solução de automação da infra estrutura de servidores do iG (ig.com.br), um dos maiores portais de notícias do país.
1. Bruno Marcondes <brmarcondes@ig.com> || @bmarcondes
Eduardo S. Scarpellini <escarpellini@ig.com> || @escarpellini
Python no iG
(Automação de Data Centers)
2. O início de um novo Data Center
• Deploy da primeira máquina (servidor de instalação)
• Instalação manual do SO.
• Script em Python utlizando fabric para deploy do
puppet + manifests.
– Puppet é o responsável pelo seu auto-deploy
(puppetmasterd) + servidor BOOTP, TFTP, etc.
3. Inventário de hardware
Distribuição diskless (PXE+NFS).
Coleta de informações via lshw (XML).
POST de dados para fla (RabbitMQ).
Consumidor da fla para persistência em base central
(MySQL).
Checagem de integridade da informação, se esta já
existr previamente.
Hardware disponível para consulta ou instalação.
[re]boot do servidor via IPMI e instalação com
sistema operacional defnitvo.
5. Cobbler
• Permite a rápida confguração de um ambiente de instalação via rede
(provisionamento de servidores).
• Garante a harmonia de:
o DHCP/BOOTP (templates).
o TFTP + syslinux (templates).
o Kickstart (templates).
o Repositórios de pacotes.
• Suporte a:
o IPMI (power management: DRAC, iLO, etc).
o Triggers (integração com webservices)
o Diversas distribuições, versões e arquiteturas de GNU/Linux.
• Interfaces:
o CLI (command line)
o XMLRPC
o WEB (Cobbler Web)
11. Collectd
• Performátco e leve.
o C.
o Alta resolução/granularidade (segundos).
• Plugins.
o Apache, Nginx, Mysql, Bind, Varnish, RRD, Nagios, etc.
• Extensões
o Python
o Java.
o Perl.
o Bash (exec).
• Network
o Push de dados para o servidor (passivo).
o Multcast (auto-discovery).
o Visualização.
– RRD plugin + collectd-web.
13. Control Staton
Dashboard unifcado para as ferramentas citadas.
– Python/Django + MySQL + RabbitMQ.
• Facilidade/Plugins/Reaproveitamento/Performance.
Ponto único para as informações relevantes.
– Dados de inventário.
– WorkFlows / Requisições.
– CRUDs.
– Mashup (gráfcos).
– Visões consolidadas/alto-nível para sites, serviços e pools.
Webservices (REST) para integração entre serviços de backend.