SlideShare uma empresa Scribd logo
1 de 40
Área, dia/mês/ano
https://puppetlabs.com
https://github.com/puppetlabs
Área, dia/mês/ano
Administração Manual
• Não existe um padrão
• Não existem procedimentos
• Cada administrador faz do seu jeito
• Tarefas repetitivas
- Criação de usuários
- Elaboração de scripts
- Configuração de serviços
- Configurações de monitoramento
- Criação de imagens de ambientes
- Configuração do sistema operacional
- Instalação, atualização e remoção de pacotes
2
Área, dia/mês/ano
O que é o Puppet?
O que está acontecendo?
ESTADO DESEJADO
sapato => present
Área, dia/mês/ano
Por que usar o Puppet?
• Economia de tempo
• Evita erros humanos
• Documenta o setup de um servidor
• Fim dos longos e estressantes deploys em servidores
• O puppet tem por padrão certificado de autenticação SSL
• Facilita o trabalho dos administradores dos servidores
• Padroniza as configurações utilizadas possibilitando auditoria
dessas configurações
• Centraliza a adminstração
• Acelera a criação e a configuração dos servidores
4
Área, dia/mês/ano
Por que usar o Puppet?
• Roda em todos SO‟s comuns : Linux, Mac, Windows...
• Vantagens em servidores idênticos ou similares.
• Controle de versão
• É utilizado até quando se tem um único servidor
• Uma outra utilização é quando temos que construir uma
workstation de desenvolvimento de um modo mais
consistente, conseguimos algo praticamente idêntico do
ambiente de produção para cada desenvolvedor.
5
Área, dia/mês/ano
Por que usar o Puppet?
Alternativas:
• 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
- Não requer agentes rodando nos nós
6
Área, dia/mês/ano
Por que usar o Puppet?
Vantagens do Puppet
• Linguagem declarativa
- Menos Bugs de configuração
- Mais configurações do que programação
• Configurações idempotentes
• Completamente extensível
- Todos elementos primitivos do Puppet podem
ser estendidos pelo usuário em Ruby.
7
Área, dia/mês/ano
E se não utilizarmos o Puppet?
• Perde-se tempo, dinheiro e energia.
• Comete-se mais erros, provoca downtime, fere sua
reputação.
• No caso de um problema em um servidor,
reconstrui-lo ou pior, reconstruir vários seria uma
grande tarefa resultando em mais downtime, erros,
etc.
8
Área, dia/mês/ano
Puppet is serious business!
Algumas das empresas que utilizam Puppet:
9
Área, dia/mês/ano
Puppet is serious business!
Por trás do Puppet encontramos investidores como:
1
0
Área, dia/mês/ano
Puppet is serious business!
• Ferramenta Open – Apache License
• Empresa oferece suporte e uma versão Enterprise
• Feita por um SysAdmin para SysAdmin
• Desenhada com base em DevOps
• Funciona em modo cliente/servidor e autônomo
1
1
Área, dia/mês/ano
Resumindo
• Puppet é um Software que permite automação.
Configuramos um servidor central e os agents
sincronizam com ele.
• É um sistema descritivo. Decidimos se um arquivo
deve existir, definimos permissões, conteúdo,
decidimos se um pacote de software deve ser
instalado, e a cada execução ele irá garantir que
tudo fique do jeito que foi especificado
• Podemos fazer deploy da App e ainda ter o controle
de versão!
1
2
Área, dia/mês/ano
Funcionamento do modo
Cliente/Servidor do Puppet
• O agente gera um certificado digital
• O Puppet master precisa autorizar esse certificado
• Sem a autorização o agente não comunica com o
master
• Toda a comunicação é segura!
1
3
Área, dia/mês/ano
Funcionamento do modo
Cliente/Servidor do Puppet
1
4
Puppet Master
Puppet Agent
8139
Server
8140
Client
Área, dia/mês/ano
Funcionamento do modo
Cliente/Servidor do Puppet
1
5
Área, dia/mês/ano
Puppet Resources
Área, dia/mês/ano
Resources
Recurso é a unidade fundamental da modelagem
Cada recurso define um aspecto do sistema
São como Legos
Recursos são
combinados para
que o sistema
chegue ao estado
desejado
A ordem não importa!
Área, dia/mês/ano
Resources
Os recursos são escritos em uma linguagem de modelagem declarativa
Exemplo:
Sintaxe do recurso:
• Tipo do recurso
• Bloco ( colchetes )
• Título do recurso separado
do corpo por „:‟
• Corpo consiste em pares de
atributo e valor
• Tipo e título devem ser únicos
Área, dia/mês/ano
Resources
Recursos similares podem ser agrupados em Tipos
A descrição de um recurso é abstraída de sua implementação, o que permite
uma descrição ser válida para qualquer tipo de sistema. Isto devido a sua camada
De abstração de recursos (RAL)
Área, dia/mês/ano
Resources
RAL :
Cada recurso possui
Um ou mais provedores
Provedores fazem a
ligação entre os tipos de
recurso e o SO correto.
Área, dia/mês/ano
Resources
Área, dia/mês/ano
Resources Types
Exemplo de abordagem de implementação:
Pacotes
* Suporta 23 tipos de provedores de pacote
* Declaramos se o pacote está presente ou ausente
* Declaramos que o pacote sempre deverá estar em sua última
versão
Serviço
* Declaramos se o serviço está sempre rodando ou não
* Declaramos se o serviço será carregado no boot
* Declaramos se o serviço depende de um pacote ou arquivo
Arquivo
* Especificamos permissões e donos
* Declaramos diretórios e links simbólicos
Área, dia/mês/ano
Resources Types
Exemplo instalação, configuração e inicialização do Apache
Como seria no CentOs
# yum install httpd
# chkconfig httpd on
# cp ~/httpd.conf /etc/httpd/conf/
# service httpd start
Área, dia/mês/ano
Resources Types
Exemplo instalação, configuração e inicialização do Apache
Como seria no Debian
# aptitude install apache2
# insserv apache2
# cp ~/httpd.conf /etc/apache2/
# invoke-rc.d apache2 start
Área, dia/mês/ano
Resources Types
No Puppet com apenas uma abordagem
package { 'apache2':
ensure => present,
}
service { 'apache2':
ensure => running,
enable => true,
}
file { '/etc/apache2/httpd.conf':
ensure => present,
mode => „0644‟,
owner => „root‟,
group => „root‟,
ensure => “puppet:///files/apache/httpd.conf”,
}
Área, dia/mês/ano
Resources Types
Exemplo instalação, configuração do editor, ( independe do SO )
class editor {
$vim = $operatingsystem ? {
'RedHat' => 'vim-enhanced',
'CentOS' => 'vim-enhanced',
'Fedora' => 'vim-enhanced',
default => 'vim',
}
package { "$vim":
ensure => present,
alias => 'vim',
# provider => yum, apt, ports?
}
}
node “jbossas01hom.network.ctbc” {
include editor
}
node “jbossas02hom.network.ctbc” {
include editor
}
Área, dia/mês/ano
Resources Types
Exemplo classe base – padronizando nós
class sudoers {
package { 'sudoers':
ensure => installed,
}
file { '/etc/sudoers':
source => 'puppet:///files/sudo/sudoers',
require => Package['sudoers'],
owner => 'root',
group => 'root',
mode => 440,
}
}
Pacote sudoers
• Garantir que esteja
instalado
Arquivo /etc/sudoers
• Conteúdo comum a
todas as máquinas
• Requer pacote sudoers
• Usuário root
• Grupo root
• Permissão 440
Área, dia/mês/ano
Resources Types
Exemplo classe base
class ntpdate {
package { 'ntpdate':
ensure => installed,
}
cron { 'sincroniza horario':
user => 'root',
command => '/usr/sbin/ntpdate ntp.dominio',
minute => 0,
}
}
Pacote ntpdate
• Garantir que esteja
instalado
cron
• Usuário root
• Comando 'ntpdate
ntp.dominio'
• Executar de hora
em hora
Área, dia/mês/ano
Resources Types
Exemplo classe base
class locale {
package { 'locales':
ensure => installed,
}
file { '/etc/default/locale':
ensure => present,
content => 'LANG=pt_BR.UTF-8',
require => Package['locales'],
}
file { '/etc/locale.gen':
ensure => present,
source => '/root/exemplo/locale.gen',
require => Package['locales'],
}
exec { '/usr/sbin/locale-gen':
subscribe => File['/etc/locale.gen'],
refreshonly => true,
require => [ Package['locales'], File['/etc/locale.gen'] ],
}
}
Pacote locales - instalado
Arquivo /etc/default/locale -
conteúdo
Arquivo /etc/locale.gen - conteúdo
Executar /usr/sbin/locale.gen
• Sempre que locale.gen for
alterado
• Só quando houver
alteração
• Requer pacote locales e
arquivo locale.gen
Área, dia/mês/ano
Resources Types
Exemplo classe base
class padrao {
include sudoers
include ntpdate
include locale
}
node default{
include padrao
}
Aplicar sudoers
Aplicar ntpdate
Aplicar locale
Todos os nós!
• Aplicar configuração padrão
Área, dia/mês/ano
Resources Types
Exemplo alterar dados em linha de comando
puppet:~# puppet resourse user paulohac
user { paulohac':
ensure => 'absent'
}
puppet:~# puppet resourse user paulohac ensure=present
notice: /User[paulohac]/ensure: created
user { „paulohac':
ensure => 'present'
}
puppet:~# puppet resourse user paulohac ensure=absent
notice: /User[paulohac]/ensure: removed
user { „paulohac':
ensure => 'absent'
}
Área, dia/mês/ano
Verificando mudanças
Puppet Dashboard
Área, dia/mês/ano
Puppet Dashboard
Área, dia/mês/ano
Para a próxima semana
Área, dia/mês/ano
Procedimento manual de instalação
do Agente EM12c em um JBoss
• Acessar servidor via SSH
• Criar diretório para o agente e as bibliotecas
• Deployar .jar de monitoramento
• Copiar vários jars para um diretório de bibliotecas para que o
EM possa reconhecer.
• Modificar a permissão para jboss
• (Re)iniciar servidor
• Talvez remover agente antigo ( Nagios )
3
5
Área, dia/mês/ano
Procedimento manual de instalação
do Agente EM12c em um JBoss
Em números:
200 SERVIDORES
20 MINUTOS POR SERVIDOR
4000 MINUTOS OU 67 HORAS
8 DIAS TRABALHANDO
• Sem documentação
• Sem rastreamento de mudanças
3
6
Área, dia/mês/ano
Resultado concreto
& Recomendações
Área, dia/mês/ano
Resultados
• Documentação Instantânea
• Processos bem definidos
• Ambiente Padronizado
• Restore e backup de mudanças
• Tarefas Automatizadas
Área, dia/mês/ano
Recomendações
• Usar o puppet para executar e controlar mudanças na infraestrutura
• Parar de administrar e começar a desenvolver a infraestrutura
• Nova demanda? Já executar utilizando o Puppet, escrevendo classes
e módulos para executar apenas uma vez e reaproveitar o código
depois.
• Versionar as configurações (svn) criadas no Puppet.
• Escreves módulos e classes da forma mais flexível possível.
• Utilizar módulos prontos do GitHub e PuppetForge.
Área, dia/mês/ano
Puppet web
http://www.puppetlabs.com
http://www.puppetlabs.com/blog/
Twitter
@puppetlabs
@puppetmasterd
IRC
irc.freenode.org
#puppet
#puppet-br

Mais conteúdo relacionado

Mais procurados

Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010lucashungaro
 
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
 
Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Jose Augusto Carvalho
 
Otimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - TchelinuxOtimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - TchelinuxElton Minetto
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e SphinxElton Minetto
 
Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanElton Minetto
 
Otimizacao de aplicações Zend Framework
Otimizacao de aplicações Zend FrameworkOtimizacao de aplicações Zend Framework
Otimizacao de aplicações Zend FrameworkElton Minetto
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Fabrízio Mello
 
Temperatura Zabbix Procedimento Temper Usb
Temperatura Zabbix Procedimento Temper UsbTemperatura Zabbix Procedimento Temper Usb
Temperatura Zabbix Procedimento Temper UsbThiago Santos
 

Mais procurados (18)

Consegi 2011: Puppet
Consegi 2011: PuppetConsegi 2011: Puppet
Consegi 2011: Puppet
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
 
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
 
Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)
 
Trabalhando com Módulos no Puppet
Trabalhando com Módulos no PuppetTrabalhando com Módulos no Puppet
Trabalhando com Módulos no Puppet
 
Otimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - TchelinuxOtimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - Tchelinux
 
Docker + Django
Docker + DjangoDocker + Django
Docker + Django
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
 
Unix te da asas
Unix te da asasUnix te da asas
Unix te da asas
 
Java 9, 10 e ... 11
Java 9, 10 e ... 11Java 9, 10 e ... 11
Java 9, 10 e ... 11
 
Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando Gearman
 
Otimizacao de aplicações Zend Framework
Otimizacao de aplicações Zend FrameworkOtimizacao de aplicações Zend Framework
Otimizacao de aplicações Zend Framework
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
 
Java 08
Java 08Java 08
Java 08
 
Temperatura Zabbix Procedimento Temper Usb
Temperatura Zabbix Procedimento Temper UsbTemperatura Zabbix Procedimento Temper Usb
Temperatura Zabbix Procedimento Temper Usb
 
Trab linux+sarg
Trab linux+sargTrab linux+sarg
Trab linux+sarg
 
As novidades da nova versão do Java 9
As novidades da nova versão do Java 9As novidades da nova versão do Java 9
As novidades da nova versão do Java 9
 

Destaque (9)

Debiandaydf 2014
Debiandaydf 2014Debiandaydf 2014
Debiandaydf 2014
 
Visão rápida sobre o SCRUM
Visão rápida sobre o SCRUMVisão rápida sobre o SCRUM
Visão rápida sobre o SCRUM
 
Faculdade jk
Faculdade jkFaculdade jk
Faculdade jk
 
Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
 
Freedomday - Fajesu - 2013
Freedomday - Fajesu - 2013Freedomday - Fajesu - 2013
Freedomday - Fajesu - 2013
 
Guia do Papel e Responsabilidade do Scrum Master
Guia do Papel e Responsabilidade do Scrum MasterGuia do Papel e Responsabilidade do Scrum Master
Guia do Papel e Responsabilidade do Scrum Master
 
Scrum guide-portuguese-br
Scrum guide-portuguese-brScrum guide-portuguese-br
Scrum guide-portuguese-br
 
Apostila Scrum: Fundamentos do Scrum
Apostila Scrum: Fundamentos do ScrumApostila Scrum: Fundamentos do Scrum
Apostila Scrum: Fundamentos do Scrum
 
Um guia definitivo para o Scrum em Português
Um guia definitivo para o Scrum em PortuguêsUm guia definitivo para o Scrum em Português
Um guia definitivo para o Scrum em Português
 

Semelhante a Puppet overview

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
 
Oficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesOficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesJose Augusto Carvalho
 
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
 
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
 
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
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizadosThiago Rodrigues
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014MySQL Brasil
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Getup Cloud
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014MySQL Brasil
 
Project HA
Project HAProject HA
Project HAKarpv
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAmazon Web Services LATAM
 
Infraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvemInfraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvemFernando Ike
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilJose Augusto Carvalho
 

Semelhante a Puppet overview (20)

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
 
Oficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesOficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar Configurações
 
Igor Oliveira - Puppet
Igor Oliveira - PuppetIgor Oliveira - Puppet
Igor Oliveira - Puppet
 
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
 
Introdução ao Maven
Introdução ao MavenIntrodução ao Maven
Introdução ao Maven
 
Gerenciamento de configuração com puppet
Gerenciamento de configuração com puppetGerenciamento de configuração com puppet
Gerenciamento de configuração com puppet
 
Apresentacao_Puppet
Apresentacao_PuppetApresentacao_Puppet
Apresentacao_Puppet
 
Automação de Ambientes com Puppet
Automação de Ambientes com Puppet Automação de Ambientes com Puppet
Automação de Ambientes com Puppet
 
Gentoo
GentooGentoo
Gentoo
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 
Infrastructure Testing
Infrastructure TestingInfrastructure Testing
Infrastructure Testing
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014
 
Project HA
Project HAProject HA
Project HA
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 
Infraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvemInfraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvem
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
 

Puppet overview

  • 2. Área, dia/mês/ano Administração Manual • Não existe um padrão • Não existem procedimentos • Cada administrador faz do seu jeito • Tarefas repetitivas - Criação de usuários - Elaboração de scripts - Configuração de serviços - Configurações de monitoramento - Criação de imagens de ambientes - Configuração do sistema operacional - Instalação, atualização e remoção de pacotes 2
  • 3. Área, dia/mês/ano O que é o Puppet? O que está acontecendo? ESTADO DESEJADO sapato => present
  • 4. Área, dia/mês/ano Por que usar o Puppet? • Economia de tempo • Evita erros humanos • Documenta o setup de um servidor • Fim dos longos e estressantes deploys em servidores • O puppet tem por padrão certificado de autenticação SSL • Facilita o trabalho dos administradores dos servidores • Padroniza as configurações utilizadas possibilitando auditoria dessas configurações • Centraliza a adminstração • Acelera a criação e a configuração dos servidores 4
  • 5. Área, dia/mês/ano Por que usar o Puppet? • Roda em todos SO‟s comuns : Linux, Mac, Windows... • Vantagens em servidores idênticos ou similares. • Controle de versão • É utilizado até quando se tem um único servidor • Uma outra utilização é quando temos que construir uma workstation de desenvolvimento de um modo mais consistente, conseguimos algo praticamente idêntico do ambiente de produção para cada desenvolvedor. 5
  • 6. Área, dia/mês/ano Por que usar o Puppet? Alternativas: • 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 - Não requer agentes rodando nos nós 6
  • 7. Área, dia/mês/ano Por que usar o Puppet? Vantagens do Puppet • Linguagem declarativa - Menos Bugs de configuração - Mais configurações do que programação • Configurações idempotentes • Completamente extensível - Todos elementos primitivos do Puppet podem ser estendidos pelo usuário em Ruby. 7
  • 8. Área, dia/mês/ano E se não utilizarmos o Puppet? • Perde-se tempo, dinheiro e energia. • Comete-se mais erros, provoca downtime, fere sua reputação. • No caso de um problema em um servidor, reconstrui-lo ou pior, reconstruir vários seria uma grande tarefa resultando em mais downtime, erros, etc. 8
  • 9. Área, dia/mês/ano Puppet is serious business! Algumas das empresas que utilizam Puppet: 9
  • 10. Área, dia/mês/ano Puppet is serious business! Por trás do Puppet encontramos investidores como: 1 0
  • 11. Área, dia/mês/ano Puppet is serious business! • Ferramenta Open – Apache License • Empresa oferece suporte e uma versão Enterprise • Feita por um SysAdmin para SysAdmin • Desenhada com base em DevOps • Funciona em modo cliente/servidor e autônomo 1 1
  • 12. Área, dia/mês/ano Resumindo • Puppet é um Software que permite automação. Configuramos um servidor central e os agents sincronizam com ele. • É um sistema descritivo. Decidimos se um arquivo deve existir, definimos permissões, conteúdo, decidimos se um pacote de software deve ser instalado, e a cada execução ele irá garantir que tudo fique do jeito que foi especificado • Podemos fazer deploy da App e ainda ter o controle de versão! 1 2
  • 13. Área, dia/mês/ano Funcionamento do modo Cliente/Servidor do Puppet • O agente gera um certificado digital • O Puppet master precisa autorizar esse certificado • Sem a autorização o agente não comunica com o master • Toda a comunicação é segura! 1 3
  • 14. Área, dia/mês/ano Funcionamento do modo Cliente/Servidor do Puppet 1 4 Puppet Master Puppet Agent 8139 Server 8140 Client
  • 15. Área, dia/mês/ano Funcionamento do modo Cliente/Servidor do Puppet 1 5
  • 17. Área, dia/mês/ano Resources Recurso é a unidade fundamental da modelagem Cada recurso define um aspecto do sistema São como Legos Recursos são combinados para que o sistema chegue ao estado desejado A ordem não importa!
  • 18. Área, dia/mês/ano Resources Os recursos são escritos em uma linguagem de modelagem declarativa Exemplo: Sintaxe do recurso: • Tipo do recurso • Bloco ( colchetes ) • Título do recurso separado do corpo por „:‟ • Corpo consiste em pares de atributo e valor • Tipo e título devem ser únicos
  • 19. Área, dia/mês/ano Resources Recursos similares podem ser agrupados em Tipos A descrição de um recurso é abstraída de sua implementação, o que permite uma descrição ser válida para qualquer tipo de sistema. Isto devido a sua camada De abstração de recursos (RAL)
  • 20. Área, dia/mês/ano Resources RAL : Cada recurso possui Um ou mais provedores Provedores fazem a ligação entre os tipos de recurso e o SO correto.
  • 22. Área, dia/mês/ano Resources Types Exemplo de abordagem de implementação: Pacotes * Suporta 23 tipos de provedores de pacote * Declaramos se o pacote está presente ou ausente * Declaramos que o pacote sempre deverá estar em sua última versão Serviço * Declaramos se o serviço está sempre rodando ou não * Declaramos se o serviço será carregado no boot * Declaramos se o serviço depende de um pacote ou arquivo Arquivo * Especificamos permissões e donos * Declaramos diretórios e links simbólicos
  • 23. Área, dia/mês/ano Resources Types Exemplo instalação, configuração e inicialização do Apache Como seria no CentOs # yum install httpd # chkconfig httpd on # cp ~/httpd.conf /etc/httpd/conf/ # service httpd start
  • 24. Área, dia/mês/ano Resources Types Exemplo instalação, configuração e inicialização do Apache Como seria no Debian # aptitude install apache2 # insserv apache2 # cp ~/httpd.conf /etc/apache2/ # invoke-rc.d apache2 start
  • 25. Área, dia/mês/ano Resources Types No Puppet com apenas uma abordagem package { 'apache2': ensure => present, } service { 'apache2': ensure => running, enable => true, } file { '/etc/apache2/httpd.conf': ensure => present, mode => „0644‟, owner => „root‟, group => „root‟, ensure => “puppet:///files/apache/httpd.conf”, }
  • 26. Área, dia/mês/ano Resources Types Exemplo instalação, configuração do editor, ( independe do SO ) class editor { $vim = $operatingsystem ? { 'RedHat' => 'vim-enhanced', 'CentOS' => 'vim-enhanced', 'Fedora' => 'vim-enhanced', default => 'vim', } package { "$vim": ensure => present, alias => 'vim', # provider => yum, apt, ports? } } node “jbossas01hom.network.ctbc” { include editor } node “jbossas02hom.network.ctbc” { include editor }
  • 27. Área, dia/mês/ano Resources Types Exemplo classe base – padronizando nós class sudoers { package { 'sudoers': ensure => installed, } file { '/etc/sudoers': source => 'puppet:///files/sudo/sudoers', require => Package['sudoers'], owner => 'root', group => 'root', mode => 440, } } Pacote sudoers • Garantir que esteja instalado Arquivo /etc/sudoers • Conteúdo comum a todas as máquinas • Requer pacote sudoers • Usuário root • Grupo root • Permissão 440
  • 28. Área, dia/mês/ano Resources Types Exemplo classe base class ntpdate { package { 'ntpdate': ensure => installed, } cron { 'sincroniza horario': user => 'root', command => '/usr/sbin/ntpdate ntp.dominio', minute => 0, } } Pacote ntpdate • Garantir que esteja instalado cron • Usuário root • Comando 'ntpdate ntp.dominio' • Executar de hora em hora
  • 29. Área, dia/mês/ano Resources Types Exemplo classe base class locale { package { 'locales': ensure => installed, } file { '/etc/default/locale': ensure => present, content => 'LANG=pt_BR.UTF-8', require => Package['locales'], } file { '/etc/locale.gen': ensure => present, source => '/root/exemplo/locale.gen', require => Package['locales'], } exec { '/usr/sbin/locale-gen': subscribe => File['/etc/locale.gen'], refreshonly => true, require => [ Package['locales'], File['/etc/locale.gen'] ], } } Pacote locales - instalado Arquivo /etc/default/locale - conteúdo Arquivo /etc/locale.gen - conteúdo Executar /usr/sbin/locale.gen • Sempre que locale.gen for alterado • Só quando houver alteração • Requer pacote locales e arquivo locale.gen
  • 30. Área, dia/mês/ano Resources Types Exemplo classe base class padrao { include sudoers include ntpdate include locale } node default{ include padrao } Aplicar sudoers Aplicar ntpdate Aplicar locale Todos os nós! • Aplicar configuração padrão
  • 31. Área, dia/mês/ano Resources Types Exemplo alterar dados em linha de comando puppet:~# puppet resourse user paulohac user { paulohac': ensure => 'absent' } puppet:~# puppet resourse user paulohac ensure=present notice: /User[paulohac]/ensure: created user { „paulohac': ensure => 'present' } puppet:~# puppet resourse user paulohac ensure=absent notice: /User[paulohac]/ensure: removed user { „paulohac': ensure => 'absent' }
  • 34. Área, dia/mês/ano Para a próxima semana
  • 35. Área, dia/mês/ano Procedimento manual de instalação do Agente EM12c em um JBoss • Acessar servidor via SSH • Criar diretório para o agente e as bibliotecas • Deployar .jar de monitoramento • Copiar vários jars para um diretório de bibliotecas para que o EM possa reconhecer. • Modificar a permissão para jboss • (Re)iniciar servidor • Talvez remover agente antigo ( Nagios ) 3 5
  • 36. Área, dia/mês/ano Procedimento manual de instalação do Agente EM12c em um JBoss Em números: 200 SERVIDORES 20 MINUTOS POR SERVIDOR 4000 MINUTOS OU 67 HORAS 8 DIAS TRABALHANDO • Sem documentação • Sem rastreamento de mudanças 3 6
  • 38. Área, dia/mês/ano Resultados • Documentação Instantânea • Processos bem definidos • Ambiente Padronizado • Restore e backup de mudanças • Tarefas Automatizadas
  • 39. Área, dia/mês/ano Recomendações • Usar o puppet para executar e controlar mudanças na infraestrutura • Parar de administrar e começar a desenvolver a infraestrutura • Nova demanda? Já executar utilizando o Puppet, escrevendo classes e módulos para executar apenas uma vez e reaproveitar o código depois. • Versionar as configurações (svn) criadas no Puppet. • Escreves módulos e classes da forma mais flexível possível. • Utilizar módulos prontos do GitHub e PuppetForge.