Daniel Capó Sobral
Esta apresentação: SpeakerDeck    https://speakerdeck.com/u/dcsobral/p/gestao-     automatica-de-configuracao-usando-pup...
Quem sou eu? Daniel Sobral    Mestrado em Computação Administrador de Sistemas Programador Colaborador dos projetos F...
Quem são vocês? Quem é administrador de sistemas?
Quem são vocês? Quem é administrador de sistemas? Quem é programador?
Quem são vocês? Quem é administrador de sistemas? Quem é programador? Quem se considera “devops”?
Quem são vocês? Quem é administrador de sistemas? Quem é programador? Quem se considera “devops”? Quem já conhece o Pu...
Objetivos Explicar o que é Gestão Automática de Configuração
Objetivos Explicar o que é Gestão Automática de Configuração Apresentar os benefícios
Objetivos Explicar o que é Gestão Automática de Configuração Apresentar os benefícios Resumir alternativas
Objetivos Explicar o que é Gestão Automática de Configuração Apresentar os benefícios Resumir alternativas Descrever o...
Objetivos Explicar o que é Gestão Automática de Configuração Apresentar os benefícios Resumir alternativas Descrever o...
Objetivos Explicar o que é Gestão Automática de Configuração    5 minutos Apresentar os benefícios    5 minutos Resum...
Configuração Tudo aquilo que pode ser modificado, e modifique a funcionalidade do sistema:   Arquivos de Configuração  ...
Gestão Aplicar nos servidores a configuração desejada Monitorar servidores contra mudanças Corrigir alterações da confi...
Gestão Automática deConfiguração Funciona mais ou menos assim:   Servidor rio20prod01:       Servidor de Linux de Produ...
Meus benefícios favoritos: Padronização dos Servidores    Todos servidores de um determinado tipo tem     exatamente a m...
Qual a diferença? CFEngine    O mais antigo    Rápido    Consome poucos recursos Chef    Configuração escrita em Rub...
Vantagens do Puppet Linguagem declarativa    Menos “bugs” de configuração    Mais configuração do que programação Conf...
Modos De Funcionamento Cliente/Servidor    Daemon no cliente consultando servidor     periodicamente    Daemon no clien...
Visão por alto
Cliente executando
Servidor preparando catálogo
Cliente processando o catálogoOrdena Dependências entre Recursos    Confere Estado de Cada Recurso    • Modifica Configura...
Fatos? Informações básicas a respeito do cliente:    Qual é o sistema operacional?    Qual é a versão?    A máquina é ...
Catálogo? Conjunto de recursos, seus atributos e suas  dependências Recurso:   Um arquivo (conteúdo, permissão, dono, e...
Recurso    user { ze:        ensure => present,        gid      => 1000,        require =>    Group[ze],    }
Recurso  Tipo                     Nome          user { ze:                                      Atributos            ensur...
Recurso      Tipo         Determina o que será configurado• “user” cria, modifica e remove usuários     Nome          Iden...
Meta Atributos Comuns a todos os recursos Descrevem relações entre recursos ou forma de  funcionamento Exemplos:   Dep...
Elementos de Organização   Site      Contém todo o resto    Nó       Configuração de um servidor Módulo      Agrupamento t...
Árvore do Puppet
Organização de Recursos                                             Site Nós          Módulos       Classes       Definiçõ...
Um exemplo prático: o nó                            Classenode "rio20prod01" {    include linux-server    rio20def { rio20...
Um exemplo prático: o módulo
Um exemplo prático: a classe                       Outras Classesclass linux-server {    # Include classes common to allli...
Um exemplo prático: a definição                     Parâmetro a ser recebido                                             R...
Classes vs Definições Também é permitido às classes serem parametrizadas    Capacidade relativamente recente Uma classe...
Um exemplo prático: o recurso      Tipo                   Nomefile { "/etc/apache2/sites-available/default":       ensure ...
Proposta Não usaremos o Puppet Master Usaremos o Puppet stand-alone manual Vamos criar a configuração em etapas A cada...
O exercício   Criar uma configuração para aplicações PHP   Servindo páginas dinâmicas via Apache   E páginas estáticas ...
Comandos Úteis puppet     Pega configurações no Puppet  agent     Master puppet  apply     Pega configurações de um arquiv...
Um início modesto Pacote Apache2 Serviço Apache2
Dependências Serviço antes de Pacote? Require e Before
Arquivos de Configuração Número de arquivos abertos: nofile
Completando Mod-rewrite Mod-deflate PHP5
Temos Uma Classe! Classe Incluindo classes Nodes
NGINX e defines Define Classe com parâmetro
Conflito de Porta e Templates Variáveis Ports.conf e o ERB Template
Carregando Novas Configurações Notify e Subscribe
Instalando, ou não, o NGINX If
for now...
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
Upcoming SlideShare
Loading in...5
×

Gestão automática de configuração usando puppet

1,713

Published on

Palestra Introdutória do Workshop de mesmo nome da Agile Brazil 2012.

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,713
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
57
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Gestão automática de configuração usando puppet

  1. 1. Daniel Capó Sobral
  2. 2. Esta apresentação: SpeakerDeck  https://speakerdeck.com/u/dcsobral/p/gestao- automatica-de-configuracao-usando-puppet SlideShare  http://www.slideshare.net/dcsobral/gesto-automtica- de-configurao-usando-puppet
  3. 3. Quem sou eu? Daniel Sobral  Mestrado em Computação Administrador de Sistemas Programador Colaborador dos projetos FreeBSD e Scala Entusiasta de Métodos Ágeis Não trabalho para Puppet Labs @dcsobral
  4. 4. Quem são vocês? Quem é administrador de sistemas?
  5. 5. Quem são vocês? Quem é administrador de sistemas? Quem é programador?
  6. 6. Quem são vocês? Quem é administrador de sistemas? Quem é programador? Quem se considera “devops”?
  7. 7. Quem são vocês? Quem é administrador de sistemas? Quem é programador? Quem se considera “devops”? Quem já conhece o Puppet?
  8. 8. Objetivos Explicar o que é Gestão Automática de Configuração
  9. 9. Objetivos Explicar o que é Gestão Automática de Configuração Apresentar os benefícios
  10. 10. Objetivos Explicar o que é Gestão Automática de Configuração Apresentar os benefícios Resumir alternativas
  11. 11. Objetivos Explicar o que é Gestão Automática de Configuração Apresentar os benefícios Resumir alternativas Descrever o funcionamento do Puppet
  12. 12. Objetivos Explicar o que é Gestão Automática de Configuração Apresentar os benefícios Resumir alternativas Descrever o funcionamento do Puppet Ensinar a usar o Puppet
  13. 13. Objetivos Explicar o que é Gestão Automática de Configuração  5 minutos Apresentar os benefícios  5 minutos Resumir alternativas  5 minutos Descrever o funcionamento do Puppet  25 minutos Ensinar a usar o Puppet  55 minutos
  14. 14. Configuração Tudo aquilo que pode ser modificado, e modifique a funcionalidade do sistema:  Arquivos de Configuração  Usuários Cadastrados  Serviços Rodando  Pacotes Instalados  etc  etc  Etc
  15. 15. Gestão Aplicar nos servidores a configuração desejada Monitorar servidores contra mudanças Corrigir alterações da configuração esperada
  16. 16. Gestão Automática deConfiguração Funciona mais ou menos assim:  Servidor rio20prod01:  Servidor de Linux de Produção com Wordpress servindo o site rio20
  17. 17. Meus benefícios favoritos: Padronização dos Servidores  Todos servidores de um determinado tipo tem exatamente a mesma configuração relevante Agilidade para Mudar a Configuração Controle de versão  Você sabe quando e o que mudou na configuração  Você pode voltar a versões anteriores  Você tem um backup de como o servidor deve ser Menor Tempo para se Criar Novos Servidores
  18. 18. Qual a diferença? CFEngine  O mais antigo  Rápido  Consome poucos recursos Chef  Configuração escrita em Ruby  Muito Flexível Salt Stack  Configuração via YAML (muito simples, intuitivo) ANSIBLE  Acessa servidores via SSH  Não requer daemons rodando nos clientes
  19. 19. Vantagens do Puppet Linguagem declarativa  Menos “bugs” de configuração  Mais configuração do que programação Configurações Idempotentes  Pode-se aplicar uma configuração já aplicada em erros Completamente extensível  Todos elementos primitivos do Puppet podem ser estendidos pelo usuário em Ruby Protocolos Padrões (HTTPS, certificados)  Tecnologia conhecida
  20. 20. Modos De Funcionamento Cliente/Servidor  Daemon no cliente consultando servidor periodicamente  Daemon no cliente ativado a partir do servidor  Processo no cliente disparado via crontab  Processo no cliente disparado manualmente Stand-Alone  Via crontab  Manualmente
  21. 21. Visão por alto
  22. 22. Cliente executando
  23. 23. Servidor preparando catálogo
  24. 24. Cliente processando o catálogoOrdena Dependências entre Recursos Confere Estado de Cada Recurso • Modifica Configuração do Recurso • Notifica Outros Recursos Envia Relatório para o Puppet Master
  25. 25. Fatos? Informações básicas a respeito do cliente:  Qual é o sistema operacional?  Qual é a versão?  A máquina é virtual ou física?  Quantos processadores?  Quanta memória? Não inclui, por exemplo:  Quais pacotes estão instalados  Quais usuários estão cadastrados Mas podem ser extendidos!
  26. 26. Catálogo? Conjunto de recursos, seus atributos e suas dependências Recurso:  Um arquivo (conteúdo, permissão, dono, etc)  Um serviço (se deve estar rodando ou não)  Um pacote (se deve estar instalado ou não, versão)  Um usuário (nome, uid, grupos, home, etc)  Uma entrada na crontab (o que executar, quando)  etc Pode-se criar novos recursos!
  27. 27. Recurso user { ze: ensure => present, gid => 1000, require => Group[ze], }
  28. 28. Recurso Tipo Nome user { ze: Atributos ensure => present, gid => 1000, require => Group[ze], } MetaAtributo
  29. 29. Recurso Tipo Determina o que será configurado• “user” cria, modifica e remove usuários Nome Identificação única de um recurso• Em alguns casos, provê informações adicionais• O nome de “user” é o nome do usuário sendo configurado Atributos Descrevem a configuração do recurso• “ensure” de “user” determina se o usuário deve estar presente ou não• “gid” de “user” informa o grupo primário
  30. 30. Meta Atributos Comuns a todos os recursos Descrevem relações entre recursos ou forma de funcionamento Exemplos:  Dependência (require, before)  Gatilhos (notify, subscribe)  Categorização (tag)  Nome alternativo (alias)  Dia e Horário em que pode ser aplicado (schedule)
  31. 31. Elementos de Organização Site Contém todo o resto Nó Configuração de um servidor Módulo Agrupamento temático de configurações Classe Grupo de configurações Definição Grupo de configurações parametrizado Recurso Um elemento de configuração Arquivo Arquivos servidos pelo puppet Template Arquivos servidos pelo puppet parametrizados
  32. 32. Árvore do Puppet
  33. 33. Organização de Recursos Site Nós Módulos Classes Definições Recursos Arquivos Templates Classes Classes Classes Classes Definições Definições Definições Definições Recursos Arquivos Recursos Recursos Templates
  34. 34. Um exemplo prático: o nó Classenode "rio20prod01" { include linux-server rio20def { rio20prod01: site => rio20.dom.com.br, }} Definição Parâmetro da Definição
  35. 35. Um exemplo prático: o módulo
  36. 36. Um exemplo prático: a classe Outras Classesclass linux-server { # Include classes common to alllinux servers include localmta include ntpdate include puppet::conf include ssh::server include sudoers
  37. 37. Um exemplo prático: a definição Parâmetro a ser recebido Recursosdefine rio20def($site) { include wordpress package { php5: ensure => installed, } wordpress::app { "rio20": password => "senha", site => "$site", } deployers { rio20: } file { /etc/apache2/apache2.conf: ensure => present, owner => root, group => root, Definições mode => 644, source => puppet:///files/rio20/apache2/apache2.conf, require => Package[apache2], notify => Service[apache2], } file { /etc/php5/apache2/php.ini: ensure => present,
  38. 38. Classes vs Definições Também é permitido às classes serem parametrizadas  Capacidade relativamente recente Uma classe só pode ser inclusa uma única vez Definições podem ser inclusas múltiplas vezes, com múltiplos nomes
  39. 39. Um exemplo prático: o recurso Tipo Nomefile { "/etc/apache2/sites-available/default": ensure => present, owner => root, group => root, Atributos mode => 644, content => template(wordpress/apache.erb), require => Package[apache2], notify => Service[apache2], MetaAtributos }
  40. 40. Proposta Não usaremos o Puppet Master Usaremos o Puppet stand-alone manual Vamos criar a configuração em etapas A cada etapa, introduzimos um recurso novo A propósito,  Essa é a forma como eu crio minhas configurações.
  41. 41. O exercício Criar uma configuração para aplicações PHP Servindo páginas dinâmicas via Apache E páginas estáticas via Nginx Código gerado durante a Agile Brazil 2012:  https://github.com/dcsobral/puppet-demo- agilebrazil2012 Exemplo de módulo com essas características:  https://github.com/dcsobral/puppet-wordpress  Nota: não usar em produção – versão do github não seta keys e salts (bom exercício – ver módulo de mysql para idéias)
  42. 42. Comandos Úteis puppet Pega configurações no Puppet agent Master puppet apply Pega configurações de um arquivo puppet resource Examina ou modifica um resource puppet describe Lista resources e explica atributos
  43. 43. Um início modesto Pacote Apache2 Serviço Apache2
  44. 44. Dependências Serviço antes de Pacote? Require e Before
  45. 45. Arquivos de Configuração Número de arquivos abertos: nofile
  46. 46. Completando Mod-rewrite Mod-deflate PHP5
  47. 47. Temos Uma Classe! Classe Incluindo classes Nodes
  48. 48. NGINX e defines Define Classe com parâmetro
  49. 49. Conflito de Porta e Templates Variáveis Ports.conf e o ERB Template
  50. 50. Carregando Novas Configurações Notify e Subscribe
  51. 51. Instalando, ou não, o NGINX If
  52. 52. for now...
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×