SlideShare uma empresa Scribd logo
Á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

ODP
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
ODP
Puppet – Torne Seu Datacenter áGil
PPTX
Gestão automática de configuração usando puppet
ODP
Gerenciamento de Configurações - Puppet
PDF
Administracao de sistemas_com_puppet
PDF
Vagrant + Puppet
PDF
Puppet webcast 4linux
KEY
A busca pelo deploy continuo
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
Puppet – Torne Seu Datacenter áGil
Gestão automática de configuração usando puppet
Gerenciamento de Configurações - Puppet
Administracao de sistemas_com_puppet
Vagrant + Puppet
Puppet webcast 4linux
A busca pelo deploy continuo

Mais procurados (18)

PDF
Consegi 2011: Puppet
PPSX
Cakephp 2.0 - O que mudou
PDF
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
PDF
Infraestrutura como código com Puppet e Mcollective
PDF
Oficina de infraestrutura como código (apresentando o Puppet)
PDF
Trabalhando com Módulos no Puppet
PDF
Otimizando aplicações Zend Framework - Tchelinux
PDF
Docker + Django
PDF
Memcached, Gearman e Sphinx
PDF
Unix te da asas
PDF
Java 9, 10 e ... 11
PDF
Entre na fila. Processamento distribuído usando Gearman
PDF
Otimizacao de aplicações Zend Framework
PDF
Oficina PostgreSQL Básico Latinoware 2012
PDF
Java 08
PPTX
Temperatura Zabbix Procedimento Temper Usb
DOC
Trab linux+sarg
PDF
As novidades da nova versão do Java 9
Consegi 2011: Puppet
Cakephp 2.0 - O que mudou
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Infraestrutura como código com Puppet e Mcollective
Oficina de infraestrutura como código (apresentando o Puppet)
Trabalhando com Módulos no Puppet
Otimizando aplicações Zend Framework - Tchelinux
Docker + Django
Memcached, Gearman e Sphinx
Unix te da asas
Java 9, 10 e ... 11
Entre na fila. Processamento distribuído usando Gearman
Otimizacao de aplicações Zend Framework
Oficina PostgreSQL Básico Latinoware 2012
Java 08
Temperatura Zabbix Procedimento Temper Usb
Trab linux+sarg
As novidades da nova versão do Java 9
Anúncio

Destaque (9)

PDF
PPTX
Visão rápida sobre o SCRUM
PDF
Freedomday2016 - Fique na caixinha, docker
PDF
Freedomday - Fajesu - 2013
PDF
Guia do Papel e Responsabilidade do Scrum Master
PDF
Scrum guide-portuguese-br
PPTX
Apostila Scrum: Fundamentos do Scrum
PDF
Um guia definitivo para o Scrum em Português
Visão rápida sobre o SCRUM
Freedomday2016 - Fique na caixinha, docker
Freedomday - Fajesu - 2013
Guia do Papel e Responsabilidade do Scrum Master
Scrum guide-portuguese-br
Apostila Scrum: Fundamentos do Scrum
Um guia definitivo para o Scrum em Português
Anúncio

Semelhante a Puppet overview (20)

KEY
Oficina Puppet - Aprenda a Gerenciar Configurações
PDF
Ferramentas para infraestrutura ágil
PDF
Igor Oliveira - Puppet
PPTX
Gerenciamento de configuração com puppet
PDF
Infraestrutura ágil com Puppet - CISL
PDF
Gerência de Configurações com o Puppet
ODP
Minicurso EPOTI: Automação de Infraestrutura com PUPPET.
PDF
Puppet Cloud IaaS
PDF
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
PDF
Um novo modelo de implantação do SEI no governo
PDF
SOFTWARE FREEDOM DAY 2014 - GERÊNCIA DE CONFIGURAÇÃO COM PUPPET
PDF
Apresentacao_Puppet
PDF
Automação de Ambientes com Puppet
PDF
Palestra ganeti puppet
PDF
Puppet vs ansible
PDF
Ferramentas para Automação de Datacenter - GTER 37
PDF
Ferramentas para Automação de Datacenter
PDF
Consegi 2011: Ganeti + Puppet
PDF
Segurança Através de Gerência de Configurações
PDF
Oficina Puppet latinoware
Oficina Puppet - Aprenda a Gerenciar Configurações
Ferramentas para infraestrutura ágil
Igor Oliveira - Puppet
Gerenciamento de configuração com puppet
Infraestrutura ágil com Puppet - CISL
Gerência de Configurações com o Puppet
Minicurso EPOTI: Automação de Infraestrutura com PUPPET.
Puppet Cloud IaaS
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
Um novo modelo de implantação do SEI no governo
SOFTWARE FREEDOM DAY 2014 - GERÊNCIA DE CONFIGURAÇÃO COM PUPPET
Apresentacao_Puppet
Automação de Ambientes com Puppet
Palestra ganeti puppet
Puppet vs ansible
Ferramentas para Automação de Datacenter - GTER 37
Ferramentas para Automação de Datacenter
Consegi 2011: Ganeti + Puppet
Segurança Através de Gerência de Configurações
Oficina Puppet latinoware

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.