SlideShare uma empresa Scribd logo
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?
Gestão automática de configuração usando 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
Gestão automática de configuração usando puppet
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
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
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
Gestão automática de configuração usando puppet
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
Gestão automática de configuração usando puppet
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)
Gestão automática de configuração usando puppet
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
Gestão automática de configuração usando puppet
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
Gestão automática de configuração usando puppet
Um exemplo prático: o módulo
Gestão automática de configuração usando puppet
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
Gestão automática de configuração usando puppet
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
Gestão automática de configuração usando puppet
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
   }
Gestão automática de configuração usando puppet
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 áGil
jefesrodrigues
 
Gerenciamento de Configurações - Puppet
Gerenciamento de Configurações - PuppetGerenciamento de Configurações - Puppet
Gerenciamento de Configurações - Puppet
Roberto 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 Mcollective
Jose Augusto Carvalho
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
Jose Augusto Carvalho
 
Consegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + PuppetConsegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + Puppet
Jose Augusto Carvalho
 
Gerenciamento de configuração com puppet
Gerenciamento de configuração com puppetGerenciamento de configuração com puppet
Gerenciamento de configuração com puppet
Elton Simões
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
Felipe Vargas Rigo
 
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
 
Maven em 10 minutos
Maven em 10 minutosMaven em 10 minutos
Maven em 10 minutos
Rodrigo Branas
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
Leandro 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 ANT
elliando dias
 
Maven introdução Muito Rápida
Maven introdução Muito RápidaMaven introdução Muito Rápida
Maven introdução Muito Rápida
Rudson Kiyoshi Souza Carvalho
 
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 automatizados
Diego Santos
 
Tutorial codeigniter
Tutorial codeigniterTutorial codeigniter
Tutorial codeigniter
Harry Möbbs Júnior
 
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
Eduardo Legatti
 
Como o Cucumber Funciona
Como o Cucumber FuncionaComo o Cucumber Funciona
Como o Cucumber Funciona
Laís Berlatto
 
Opennebula Introdução
Opennebula IntroduçãoOpennebula Introdução
Opennebula Introdução
Luí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-Servidores
pjpascoa
 
PHP - Programação para seres humanos
PHP - Programação para seres humanosPHP - Programação para seres humanos
PHP - Programação para seres humanos
Caike 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 + ec2
Yros
 
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
 
Git Básico
Git BásicoGit Básico
Git Básico
Bruno Croci
 
Mini-curso de Linux - SECCOMP 2009
Mini-curso de Linux - SECCOMP 2009Mini-curso de Linux - SECCOMP 2009
Mini-curso de Linux - SECCOMP 2009
CI&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 Linux
Jefferson Pedro
 
Linux - DNS
Linux - DNSLinux - DNS
Linux - DNS
Frederico Madeira
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
André Justi
 
Firewall linux virtual para windows
Firewall linux virtual para windowsFirewall linux virtual para windows
Firewall linux virtual para windows
deepCo. Inovação e Tecnologia
 
Aula 1 sistema operacional linux
Aula 1 sistema operacional linuxAula 1 sistema operacional linux
Aula 1 sistema operacional linux
Rogé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. Morimoto
Heber 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 zero
Fred 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_puppet
Ramon 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 Puppet
pericles_junior
 
Puppet overview
Puppet overviewPuppet overview
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
Guilherme Blanco
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
Domingos Teruel
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
Elton Minetto
 
Desfrutando os Componentes do Zend Framework
Desfrutando os Componentes do Zend FrameworkDesfrutando os Componentes do Zend Framework
Desfrutando os Componentes do Zend Framework
Fernando 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 trincheiras
Bruno 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 PHP
Arlindo Santos
 
Palestra
PalestraPalestra
Java Seminar
Java SeminarJava Seminar
Java Seminar
armeniocardoso
 
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 pdo
Jorge 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 7
Sérgio Lima
 
ZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoZF Básico - 1. Introdução
ZF Básico - 1. Introdução
Marcos Bezerra
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
Francisco Santos
 
php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetos
Fer Nando
 
Apostila php orientado a objetos
Apostila php   orientado a objetosApostila php   orientado a objetos
Apostila php orientado a objetos
Fabiano Rodrigues
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
Elisabete Pantoja
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
Rangel 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
 
Apostila php orientado a objetos
Apostila php   orientado a objetosApostila php   orientado a objetos
Apostila php orientado a objetos
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 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 us
Daniel Sobral
 
Injecting Clock in Java
Injecting Clock in JavaInjecting Clock in Java
Injecting Clock in Java
Daniel 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 Time
Daniel 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
 
Scala 2.10.0
Scala 2.10.0Scala 2.10.0
Scala 2.10.0
Daniel Sobral
 
Palestra ganeti puppet
Palestra ganeti puppetPalestra ganeti puppet
Palestra ganeti puppet
Daniel Sobral
 
Tutorial Puppet
Tutorial PuppetTutorial Puppet
Tutorial Puppet
Daniel Sobral
 
Regex
RegexRegex
Introdução a TDD
Introdução a TDDIntrodução a TDD
Introdução a TDD
Daniel 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

INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
Faga1939
 
Apresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimizaçãoApresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimização
snerdct
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
Ismael Ash
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
ronaldos10
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ismael Ash
 
Aula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústriaAula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústria
zetec10
 

Último (6)

INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
 
Apresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimizaçãoApresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimização
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
 
Aula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústriaAula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústria
 

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?
  • 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
  • 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
  • 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
  • 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
  • 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)
  • 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
  • 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
  • 44. Um exemplo prático: o módulo
  • 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
  • 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
  • 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 }
  • 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