Download - Puppet Cloud IaaS

Transcript
Page 1: Puppet Cloud IaaS

Gerência de Configurações em CloudPuppet em ambientes IaaS

José Augusto (Guto) [email protected]

Wednesday, August 8, 12

Page 2: Puppet Cloud IaaS

Consultor/SysAdmin (LPIC-3) na 4Linux

12 anos de experiência com tecnologias FOSS

Blogueiro FOSS há 6 anos no site gutocarvalho.net

Atuação em vários projetos de Governo no MDA, MINC, EBC/RADIOBRÁS, MPS/DATAPREV, ITI/PR, CEF, MD/SIPAM, DETRAN/DF

Há 2 anos trabalhando com gerência de configurações em ambientes virtualizados e clouds privadas em Brasília

whoami

Wednesday, August 8, 12

Page 3: Puppet Cloud IaaS

Puppet em IaaSWednesday, August 8, 12

Page 4: Puppet Cloud IaaS

Plano de Trabalho

40 minutos de apresentação

5 minutos para perguntas

Wednesday, August 8, 12

Page 5: Puppet Cloud IaaS

Agenda

Gerência de Configurações

Infraestrutura como Código

Puppet como solução de Gerência de Configurações

Puppet Arquitetura, Funcionamento e Recursos

Perguntas

Wednesday, August 8, 12

Page 6: Puppet Cloud IaaS

Cloud Computing - Tendência

Wednesday, August 8, 12

Page 7: Puppet Cloud IaaS

Cloud e seus BenefíciosHiper escalável

Rápida e elástica

Abstração de hardware

Infraestrutura dinâmica

Alta disponibilidade

Investimento atraente

Wednesday, August 8, 12

Page 8: Puppet Cloud IaaS

ProvisionamentoPodemos criar 500 VM’s em

poucos minutos

Wednesday, August 8, 12

Page 9: Puppet Cloud IaaS

Como Administrar 500 VM’s?

Wednesday, August 8, 12

Page 10: Puppet Cloud IaaS

Configuração Manual?

Wednesday, August 8, 12

Page 11: Puppet Cloud IaaS

Acesso Secure Shell (ssh)?

Wednesday, August 8, 12

Page 12: Puppet Cloud IaaS

Host a Host?

Wednesday, August 8, 12

Page 13: Puppet Cloud IaaS

Quantos SysAdmins são necessários para administrar 500 servidores?

Wednesday, August 8, 12

Page 14: Puppet Cloud IaaS

Qual a velocidade nas mudanças em seu ambiente?

Wednesday, August 8, 12

Page 15: Puppet Cloud IaaS

Qual a probabilidade de falhas decorrentes de mudanças manuais?

Wednesday, August 8, 12

Page 16: Puppet Cloud IaaS

Você consegue manter todo o seu ambiente padronizado?

Wednesday, August 8, 12

Page 17: Puppet Cloud IaaS

Seu custo com manutenção e equipes técnicas está aumentando?

Wednesday, August 8, 12

Page 18: Puppet Cloud IaaS

Está difícil colocar suas configurações nos trilhos?

Wednesday, August 8, 12

Page 19: Puppet Cloud IaaS

Como resolver isto?Como obtenho controle e

padronização em meu ambiente ?

Wednesday, August 8, 12

Page 20: Puppet Cloud IaaS

Gerência de Configurações

Wednesday, August 8, 12

Page 21: Puppet Cloud IaaS

Padronização

Wednesday, August 8, 12

Page 22: Puppet Cloud IaaS

Automatização

Wednesday, August 8, 12

Page 23: Puppet Cloud IaaS

Controle

Wednesday, August 8, 12

Page 24: Puppet Cloud IaaS

Integridade

Wednesday, August 8, 12

Page 25: Puppet Cloud IaaS

Desempenho

Wednesday, August 8, 12

Page 26: Puppet Cloud IaaS

Agilidade nas mudanças

Wednesday, August 8, 12

Page 27: Puppet Cloud IaaS

PuppetFerramenta de nova geração que implementa gerência de

configurações para seu ambiente.

Wednesday, August 8, 12

Page 28: Puppet Cloud IaaS

Visão Rápida

Infraestrutura como código

Pare de administrar e comece a desenvolver sua infra

Reuse código para gerenciar seu parque com facilidade

Linguagem declarativa para descrever configurações (DSL)

Wednesday, August 8, 12

Page 29: Puppet Cloud IaaS

Sobre a ferramentaSuporte a Linux, BSDs, Solaris e Windows

Criado por Luke Kaines (CEO e Fundador)

Empresa PuppetLabs mantém a Ferramenta

Ferramenta OpenSource (Licença Apache)

Recebeu grandes investimentos

Empresa oferece Suporte e Versão Enterprise

Wednesday, August 8, 12

Page 30: Puppet Cloud IaaS

Feito por um SysAdmin para SysAdmins

Wednesday, August 8, 12

Page 31: Puppet Cloud IaaS

Eficiente para uso DevOps

Wednesday, August 8, 12

Page 32: Puppet Cloud IaaS

EspecificaçõesEscrito em Ruby

Extensível usando código Ruby

Funciona em modo Autônomo (serverless)

Funciona em modo Cliente/Servidor

RESTful API

Comunicação segura (SSL Certificate)

Wednesday, August 8, 12

Page 33: Puppet Cloud IaaS

Cases Puppet

Wednesday, August 8, 12

Page 34: Puppet Cloud IaaS

ArquiteturaComo funciona o Puppet?

Wednesday, August 8, 12

Page 35: Puppet Cloud IaaS

Resource Abstraction Layer(RAL)

Wednesday, August 8, 12

Page 36: Puppet Cloud IaaS

Puppet: RAL

Resource Abstraction Layer = RAL

Camada de Abstração de Recursos

Fale o que você quer que seja feito

Não se preocupe em como será feito

O Puppet sabe como fazer

Wednesday, August 8, 12

Page 37: Puppet Cloud IaaS

Instale Pacote X

Wednesday, August 8, 12

Page 38: Puppet Cloud IaaS

Remova usuário Z

Wednesday, August 8, 12

Page 39: Puppet Cloud IaaS

(Re)inicie serviço Y

Wednesday, August 8, 12

Page 40: Puppet Cloud IaaS

Tratamento de Informações

O grande diferencial do Puppet é a forma como ele trata as informações de seus nodes

Wednesday, August 8, 12

Page 41: Puppet Cloud IaaS

Tratamento de informações

No Puppet tudo é modelado e tratado como ‘dados’

O estado atual de um node (servidor) é um dado

Um pacote instalado em um node é um dado

Um usuário em um servidor é um dado

Wednesday, August 8, 12

Page 42: Puppet Cloud IaaS

Os dados são inseridos em catálogos pelo master

O catálogo é processado pelo node e as modificações são aplicadas de acordo com o que foi declarado.

Wednesday, August 8, 12

Page 43: Puppet Cloud IaaS

Processamento do Catálogo

1) Agente Requisita Catálogo1.1) Agente envia Fatos para Master2) Master Processa Fatos e Compara2.1) Master Produz e envia Catálogo3) Node Recebe, Compara e Aplica4) Node informa estado atual ao Master5) Sistema reflete catálogo

Wednesday, August 8, 12

Page 44: Puppet Cloud IaaS

Idempotência

Wednesday, August 8, 12

Page 45: Puppet Cloud IaaS

ConfiguraçõesVoláteis e Dados

Puppet MasterMódulos Estáticos

Funcionamento

LDAP DNS MONIT SYSLOG

JBOSS APACHE MYSQL PGSQL

Puppet Agents

Camada de Aplicação

Camada de Serviços Estruturantes

Wednesday, August 8, 12

Page 46: Puppet Cloud IaaS

Puppet Visão em Rede

Puppet Master

Puppet Client

8140 TCPClient

puppetd -t

8139 TCPServer

puppetrunSSL

Wednesday, August 8, 12

Page 47: Puppet Cloud IaaS

Administração IaaS

Administrar uma cloud IaaS não é algo complicado

Escalabilidade automática é um recurso fantástico

Ter elasticidade é fundamental

Criar novos servidores é muito fácil

Administrar centenas de nodes? Aqui começa a complicar.

Wednesday, August 8, 12

Page 48: Puppet Cloud IaaS

Quando seu ambiente IaaS começar a crescer demais você vai perceber administrá-lo não é tão simples.

Wednesday, August 8, 12

Page 49: Puppet Cloud IaaS

Adicionando Nodes

ZABBIX

JBOSS

POSTGRESQL

MEMCACHED

NGINX

Wednesday, August 8, 12

Page 50: Puppet Cloud IaaS

Adicionando Nodes

ZABBIX

POSTGRESQL

MEMCACHED

NGINX

Adicionar um novo node representa N mudanças

JBOSS

Wednesday, August 8, 12

Page 51: Puppet Cloud IaaS

Adicionando Nodessysadmin-utilszabbix-agent

ntpconflocaleshostsusers

localmtasmtpdvimrc

backup-agentapt-repos

ZABBIX

POSTGRESQL

MEMCACHED

NGINX

JBOSS

Wednesday, August 8, 12

Page 52: Puppet Cloud IaaS

Como o Puppet pode ajudar?

Automatizando seu ambiente

Gerando maior produtividade com menor esforço

Padronizando seus nodes logo após a instalação

Modificando configurações de forma controlada

Wednesday, August 8, 12

Page 53: Puppet Cloud IaaS

Insira o Puppet na imagem de instalação de seus nodes.

Wednesday, August 8, 12

Page 54: Puppet Cloud IaaS

Não tenha medo de realizar atualizações, o puppet faz pra você!

Wednesday, August 8, 12

Page 55: Puppet Cloud IaaS

Você pode fazer deploy de sua APPVocê pode controlar a versão de sua APP

Wednesday, August 8, 12

Page 56: Puppet Cloud IaaS

Como funciona o modo cliente/servidor?

Wednesday, August 8, 12

Page 57: Puppet Cloud IaaS

Arquitetura Cliente/Servidor

O agente gera um certificado digital

O master precisa autorizar o certificado

Sem autorização o agente não pode se comunicar

Toda a comunicação entre agente e master é segura

Wednesday, August 8, 12

Page 58: Puppet Cloud IaaS

Fluxo Cliente/Servidor

Instalação do node

Wednesday, August 8, 12

Page 59: Puppet Cloud IaaS

Fluxo Cliente/Servidor

Instalação do node

Inicialização do puppet

Wednesday, August 8, 12

Page 60: Puppet Cloud IaaS

Fluxo Cliente/Servidor

Instalação do node

Geração de Certificado

Inicialização do puppet

Wednesday, August 8, 12

Page 61: Puppet Cloud IaaS

Fluxo Cliente/Servidor

Instalação do node

Geração de Certificado

Envio de Certificado

Inicialização do puppet

Wednesday, August 8, 12

Page 62: Puppet Cloud IaaS

Fluxo Cliente/Servidor

Instalação do node

Geração de Certificado

Master Assina Certificado

Envio de Certificado

Inicialização do puppet

Wednesday, August 8, 12

Page 63: Puppet Cloud IaaS

Fluxo Cliente/Servidor

Instalação do node

Geração de Certificado

Agente Sincroniza

Master Assina Certificado

Envio de Certificado

Inicialização do puppet

Wednesday, August 8, 12

Page 64: Puppet Cloud IaaS

Fluxo Cliente/Servidor

Instalação do node

Geração de Certificado

Agente Sincroniza

Master Assina Certificado

Envio de Certificado

Inicialização do puppet

Modalidades de Assinatura de CertificadoAssinatura pode ser manualAssinatura pode ser automática por domínioAssinatura pode ser automática em qualquer requisição

Wednesday, August 8, 12

Page 65: Puppet Cloud IaaS

O agente se comunica com o master a cada N minutos

Wednesday, August 8, 12

Page 66: Puppet Cloud IaaS

Quais recursos estão disponíveis?

Wednesday, August 8, 12

Page 67: Puppet Cloud IaaS

Recursos do Puppet

Resource Types

Parâmetros e Meta-parâmetros

Templates e Definições

Classes e Módulos

Funções e Condicionais

Wednesday, August 8, 12

Page 68: Puppet Cloud IaaS

Puppet Resource Types

Arquivos e Diretórios

Usuários

Alias

Pacotes

Serviços

Yum Repos

Augeas

Hosts

SSH

Cron

O puppet oferece 38 tipos de recursos nativos, e você pode estendê-lo.

Wednesday, August 8, 12

Page 69: Puppet Cloud IaaS

Resource Type: PackagesSuporte a 23 tipos de provedores de pacotes

Faz a abstração do OS

Declare se o pacote deve estar presente ou ausente

Declare se o pacote deve sempre estar em sua última versão

Wednesday, August 8, 12

Page 70: Puppet Cloud IaaS

Resource Type: ServicesSuporta 11 tipos de sistemas INIT para inicializar serviços

Declare se um serviço deve estar sempre rodando

Declare se um serviço deve ser carregado no boot

Declare se um serviço depende de um pacote ou arquivo

Wednesday, August 8, 12

Page 71: Puppet Cloud IaaS

Resource Type: FileEspecifique permissões e owners

Declare arquivos, diretórios e links

Controle de mudanças usando até 15 tipos de checksums

Wednesday, August 8, 12

Page 72: Puppet Cloud IaaS

ExemplosWednesday, August 8, 12

Page 73: Puppet Cloud IaaS

Instala, Configura e Inicia

# aptitude install apache2

# update-rc.d -f apache2 defaults

# cp ~/httpd.conf /etc/apache2/

# invoke-rc.d apache2 start

debian-way

Wednesday, August 8, 12

Page 74: Puppet Cloud IaaS

package { 'apache2':ensure => present,}

 service { 'apache2':

ensure => running,enable => true,}

file { 'httpd.conf':path => “/etc/apache2/httpd.conf”,source => “/etc/puppet/files/httpd.conf”,}

Instala, Configura e Inicia

Wednesday, August 8, 12

Page 75: Puppet Cloud IaaS

package { 'apache2':ensure => present,}

 service { 'apache2':

ensure => running,enable => true,}

file { 'httpd.conf':path => “/etc/apache2/httpd.conf”,source => “/etc/puppet/files/httpd.conf”,}

Instala, Configura e Inicia

resource typeparameter

titlevalue

Wednesday, August 8, 12

Page 76: Puppet Cloud IaaS

Base Classclass 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}

Wednesday, August 8, 12

Page 77: Puppet Cloud IaaS

Declarando um nodenode “servidor.dominio” { include linux-server include module}

node “balancer.dominio” { include linux-server include cyrus::backend include postfix::hub include haproxy::mailproxy}

Wednesday, August 8, 12

Page 78: Puppet Cloud IaaS

Variáveis e FatosFatos (facter)

vimpackage => vim-puppet,

apacheservice => apache2,

ntpconfrhel => ntp.conf.rhel,

Variáveisdomainfqdnhostnameinterfacesipaddress_eth0ipaddress_eth1ipaddress_lolsbdistidlsbdistrelease

=> hacklab,=> puppetmaster.hacklab,=> puppetmaster,=> eth0,eth1,lo,=> 10.0.2.15,=> 192.168.56.150,=> 127.0.0.1,=> debian,=> 6.0.5,

Wednesday, August 8, 12

Page 79: Puppet Cloud IaaS

Condicionaiscase $operatingsystem { CentOS,RedHat: { $package_name = 'ntp', $service_name = 'ntpd', $conf_file = 'ntp.conf.el', } Debian,Ubuntu: { $package_name = 'ntp', $service_name = 'ntp', $conf_file = 'ntp.conf.debian', }}....

Wednesday, August 8, 12

Page 80: Puppet Cloud IaaS

Definiçõesproxy::squid { 'ProxyFilial' : 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.4linux',=> '2 GB',=> '6 MB',=> '128 MB',=> 'heap GDSF',=> 'heap LFUDA',=> 'aufs /var/spool/squid 1024 16 256',=> '[email protected]',=> 'proxy',=> 'proxy',=> '127.0.0.1 10.61.12.2 172.16.1.1',=> '127.0.0.1 192.168.12.3',

Wednesday, August 8, 12

Page 81: Puppet Cloud IaaS

Templates

myorigin = <%= hostname %>mydestination = $myhostname, ..., localhost, <%= fqdn %>

Trecho do template postfix/main.cf

myorigin = servidor.dominiomydestination = $myhostname, ..., localhost, servidor.dominio

Substituição de variáveis por fatos

Wednesday, August 8, 12

Page 82: Puppet Cloud IaaS

Como acompanho mudanças?

Wednesday, August 8, 12

Page 83: Puppet Cloud IaaS

Puppet Dashboard

Wednesday, August 8, 12

Page 84: Puppet Cloud IaaS

Posso fazer mudanças em tempo real?

Wednesday, August 8, 12

Page 85: Puppet Cloud IaaS

Marionette Collective

Orquestrador de nodes

Execução de Tarefas Paralelas

Interação com centenas de nodes

Inventário descentralizado

Leitura de meta-dados do Puppet

Similar a Fabric e Capistrano

Wednesday, August 8, 12

Page 86: Puppet Cloud IaaS

Qual o resultado concreto?

Wednesday, August 8, 12

Page 87: Puppet Cloud IaaS

Documentação Instantânea

Wednesday, August 8, 12

Page 88: Puppet Cloud IaaS

Restore e backup de mudanças

Wednesday, August 8, 12

Page 89: Puppet Cloud IaaS

Processos bem definidos

Wednesday, August 8, 12

Page 90: Puppet Cloud IaaS

Ambiente Padronizado

Wednesday, August 8, 12

Page 91: Puppet Cloud IaaS

Tarefas Automatizadas

Wednesday, August 8, 12

Page 92: Puppet Cloud IaaS

Benefícios ReaisMaior produtividade em menor tempo

Poucos SysAdmins para muitos nodes

Diminuição de falhas humanas

Maior controle de todo o seu parque

Diminuição do tempo gasto em mudanças

Diminuição do custo de manutenção

Wednesday, August 8, 12

Page 93: Puppet Cloud IaaS

Tecnologia trabalhando para você

Wednesday, August 8, 12

Page 94: Puppet Cloud IaaS

Puppet e a nuvem

Wednesday, August 8, 12

Page 95: Puppet Cloud IaaS

Puppet & Cloud IaaSCloud Tools (FOSS) Cloud Hosts

Ganeti

Wednesday, August 8, 12

Page 96: Puppet Cloud IaaS

Boas PráticasWednesday, August 8, 12

Page 97: Puppet Cloud IaaS

Use API do fornecedor

Wednesday, August 8, 12

Page 98: Puppet Cloud IaaS

Desenvolva sua Infra

Wednesday, August 8, 12

Page 99: Puppet Cloud IaaS

Versione suas configurações

Wednesday, August 8, 12

Page 100: Puppet Cloud IaaS

Reaproveite Código

Wednesday, August 8, 12

Page 101: Puppet Cloud IaaS

GitHub & PuppetForge

Wednesday, August 8, 12

Page 102: Puppet Cloud IaaS

Pesquise!

Wednesday, August 8, 12

Page 103: Puppet Cloud IaaS

Puppet em números

727 pessoas online no canal #puppet da irc.freenode.net

8.500 repositórios no GitHub

450 módulos no PuppetForge

4457 usuários ativos na lista puppet-users com 7795 tópicos de discussão

Dados coletados em 2012-08-06 às 10:34 PMWednesday, August 8, 12

Page 104: Puppet Cloud IaaS

4Linux & PuppetLabs1o Parceiro no Brasil

Consultores Especializados

Cases no Governo Federal

Suporte Puppet Enterprise

Treinamentos Puppet Master

Wednesday, August 8, 12

Page 105: Puppet Cloud IaaS

Site/Bloghttp://www.puppetlabs.comhttp://www.puppetlabs.com/blog/http://puppet-br.org/

Twitter@puppetlabs

GitHubhttp://www.github.com/puppelabs

Puppet na rede

Google GroupsPuppet-camp,puppet-users,puppet-users-br,puppet-dev

IRCirc.freenode.org#puppet#puppet-br

Wednesday, August 8, 12

Page 106: Puppet Cloud IaaS

Perguntas?

Wednesday, August 8, 12

Page 107: Puppet Cloud IaaS

Obrigado!

Twitter @[email protected]

Contato

slideshare.net/gutocarvalhogutocarvalho.net

Wednesday, August 8, 12

Page 108: Puppet Cloud IaaS

Recursos Puppet Chef CfEnginePull Yes Yes YesPush No No NoIdempotence Yes Yes YesConfig Language Declarative Ruby DeclarativeWeb UI Yes Yes YesOS Support *NIX,Windows *NIX,Windows *NIX,WindowsLicense Apache Apache GPLCompany Puppetlabs OpsCode CfEngineCloud Yes Yes Yes

Comparando Ferramentas

Wednesday, August 8, 12


Top Related