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




Bruno Marcondes <brmarcondes@ig.com> || @bmarcondes
Eduardo S. Scarpellini <escarpellini@ig.com> || @escarpellini
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
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)

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

  • 1.
    Python no iG (Automação de Data Centers) Bruno Marcondes <brmarcondes@ig.com> || @bmarcondes Eduardo S. Scarpellini <escarpellini@ig.com> || @escarpellini
  • 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çã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.
  • 4.
    Fluxo de Instalação de hardware 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 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.
  • 14.
  • 15.