View
1.205
Download
12
Category
Preview:
DESCRIPTION
Slides da palestra: IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando Puppet. Esta palestra foi apresentada pelo colaborador da 4Linux Guto Carvalho, na CloudConf.
Citation preview
- Desenvolvimento- Soluções e Aplicativos- Treinamento
Baseados em:- Softwares Livres- Open Source- Padrões Abertos
Para construir sua infraestrutura de TI e criar novas soluções de negócio.
Prestação de serviços em:- Consultoria- Suporte- Projetos
Tuesday, August 7, 12
Gerência de Configurações em CloudPuppet em ambientes IaaS
José Augusto (Guto) Carvalhojose.carvalho@4linux.com.br
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Puppet em IaaSTuesday, August 7, 12
Plano de Trabalho
40 minutos de apresentação
5 minutos para perguntas
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Cloud Computing - Tendência
Tuesday, August 7, 12
Cloud e seus BenefíciosHiper-escalável
Rápida e elástica
Abstração de hardware
Infraestrutura dinâmica
Alta-disponibilidade
Investimento atraente
Tuesday, August 7, 12
ProvisionamentoPodemos criar 500 VM’s em
poucos minutos
Tuesday, August 7, 12
Como Administrar 500 VM’s?
Tuesday, August 7, 12
Configuração Manual?
Tuesday, August 7, 12
Acesso Secure Shell (ssh)?
Tuesday, August 7, 12
Host a Host?
Tuesday, August 7, 12
Quantos SysAdmins são necessários para administrar 500 servidores?
Tuesday, August 7, 12
Qual a velocidade nas mudanças em seu ambiente?
Tuesday, August 7, 12
Qual a probabilidade de falhas decorrentes de mudanças manuais?
Tuesday, August 7, 12
Você consegue manter todo o seu ambiente padronizado?
Tuesday, August 7, 12
Seu custo com manutenção e equipes técnicas está aumentando?
Tuesday, August 7, 12
Está difícil colocar suas configurações nos trilhos?
Tuesday, August 7, 12
Como resolver isto?Como obtenho controle e
padronização em meu ambiente ?
Tuesday, August 7, 12
Gerência de Configurações
Tuesday, August 7, 12
Padronização
Tuesday, August 7, 12
Automatização
Tuesday, August 7, 12
Controle
Tuesday, August 7, 12
Integridade
Tuesday, August 7, 12
Desempenho
Tuesday, August 7, 12
Agilidade nas mudanças
Tuesday, August 7, 12
PuppetFerramenta de nova geração que implementa gerência de
configurações para seu ambiente.
Tuesday, August 7, 12
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)
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Feito por um SysAdmin para SysAdmins
Tuesday, August 7, 12
Eficiente para uso DevOps
Tuesday, August 7, 12
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)
Tuesday, August 7, 12
Cases Puppet
Tuesday, August 7, 12
ArquiteturaComo funciona o Puppet?
Tuesday, August 7, 12
Resource Abstraction Layer(RAL)
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Instale Pacote X
Tuesday, August 7, 12
Remova usuário Z
Tuesday, August 7, 12
(Re)inicie serviço Y
Tuesday, August 7, 12
Tratamento de Informações
O grande diferencial do Puppet é a forma como ele trata as informações de seus nodes
Tuesday, August 7, 12
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
Tuesday, August 7, 12
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.
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Idempotência
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Puppet Visão em Rede
Puppet Master
Puppet Client
8140 TCPClient
puppetd -t
8139 TCPServer
puppetrunSSL
Tuesday, August 7, 12
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.
Tuesday, August 7, 12
Quando seu ambiente IaaS começar a crescer demais você vai perceber administrá-lo não é tão simples.
Tuesday, August 7, 12
Adicionando Novos Nodes
ZABBIX
JBOSS
POSTGRESQL
MEMCACHED
NGINX
Tuesday, August 7, 12
Adicionando Novos Nodes
ZABBIX
POSTGRESQL
MEMCACHED
NGINX
Adicionar um novo node representa N mudanças
JBOSS
Tuesday, August 7, 12
Adicionando Novos Nodessysadmin-utilszabbix-agentntpconflocaleshostsuserslocalmtasmtpdvimrc
backup-agentapt-repos
ZABBIX
POSTGRESQL
MEMCACHED
NGINX
JBOSS
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Insira o Puppet na imagem de instalação de seus nodes.
Tuesday, August 7, 12
Não tenha medo de realizar atualizações, o puppet faz pra você!
Tuesday, August 7, 12
Você pode fazer deploy de sua APPVocê pode controlar a versão de sua APP
Tuesday, August 7, 12
Como funciona o modo cliente/servidor?
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Fluxo Cliente/Servidor
Instalação do node
Tuesday, August 7, 12
Fluxo Cliente/Servidor
Instalação do node
Inicialização do puppet
Tuesday, August 7, 12
Fluxo Cliente/Servidor
Instalação do node
Geração de Certificado
Inicialização do puppet
Tuesday, August 7, 12
Fluxo Cliente/Servidor
Instalação do node
Geração de Certificado
Envio de Certificado
Inicialização do puppet
Tuesday, August 7, 12
Fluxo Cliente/Servidor
Instalação do node
Geração de Certificado
Master Assina Certificado
Envio de Certificado
Inicialização do puppet
Tuesday, August 7, 12
Fluxo Cliente/Servidor
Instalação do node
Geração de Certificado
Agente Sincroniza
Master Assina Certificado
Envio de Certificado
Inicialização do puppet
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Quais recursos estão disponíveis?
Tuesday, August 7, 12
Recursos do Puppet
Resource Types
Parâmetros e Meta-parâmetros
Templates e Definições
Classes e Módulos
Funções e Condicionais
Tuesday, August 7, 12
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.
Tuesday, August 7, 12
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
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Resource Type: FileEspecifique permissões e owners
Declare arquivos, diretórios e links
Controle de mudanças usando até 15 tipos de checksums
Tuesday, August 7, 12
Exemplos
Tuesday, August 7, 12
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
Tuesday, August 7, 12
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
Tuesday, August 7, 12
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
Tuesday, August 7, 12
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}
Tuesday, August 7, 12
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}
Tuesday, August 7, 12
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,
Tuesday, August 7, 12
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', }}....
Tuesday, August 7, 12
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',=> 'monitora@4linux.com.br',=> 'proxy',=> 'proxy',=> '127.0.0.1 10.61.12.2 172.16.1.1',=> '127.0.0.1 192.168.12.3',
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Como acompanho mudanças?
Tuesday, August 7, 12
Puppet Dashboard
Tuesday, August 7, 12
Posso fazer mudanças em tempo real?
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Qual o resultado concreto?
Tuesday, August 7, 12
Documentação Instantânea
Tuesday, August 7, 12
Restore e backup de mudanças
Tuesday, August 7, 12
Processos bem definidos
Tuesday, August 7, 12
Ambiente Padronizado
Tuesday, August 7, 12
Tarefas Automatizadas
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Tecnologia trabalhando para você
Tuesday, August 7, 12
E a compatibilidade?
Tuesday, August 7, 12
Puppet & Cloud IaaSCloud Tools (FOSS) Cloud Hosts
Ganeti
Tuesday, August 7, 12
Boas Práticas
Tuesday, August 7, 12
Use API do fornecedor
Tuesday, August 7, 12
Desenvolva sua Infra
Tuesday, August 7, 12
Versione suas configurações
Tuesday, August 7, 12
Reaproveite Código
Tuesday, August 7, 12
GitHub & PuppetForge
Tuesday, August 7, 12
Pesquise!
Tuesday, August 7, 12
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 PMTuesday, August 7, 12
4Linux & PuppetLabs1o Parceiro no Brasil
Consultores Especializados
Cases no Governo Federal
Suporte Puppet Enterprise
Treinamentos Puppet Master
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Perguntas?
Tuesday, August 7, 12
Obrigado!
Twitter @4linuxBR
Facebook /4Linux
Twitter @gutocarvalhojose.carvalho@4linux.com.br
4linux na rede Contato
slideshare.net/gutocarvalho
Tuesday, August 7, 12
- Desenvolvimento- Soluções e Aplicativos- Treinamento
Baseados em:- Softwares Livres- Open Source- Padrões Abertos
Para construir sua infraestrutura de TI e criar novas soluções de negócio.
Prestação de serviços em:- Consultoria- Suporte- Projetos
Tuesday, August 7, 12
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
Tuesday, August 7, 12
Recommended