Bruno Marcondes <brmarcondes@ig.com> || @bmarcondes
Eduardo 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 XMLRPC
o 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õ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.
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
Python no iG

Python no iG

  • 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 deum 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çãodiskless (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.
  • 4.
    Fluxo de Instalação dehardware Manual / Local Remoto / Automatizado
  • 5.
    Cobbler • Permite ará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)
  • 6.
  • 7.
    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
  • 8.
  • 9.
    Func • Execução demó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
  • 10.
  • 11.
    Collectd • Performátco eleve. 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.
  • 12.
  • 13.
    Control Staton  Dashboard unifcadopara 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.
  • 14.
  • 15.