SlideShare uma empresa Scribd logo
1 de 65
Daniel Capó Sobral
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
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
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 Puppet?
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 funcionamento do Puppet
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
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
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
Gestão
 Aplicar nos servidores a configuração desejada
 Monitorar servidores contra mudanças
 Corrigir alterações da configuração esperada
Gestão Automática de
Configuração
 Funciona mais ou menos assim:

   Servidor rio20prod01:
       Servidor de Linux de Produção com Wordpress servindo o site
        rio20
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
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
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
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
Visão por alto
Cliente executando
Servidor preparando catálogo
Cliente processando o catálogo
Ordena Dependências entre Recursos


    Confere Estado de Cada Recurso
    • Modifica Configuração do Recurso
    • Notifica Outros Recursos



         Envia Relatório para o Puppet Master
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!
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!
Recurso
    user { 'ze':
        ensure => present,
        gid      => 1000,
        require =>
    Group['ze'],
    }
Recurso
  Tipo                     Nome

          user { 'ze':
                                      Atributos
            ensure => present,
            gid => 1000,
            require => Group['ze'],
          }



     MetaAtributo
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
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)
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
Árvore do Puppet
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
Um exemplo prático: o nó
                            Classe
node "rio20prod01" {
    include linux-server
    rio20def { 'rio20prod01':
         site => 'rio20.dom.com.br',
    }
}
  Definição        Parâmetro da Definição
Um exemplo prático: o módulo
Um exemplo prático: a classe
                       Outras Classes
class linux-server {
    # Include classes common to all
linux servers
    include localmta
    include ntpdate
    include puppet::conf
    include ssh::server
    include sudoers
Um exemplo prático: a definição
                     Parâmetro a ser recebido
                                             Recursos
define 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,
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
Um exemplo prático: o recurso
      Tipo                   Nome
file { "/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
   }
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.
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)
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
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...

Mais conteúdo relacionado

Mais procurados

Puppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGilPuppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGiljefesrodrigues
 
Gerenciamento de Configurações - Puppet
Gerenciamento de Configurações - PuppetGerenciamento de Configurações - Puppet
Gerenciamento de Configurações - PuppetRoberto Scudeller
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveJose Augusto Carvalho
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilJose Augusto Carvalho
 
Gerenciamento de configuração com puppet
Gerenciamento de configuração com puppetGerenciamento de configuração com puppet
Gerenciamento de configuração com puppetElton Simões
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#Leandro Silva
 
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...tdc-globalcode
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao TerraformLeandro Silva
 
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANTAutomação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANTelliando dias
 
Automação de Ambientes com Puppet
Automação de Ambientes com Puppet Automação de Ambientes com Puppet
Automação de Ambientes com Puppet 4LinuxCursos
 
Hotspot Green and Blue Label - Switching the labels!
Hotspot Green and Blue Label - Switching the labels!Hotspot Green and Blue Label - Switching the labels!
Hotspot Green and Blue Label - Switching the labels!Iuri Andreazza
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosDiego Santos
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosEduardo Legatti
 
Como o Cucumber Funciona
Como o Cucumber FuncionaComo o Cucumber Funciona
Como o Cucumber FuncionaLaís Berlatto
 
Opennebula Introdução
Opennebula IntroduçãoOpennebula Introdução
Opennebula IntroduçãoLuís Eduardo
 

Mais procurados (20)

Puppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGilPuppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGil
 
Gerenciamento de Configurações - Puppet
Gerenciamento de Configurações - PuppetGerenciamento de Configurações - Puppet
Gerenciamento de Configurações - Puppet
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e Mcollective
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
 
Consegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + PuppetConsegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + Puppet
 
Gerenciamento de configuração com puppet
Gerenciamento de configuração com puppetGerenciamento de configuração com puppet
Gerenciamento de configuração com puppet
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
 
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
 
Maven em 10 minutos
Maven em 10 minutosMaven em 10 minutos
Maven em 10 minutos
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANTAutomação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
 
Maven introdução Muito Rápida
Maven introdução Muito RápidaMaven introdução Muito Rápida
Maven introdução Muito Rápida
 
Automação de Ambientes com Puppet
Automação de Ambientes com Puppet Automação de Ambientes com Puppet
Automação de Ambientes com Puppet
 
Hotspot Green and Blue Label - Switching the labels!
Hotspot Green and Blue Label - Switching the labels!Hotspot Green and Blue Label - Switching the labels!
Hotspot Green and Blue Label - Switching the labels!
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
 
Tutorial codeigniter
Tutorial codeigniterTutorial codeigniter
Tutorial codeigniter
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - Nagios
 
Como o Cucumber Funciona
Como o Cucumber FuncionaComo o Cucumber Funciona
Como o Cucumber Funciona
 
Opennebula Introdução
Opennebula IntroduçãoOpennebula Introdução
Opennebula Introdução
 

Destaque

Icprl12_1-Servidores
Icprl12_1-ServidoresIcprl12_1-Servidores
Icprl12_1-Servidorespjpascoa
 
PHP - Programação para seres humanos
PHP - Programação para seres humanosPHP - Programação para seres humanos
PHP - Programação para seres humanosCaike Souza
 
Dev ninja -> vagrant + virtualbox + chef-solo + git + ec2
Dev ninja  -> vagrant + virtualbox + chef-solo + git + ec2Dev ninja  -> vagrant + virtualbox + chef-solo + git + ec2
Dev ninja -> vagrant + virtualbox + chef-solo + git + ec2Yros
 
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando... IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...Diego Santos
 
Mini-curso de Linux - SECCOMP 2009
Mini-curso de Linux - SECCOMP 2009Mini-curso de Linux - SECCOMP 2009
Mini-curso de Linux - SECCOMP 2009CI&T
 
Instalando e Configurando um Servidor de E-Mails Linux
Instalando e Configurando um Servidor de E-Mails LinuxInstalando e Configurando um Servidor de E-Mails Linux
Instalando e Configurando um Servidor de E-Mails LinuxJefferson Pedro
 
Aula 1 sistema operacional linux
Aula 1 sistema operacional linuxAula 1 sistema operacional linux
Aula 1 sistema operacional linuxRogério Cardoso
 
Redes e Servidores Linux - Guia Prático - Carlos E. Morimoto
Redes e Servidores Linux - Guia Prático - Carlos E. MorimotoRedes e Servidores Linux - Guia Prático - Carlos E. Morimoto
Redes e Servidores Linux - Guia Prático - Carlos E. MorimotoHeber Gutenberg
 
Php e mysql aplicacao completa a partir do zero
Php e mysql   aplicacao completa a partir do zeroPhp e mysql   aplicacao completa a partir do zero
Php e mysql aplicacao completa a partir do zeroFred Ramos
 

Destaque (13)

Icprl12_1-Servidores
Icprl12_1-ServidoresIcprl12_1-Servidores
Icprl12_1-Servidores
 
PHP - Programação para seres humanos
PHP - Programação para seres humanosPHP - Programação para seres humanos
PHP - Programação para seres humanos
 
Dev ninja -> vagrant + virtualbox + chef-solo + git + ec2
Dev ninja  -> vagrant + virtualbox + chef-solo + git + ec2Dev ninja  -> vagrant + virtualbox + chef-solo + git + ec2
Dev ninja -> vagrant + virtualbox + chef-solo + git + ec2
 
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando... IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 
Git Básico
Git BásicoGit Básico
Git Básico
 
Mini-curso de Linux - SECCOMP 2009
Mini-curso de Linux - SECCOMP 2009Mini-curso de Linux - SECCOMP 2009
Mini-curso de Linux - SECCOMP 2009
 
Instalando e Configurando um Servidor de E-Mails Linux
Instalando e Configurando um Servidor de E-Mails LinuxInstalando e Configurando um Servidor de E-Mails Linux
Instalando e Configurando um Servidor de E-Mails Linux
 
Linux - DNS
Linux - DNSLinux - DNS
Linux - DNS
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Firewall linux virtual para windows
Firewall linux virtual para windowsFirewall linux virtual para windows
Firewall linux virtual para windows
 
Aula 1 sistema operacional linux
Aula 1 sistema operacional linuxAula 1 sistema operacional linux
Aula 1 sistema operacional linux
 
Redes e Servidores Linux - Guia Prático - Carlos E. Morimoto
Redes e Servidores Linux - Guia Prático - Carlos E. MorimotoRedes e Servidores Linux - Guia Prático - Carlos E. Morimoto
Redes e Servidores Linux - Guia Prático - Carlos E. Morimoto
 
Php e mysql aplicacao completa a partir do zero
Php e mysql   aplicacao completa a partir do zeroPhp e mysql   aplicacao completa a partir do zero
Php e mysql aplicacao completa a partir do zero
 

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

Administracao de sistemas_com_puppet
Administracao de sistemas_com_puppetAdministracao de sistemas_com_puppet
Administracao de sistemas_com_puppetRamon Mota
 
Gerência de Configurações com o Puppet
Gerência de Configurações com o PuppetGerência de Configurações com o Puppet
Gerência de Configurações com o Puppetpericles_junior
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da ZendDomingos Teruel
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 
Desfrutando os Componentes do Zend Framework
Desfrutando os Componentes do Zend FrameworkDesfrutando os Componentes do Zend Framework
Desfrutando os Componentes do Zend FrameworkFernando Geraldo Mantoan
 
Segurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheirasSegurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheirasBruno Luiz Pereira da Silva
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdoJorge Luís Gregório
 
Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Sérgio Lima
 
ZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoMarcos Bezerra
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetosFrancisco Santos
 
php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetosFer Nando
 
Apostila php orientado a objetos
Apostila php   orientado a objetosApostila php   orientado a objetos
Apostila php orientado a objetosFabiano Rodrigues
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 

Semelhante a Gestão automática de configuração usando puppet (20)

Administracao de sistemas_com_puppet
Administracao de sistemas_com_puppetAdministracao de sistemas_com_puppet
Administracao de sistemas_com_puppet
 
Gerência de Configurações com o Puppet
Gerência de Configurações com o PuppetGerência de Configurações com o Puppet
Gerência de Configurações com o Puppet
 
Puppet overview
Puppet overviewPuppet overview
Puppet overview
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
Desfrutando os Componentes do Zend Framework
Desfrutando os Componentes do Zend FrameworkDesfrutando os Componentes do Zend Framework
Desfrutando os Componentes do Zend Framework
 
Segurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheirasSegurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheiras
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Palestra
PalestraPalestra
Palestra
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
 
Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7
 
ZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoZF Básico - 1. Introdução
ZF Básico - 1. Introdução
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 
php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetos
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 
Apostila php orientado a objetos
Apostila php   orientado a objetosApostila php   orientado a objetos
Apostila php orientado a objetos
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 

Mais de Daniel Sobral

What can scala puzzlers teach us
What can scala puzzlers teach usWhat can scala puzzlers teach us
What can scala puzzlers teach usDaniel Sobral
 
Injecting Clock in Java
Injecting Clock in JavaInjecting Clock in Java
Injecting Clock in JavaDaniel Sobral
 
A JSR-310 Date: Beyond JODA Time
A JSR-310 Date: Beyond JODA TimeA JSR-310 Date: Beyond JODA Time
A JSR-310 Date: Beyond JODA TimeDaniel Sobral
 
Scala 2.10.0 (english version)
Scala 2.10.0 (english version)Scala 2.10.0 (english version)
Scala 2.10.0 (english version)Daniel Sobral
 
Palestra ganeti puppet
Palestra ganeti puppetPalestra ganeti puppet
Palestra ganeti puppetDaniel Sobral
 
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...Daniel Sobral
 

Mais de Daniel Sobral (10)

What can scala puzzlers teach us
What can scala puzzlers teach usWhat can scala puzzlers teach us
What can scala puzzlers teach us
 
Injecting Clock in Java
Injecting Clock in JavaInjecting Clock in Java
Injecting Clock in Java
 
A JSR-310 Date: Beyond JODA Time
A JSR-310 Date: Beyond JODA TimeA JSR-310 Date: Beyond JODA Time
A JSR-310 Date: Beyond JODA Time
 
Scala 2.10.0 (english version)
Scala 2.10.0 (english version)Scala 2.10.0 (english version)
Scala 2.10.0 (english version)
 
Scala 2.10.0
Scala 2.10.0Scala 2.10.0
Scala 2.10.0
 
Palestra ganeti puppet
Palestra ganeti puppetPalestra ganeti puppet
Palestra ganeti puppet
 
Tutorial Puppet
Tutorial PuppetTutorial Puppet
Tutorial Puppet
 
Regex
RegexRegex
Regex
 
Introdução a TDD
Introdução a TDDIntrodução a TDD
Introdução a TDD
 
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
 

Último

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 

Último (8)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

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

  • 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. 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. Quem são vocês?  Quem é administrador de sistemas?
  • 5. Quem são vocês?  Quem é administrador de sistemas?  Quem é programador?
  • 6. Quem são vocês?  Quem é administrador de sistemas?  Quem é programador?  Quem se considera “devops”?
  • 7. Quem são vocês?  Quem é administrador de sistemas?  Quem é programador?  Quem se considera “devops”?  Quem já conhece o Puppet?
  • 8.
  • 9. Objetivos  Explicar o que é Gestão Automática de Configuração
  • 10. Objetivos  Explicar o que é Gestão Automática de Configuração  Apresentar os benefícios
  • 11. Objetivos  Explicar o que é Gestão Automática de Configuração  Apresentar os benefícios  Resumir alternativas
  • 12. Objetivos  Explicar o que é Gestão Automática de Configuração  Apresentar os benefícios  Resumir alternativas  Descrever o funcionamento do Puppet
  • 13. 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
  • 14. 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
  • 15.
  • 16. 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
  • 17. Gestão  Aplicar nos servidores a configuração desejada  Monitorar servidores contra mudanças  Corrigir alterações da configuração esperada
  • 18. Gestão Automática de Configuração  Funciona mais ou menos assim:  Servidor rio20prod01:  Servidor de Linux de Produção com Wordpress servindo o site rio20
  • 19.
  • 20.
  • 21. 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
  • 22.
  • 23. 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
  • 24. 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
  • 25.
  • 26. 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
  • 30. Cliente processando o catálogo Ordena Dependências entre Recursos Confere Estado de Cada Recurso • Modifica Configuração do Recurso • Notifica Outros Recursos Envia Relatório para o Puppet Master
  • 31. 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!
  • 32. 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!
  • 33. Recurso user { 'ze': ensure => present, gid => 1000, require => Group['ze'], }
  • 34. Recurso Tipo Nome user { 'ze': Atributos ensure => present, gid => 1000, require => Group['ze'], } MetaAtributo
  • 35. 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
  • 36. 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)
  • 37.
  • 38. 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
  • 40. 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
  • 41.
  • 42. Um exemplo prático: o nó Classe node "rio20prod01" { include linux-server rio20def { 'rio20prod01': site => 'rio20.dom.com.br', } } Definição Parâmetro da Definição
  • 43.
  • 44. Um exemplo prático: o módulo
  • 45.
  • 46. Um exemplo prático: a classe Outras Classes class linux-server { # Include classes common to all linux servers include localmta include ntpdate include puppet::conf include ssh::server include sudoers
  • 47.
  • 48. Um exemplo prático: a definição Parâmetro a ser recebido Recursos define 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,
  • 49. 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
  • 50.
  • 51. Um exemplo prático: o recurso Tipo Nome file { "/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 }
  • 52.
  • 53. 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.
  • 54. 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)
  • 55. 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
  • 56. Um início modesto  Pacote Apache2  Serviço Apache2
  • 57. Dependências  Serviço antes de Pacote?  Require e Before
  • 58. Arquivos de Configuração  Número de arquivos abertos: nofile
  • 60. Temos Uma Classe!  Classe  Incluindo classes  Nodes
  • 61. NGINX e defines  Define  Classe com parâmetro
  • 62. Conflito de Porta e Templates  Variáveis  Ports.conf e o ERB Template
  • 64. Instalando, ou não, o NGINX  If