CISL 2014 2014.04.07 Jos Augusto (Guto) Carvalho Consultor/SysAdmin/DevOp (LPIC-3, RHCE e PCP-201); 14 anos de experincia com TI e FOSS; Blogueiro TI/FOSS h 13 anos (gutocarvalho.net); Atuao em vrios projetos de Governo no MDA, MINC, EBC/RADIOBRS, MPS/DATAPREV, ITI/PR, CAIXA, MD/SIPAM, DETRAN/DF; Entusiasta DevOps (sysadmin em recuperao) desde 2010. whoami FOSS => Free and Open Source Software Plano de Trabalho 70 minutos de apresentao 25 minutos de demonstrao 25 minutos para perguntas Faa perguntas quando quiser Slidedeck disponvel em slideshare.com/gutocarvalho Infraestrutura gil Um modelo inteligente e economicamente vivel Infraestrutura gil um conceito ainda em formao, mas ele envolve principalmente gerncia de conguraes, orquestrao, provisionamento dinmico e metodologias geis de trabalho em grupo. Nesta apresentao focaremos na gerncia de conguraes, uma de suas mais importantes caractersticas. Tendncias Virtualizao Hoje podemos rodar centenas de servidores virtuais, com d i f e r e n t e s s i s t e m a s operacionais em um mesmo host em nosso datacenter Cloud Computing Hoje podemos rodar todos os nossos sistemas em nodes (vms) em nuvens pblicas ou privadas e nosso parque pode aumentar ou diminuir de forma dinmica e automtica Diminuio de Custos As empresas hoje buscam aumentar a qualidade de seus produtos e servios mas sem aumentar os seus custos de manuteno e operao Agilidade e Flexibilidade As empresas querem hoje f e r r ame nt as que l he s permitam atuar de forma gil e exvel dentro do seu negcio, algo que se adapte as suas necessidades de forma plena e concreta Novo tipo de prossional As empresas esto buscando no mercado prossionais mu l t i - d i s c i p l i n a r e s , dinmicos, criativos, com dom ni o em di ferent es tecnologias para dar vazo a demandas e trabalhar com inovao Desaos Desaos na TI de hoje Como administrar parques crescentes? Como manter nosso parque padronizado? Como manter nosso parque seguro? Como manter a qualidade do servio executado? Como manter o custo de manuteno baixo, sem perder qualidade? Como saber quantos prossionais eu preciso para administrar meu ambiente? Cenrio Virtual Mjolnir Solutions Inc. Possui um datacenter em sua sede com 750 VMs Contratou 50 Nodes Cloud (IASS) Precisa manter rodando 800 servidores virtuais Dvidas Dvidas comuns Como fao mudanas rpidas em diversos ambientes e servidores? Como fao para atender demandas em tempo hbil? Como fao para manter a documentao atualizada? Como evitar ao mximo downtime durante as mudanas? Quantos sysadmins eu preciso para administrar 800 VMs? Depende de como voc faz a administrao! Sysadmin Arteso Hoje ainda comum encontrar sysadmins que trabalham com admi ni s t r a o manual , utilizando um mtodo quase artesanal, executando tarefas repetitivas cotidianamente Atualizao de Pacotes? ssh servidor001.dominio.local ssh servidor002.dominio.local ssh servidor003.dominio.local
ssh servidor800.dominio.local Tarefas Repetitivas Criao de usurio em servidores Elaborao de scripts Congurao de servios Conguraes de monitoramento Criao de imagens de ambientes Congurao do sistema operacional Instalao, atualizao e remoo de pacotes Exemplo de processo 1 Atualizao de um agente de monitoramento (ubuntu) ssh servidor001.dominio.local sudo -i apt-get install agente-monitoramento-2.0 vim /etc/agente-monitoramento/agent.conf restart agente-monitoramento exit Exemplo de processo 2 Atualizao de um agente de monitoramento (centos) ssh servidor002.dominio.local su - yum install agente-monitoramento-2.0 vim /etc/agente-monitoramento/agent.conf service agente-monitoramento restart exit Exemplo de processo 3 Atualizao de um agente de monitoramento (debian) ssh servidor003.dominio.local su - aptitude install agente-monitoramento-2.0 vim /etc/agente-monitoramento/agent.conf /etc/init.d/agente-monitoramento restart exit Exemplo de processo 4 Atualizao de um agente de monitoramento (fedora) ssh servidor004.dominio.local sudo -i yum install agente-monitoramento-2.0 vim /etc/agente-monitoramento/agent.conf systemctl restart agente-monitoramento exit Cada sistema operacional lida de uma forma muito particular com seus recursos, e todas estas excees precisam ser cuidadosamente avaliadas e tratadas. O uso de scripts ajuda, mas o sysadmin vai passar a dividir seu tempo administrando VMs e ajustando seus scripts para atender as mais diferentes excees. Fatalmente uma das duas atividades ser negligenciada, i s t o vai ger ar f al has e problemas. Cada sysadmin executar demandas de uma forma distinta, isto gera um ambiente sem padres, impossvel de rastear mudanas. A medida que o parque aumentar car cada vez mai s di f ci l administrar, identicar e corrigir problemas. Mudanas est r ut ur ant es que afetarem todo parque levaro mais tempo para serem concludas pois no percurso muitas coisas vo quebrar. Com o excesso de demandas e ambiente crescendo cada vez mais, documentar perder prioridade e isto criar um ambiente de alto risco, obscuro e desconhecido Pausa Sabe como o sysadmin se sente ao atuar em um incidente em ambiente no documentado? Acompanhe Documentao importante para voc saber lidar com uma situao inesperada Continuando Percepes da empresa Aumenta o custo de manuteno devido a retrabalho Aumenta o desgaste fsico e psquico da equipe A produtividade da equipe diminui (entregas) A qualidade do servio oferecido diminui (uptime) Ocorre uma grande rotatividade de funcionrios Tarefas Repetitivas Executadas manualmente signicam retrabalho Retrabalho Para a empresa signica maior custo e menor lucro Retrabalho Para o sysadmin signica menos tempo com a famlia Retrabalho Para ambos signica menor pr odut i vi dade e menor qualidade no que se faz e no que se entrega. Desperdcio de tempo uma caracterstica comum n e s t e m o d e l o d e a d m i n i s t r a o d e infraestrutura Exemplo O cliente deseja instalar um agente de monitoramento em todas as 800 VMs, removendo qualquer trao do produto antigo no nal do procedimento Procedimento para instalar o agente Acessar servidor via ssh Adicionar repositrio APT/YUM Instalar pacote Ajustar arquivo de congurao Reiniciar agente Remover agente antigo Instalao de agente de monitoramento 800 mquinas 10 minutos por mquina 8000 minutos ou 133 horas 16 dias trabalhando 8 h.p.d Considerando o modelo manual de admi ni s t r ao e o r et r abal ho decorrente de falhas humanas, teremos um analista focado em uma demanda simples por cerca de 1 ms. O modelo manual um modelo caro e insustentvel Como resolver estes problemas? Como obtenho controle e padronizao em meu ambiente ? Gerncia de Conguraes Gerncia de Conguraes Padronizao Controle Integridade Produtividade Agilidade Puppet Ferramenta de nova gerao que implementa gerncia de conguraes para seu ambiente. Puppet em poucas palavras documentao executvel Nos permite parar de administrar e comear a desenvolver nossa infra Sintaxe simples, prtica e natural para sysadmins Oferece suporte a diversos tipos de sistemas operacionais unix, linux windows Sobre a ferramenta Ferramenta Open Source - Apache License Ferramenta mantida pela empresa Puppetlabs Suporte comercial Criado por Luke Kaines (CEO e Fundador Puppetlabs) Cases de uso com grandes players (HP, CISCO, VMWARE...) Recebeu pesados investimentos em 2012/2013 Feito por um SysAdmin para SysAdmins Desenhada para uso DevOps Viso DevOps Tech Specs Escrito em Ruby Extensvel usando cdigo Ruby Funciona em modo autnomo (sem servidor) Funciona em modo cliente e servidor Usa RESTful API Oferece comunicao segura com uso de certicados digitais Clientes Puppet Enterprise Parcerias Parcerias Alguns cases no Brasil Arquitetura Como funciona o Puppet? O Puppet pode funcionar em modo masterless, isto signica sem servidor. Voc pode aplicar uma congurao do Puppet diretamente a um sistema operacional apenas com o agente instalado. O Puppet tambm funciona em modo cliente e servidor. Isto signica que vic instalar o puppet master em alguma VMs e seus agentes iro se comunicar com ele para obter conguraes. Existem cenrios de uso de Puppet masterless distribudo, usando GIT. Neste modelo as conguraes do Puppet so obtidas via GIT e o agente acionado via cron peridicamente Tratamento de informaes e o uso de dados pelo Puppet Todas as informaes de uma sistema operacional, seja um pacote, usurio, arquivo ou servio so consideradas um 'dado' para o puppet. Quando construmos conguraes, estas so convertidas em catlogos XML, estes por sua vez so lidos pelos agentes e a congurao ento aplicada ao sistema operacional. Entenda como funciona a relao cliente e servidor Tudo feito pelo agente localmente, o servidor no se conecta na mquina para aplicar as conguraes. O servidor puppet apenas o repositrio de conguraes, ele tem apenas o dever de construir e enviar o catlogo quando isso for solicitado por um agente. Abstrao menor preocupao e maior resultado Resource Abstraction Layer Camada de Abstrao de Recursos Fale o que voc quer que seja feito No se preocupe em como ser feito O Puppet sabe como precisa fazer o que voc pediu Instale Pacote X Remova usurio Z (Re)inicie servio Y O Puppet orientado a estados, ns criamos conguraes denindo estes e s t a d o s , u ma v e r d a d e i r a documentao executvel. Idempotncia Caracterstica exclusiva do Puppet, nenhum outro faz isto. Puppet na rede Entenda como funciona a comunicao com o Master Modo cliente e servidor O agente gera um certicado digital O master precisa autorizar o certicado Sem autorizao o agente no pode se comunicar Toda a comunicao entre agente e master segura Puppet Viso em Rede Puppet Master Puppet Agent 8140 TCP puppet agent -t SSL envio do catlogo Fluxo Cliente/Servidor Instalao do node Fluxo Cliente/Servidor Instalao do node Inicializao do puppet Fluxo Cliente/Servidor Instalao do node Gerao de Certicado Inicializao do puppet Fluxo Cliente/Servidor Instalao do node Gerao de Certicado Envio de Certicado Inicializao do puppet Fluxo Cliente/Servidor Instalao do node Gerao de Certicado Master Assina Certicado Envio de Certicado Inicializao do puppet Fluxo Cliente/Servidor Instalao do node Gerao de Certicado Agente Sincroniza Master Assina Certicado Envio de Certicado Inicializao do puppet Fluxo Cliente/Servidor Instalao do node Gerao de Certicado Agente Sincroniza Master Assina Certicado Envio de Certicado Inicializao do puppet Modalidades de Assinatura de Certicado Assinatura pode ser manual
Assinatura pode ser automtica por domnio
Assinatura pode ser automtica em qualquer requisio
O agente se comunica com o master a cada N minutos, voc congura N Conguraes Volteis e Dados Puppet Master Mdulos Estticos Viso ampla do Puppet LDAP DNS MONIT SYSLOG JBOSS APACHE MYSQL PGSQL Puppet Agents Camada de Aplicao Camada de Servios Estruturantes Quais recursos esto disponveis? Recursos do Puppet Resource Types Parmetros e Meta-parmetros Templates e Denies Classes e Mdulos Funes e Condicionais Puppet Resource Types Arquivos e Diretrios Usurios Alias Pacotes Servios
Yum Repos Augeas Hosts SSH Cron O puppet oferece 38 tipos de recursos nativos, e voc pode estend-lo. Resource Type: Packages Suporte a 23 tipos de provedores de pacotes Faz a abstrao do OS Declare se o pacote deve estar presente ou ausente Declare se o pacote deve sempre estar em sua ltima verso Resource Type: Services Suporta 11 tipos de sistemas INIT para inicializar servios Declare se um servio deve estar sempre rodando Declare se um servio deve ser carregado no boot Declare se um servio depende de um pacote ou arquivo Resource Type: File Especique permisses e owners Declare arquivos, diretrios e links Controle de mudanas usando at 15 tipos de checksums Exemplos Instala, Congura e Inicia instalar um pacote ativar um servio no boot copiar arquivo de congurao iniciar servio instalado o que queremos fazer? Instala, Congura e Inicia # aptitude install apache2 # insserv apache2 # cp ~/httpd.conf /etc/apache2/ # invoke-rc.d apache2 start no debian seria assim: Instala, Congura e Inicia # yum install httpd # chkcong httpd on # cp ~/httpd.conf /etc/httpd/conf/ # service httpd start no redhat/centos seria assim: Como seria no Puppet? Puppet Manifests Arquivos com extenso.pp, neles expressamos nossas necessidades utilizando a sintaxe declarativa do Puppet package { 'apache2': ensure => present, }
service { 'apache2': ensure => running, enable => true, }
le { '/etc/apache2/httpd.conf': ensure => present, mode => 0644, owner => root, group => root, ensure => puppet:///les/apache/httpd.conf, } Instala, Congura e Inicia package { 'apache2': ensure => present, }
service { 'apache2': ensure => running, enable => true, }
service { 'apache2': ensure => running, enable => true, }
le { '/etc/apache2/httpd.conf': ensure => present, mode => 0644, owner => root, group => root, ensure => puppet:///les/apache/httpd.conf, } resource type parameter title value A mesma congurao atende a diversos sistemas operacionais, a sintaxe simples e direta. uma declarao de estados que o Puppet vai interpretar e aplicar. Documentao Executvel. Mais exemplos Declarando um node (site.pp) node servidor.dominio { include linux-server include module } node balancer.dominio { include linux-server include cyrus::backend include postx::hub include haproxy::mailproxy } Apenas com as informaes do node, j podemos entender o que ele faz e quais ferramentas o puppet gerencia nele, outro tipo de documentao. Variveis e Fatos Fatos (facter) vimpackage => vim-puppet,
} Denies proxy { 'Filial' : http_port squid_mode squid_hostname cache_mem maximum_object_size_in_memory maximum_object_size memory_replacement_policy cache_replacement_policy cache_dir cache_mgr cache_effective_user cache_effective_group dns_nameservers ips_squid } => '3128', => 'transparent', => 'proxy.hacklab', => '2 GB', => '6 MB', => '128 MB', => 'heap GDSF', => 'heap LFUDA', => 'aufs /var/spool/squid 1024 16 256', => monitora@hacklab.local, => 'proxy', => 'proxy', => '127.0.0.1 10.61.12.2 172.16.1.1', => '127.0.0.1 192.168.12.3', Denies proxy { 'Matriz' : http_port squid_mode squid_hostname cache_mem maximum_object_size_in_memory maximum_object_size memory_replacement_policy cache_replacement_policy cache_dir cache_mgr cache_effective_user cache_effective_group dns_nameservers ips_squid } => '3128', => 'transparent', => 'proxy.hacklab', => '8 GB', => '6 MB', => '512 MB', => 'heap GDSF', => 'heap LFUDA', => 'aufs /var/spool/squid 8096 16 256', => monitora@hacklab.local, => 'proxy', => 'proxy', => '127.0.0.1 10.61.12.2 172.16.1.1', => '127.0.0.1 192.168.12.3', Templates myorigin = <%= hostname %> mydestination = $myhostname, ..., localhost, <%= fqdn %> Trecho do template postx/main.cf myorigin = servidor.dominio mydestination = $myhostname, ..., localhost, servidor.dominio Substituio de variveis por fatos Padronizando nodes Base Class class linux-server { include sysadmin-utils include zabbix-agent include ntpconf include locales include hosts include users include localmta include vimrc include backup-agent include apt-repos } Node default node default { include linux-server } Dashboards para Puppet Puppet Dashboard Foreman Outros projetos Puppetlabs Outros projetos Puppetlabs PuppetDB (coletor de dados) Razor (provisionador) Hiera (separa dados de cdigo) Facter (fatos do sistema) Mcollective (orquestrador) Gerenciadores Externos para o Puppet Congr Posso fazer mudanas em tempo real? Marionette Collective Orquestrador de nodes Execuo de Tarefas Paralelas Interao com centenas de nodes Inventrio descentralizado Leitura de meta-dados do Puppet Similar a Fabric e Capistrano Provisionamento? possvel ? Ferramentas de provisionamento VM
Foreman Vagrant Razor Sprinkle Puppet Enterprise Ferramentas de provisionamento SW
Ansible Salt Capistrano Fabric Demonstrao Qual o resultado concreto? A o e s c r e v e r mo s a s n o s s a s conguraes, estamos expressando o que desejamos ter em nossos nodes, com isto, j estamos construindo nossa documentao. Aos escrevermos uma congurao, estamos denindo como aquilo de ser instalado, congurado e como deve funcionar. Toda a equipe passa a usar a mesma receita, isto signica que teremos processos padronizados. O Puppet oferece recursos para voc fazer backup e restore de arquivos modicados, portanto, voc tem a segurana de poder recuperar ambientes caso precise. Ao adotar Puppet voc no vai mais sentir vontade de executar nada sem ele, tudo j nascer automatizado e c ont r ol ado, c om pr oc es s os e documentao instantnea. Respostas Um sysadmin que no usa Puppet consegue administrar no mximo 30 servidores, com alguma diculdade e muito retrabalho. Um sysadmin que usa Puppet consegue administrar entre 250 e 1000 s er vi dor es c om f ac i l i dade, a quantidade vai depender do nvel de automatizao e maturidade do prossional e sua equipe. Para administrar 800 VMs, utilizando Puppet, voc precisar de 4 sysadmins, e armo que dependendo do nvel de automao at menos. Compare Ambiente com 800 nodes modo manual puppet instalando agente 133 horas N minutos Benefcios Reais Maior produtividade em menor tempo Poucos sysadmins para muitos nodes Diminuio de falhas humanas Maior controle de todo o seu parque Diminuio do tempo gasto em mudanas Diminuio do custo de manuteno O sysadmin far jornadas de trabalho normais, car mais tempo com a famlia, ter mais qualidade de vida e com isso ir produzir mais e melhor. O negcio de sua empresa vai uir, ter m e l h o r q u a l i d a d e , m a i o r disponibilidade e menor custo operacional, sendo gerido por uma equipe qualicada e eciente. Puppet Labs Puppetlabs Suporte Comercial (em ingls) Programa de treinamento presencial Programa de certicao para Sysadmins - PCP 201 Programa de certicao para Developers - PCP 301 Puppet Enterprise Dashboard (Gerenciador) Puppet em nmeros 700+ pessoas online no canal #puppet da irc.freenode.net 8.500+ repositrios no GitHub 1000+ mdulos no PuppetForge 5000+ usurios ativos na lista puppet-users com 8000+ tpicos de discusso Comunidade brasileira! Site/Blog http://www.puppetlabs.com http://www.puppetlabs.com/blog/ http://puppet-br.org/
Puppet na rede Google Groups Puppet-camp, puppet-users, puppet-users-br, puppet-dev IRC irc.freenode.org #puppet #puppet-br Existe suporte comercial no Brasil? Suporte Ocial Puppetlabs no Brasil Empresa especializada em Puppet Cursos ociais, Puppet Enterprise, consultoria e suporte 1o Parceiro ocial Puppetlabs Brasil 1o empresa com pessoas certicados PCP na Amrica Latina Acesse http://www.instruct.com.br Inovando com o Puppet PUPPET COMO SERVIO
Gerenciamento de Congurao COMO SERVIO
Automatizar Infraestrutura de GRANDES CORPORAES
Interface intuitiva focada em AGILIDADE e AUTONOMIA
Suporte com PROFISSIONAIS CERTIFICADOS (PCP, RHCE, LPI-3)
SERVIO PIONEIRO para Gesto de Infraestrutura no Brasil