TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)

Post on 18-Dec-2014

1.402 views 0 download

description

 

Transcript of TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)

Bruno Marcondes <brmarcondes@ig.com> || @bmarcondesEduardo S. Scarpellini <escarpellini@ig.com> || @escarpellini

Python no iG(Automação de Data Centers)

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.

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.

Fluxo de Instalação de hardware

Manual / Local

Remoto / Automatizado

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 XMLRPCo WEB (Cobbler Web)

Gerenciamento de Confguração

Puppet

• Ruby.• Modular. • XMLRPC/REST (+SSL).

• Meta-linguagem para defnição de manifests/classes.

o Acesso a funcões/código externos (ruby).o Herança / especialização de classes.

• Classes compostas por recursos abstratos (domínio do cliente). • Interdependência + Eventos (Triggers).

• iG:• nodeclassifer.py• Mercurial + Python Hooks

Administração Centralizada

Func

• Execução de módulos/funções de maneira massiva (ad hoc).o overlord => minions.

• XMLRPC (+SSL) • Arquitetura modular (fácil desenvolvimento).

o Ex.: command, jboss, rpm, iptables, process, ping, etc. • Interfaces

o Python API import func.overloard.client

o CLI func 'home-ws-*.tld' call command run 'htpd -V' func 'blig-ws-[123].tld' call hardware info

Monitoração

Collectd • Performátco e leve.

o C.o Alta resolução/granularidade (segundos).

• Plugins.o Apache, Nginx, Mysql, Bind, Varnish, RRD, Nagios, etc.

• Extensõeso Pythono 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.

Integração

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.

Control Staton

Control Staton