SlideShare uma empresa Scribd logo
Brasília/DF	
Infraestrutura ágil com Puppet por Guto Carvalho
CISL 2014
2014.04.07
José Augusto (Guto) Carvalho
Consultor/SysAdmin/DevOp (LPIC-3, RHCE e PCP-201);
14 anos de experiência com TI e FOSS;
Blogueiro TI/FOSS há 13 anos (gutocarvalho.net);
Atuação em vários projetos de Governo no MDA, MINC, EBC/RADIOBRÁS,
MPS/DATAPREV, ITI/PR, CAIXA, MD/SIPAM, DETRAN/DF;
Entusiasta DevOps (sysadmin em recuperação) desde 2010.
whoami
FOSS => Free and Open Source Software
Plano de Trabalho
70 minutos de apresentação
25 minutos de demonstração
25 minutos para perguntas
Faça perguntas quando quiser
Slidedeck disponível em slideshare.com/gutocarvalho
Infraestrutura Ágil
Um modelo inteligente e economicamente viável
Infraestrutura ágil é um conceito ainda em
formação, mas ele envolve principalmente
gerência de configurações, orquestração,
provisionamento dinâmico e metodologias
ágeis de trabalho em grupo.
Nesta apresentação focaremos na gerência
de configurações, uma de suas mais
importantes características.
Tendências
Virtualização
Hoje podemos rodar centenas
de servidores virtuais, com
d i f e r e n t e s s i s t e m a s
operacionais em um mesmo
host em nosso datacenter
Cloud Computing
Hoje podemos rodar todos os
nossos sistemas em nodes
(vms) em nuvens públicas ou
privadas e nosso parque pode
aumentar ou diminuir de
forma dinâmica e automática
Diminuição de Custos
As empresas hoje buscam
aumentar a qualidade de seus
produtos e serviços mas sem
aumentar os seus custos de
manutenção e operação
Agilidade e Flexibilidade
As empresas querem hoje
ferramentas que lhes
permitam atuar de forma ágil
e flexível dentro do seu
negócio, algo que se adapte
as suas necessidades de
forma plena e concreta
Novo tipo de profissional
As empresas estão buscando
no mercado profissionais
m u l t i - d i s c i p l i n a r e s ,
dinâmicos, criativos, com
domínio em diferentes
tecnologias para dar vazão a
demandas e trabalhar com
inovação
Desafios
Desafios na TI de hoje
Como administrar parques crescentes?
Como manter nosso parque padronizado?
Como manter nosso parque seguro?
Como manter a qualidade do serviço executado?
Como manter o custo de manutenção baixo, sem perder qualidade?
Como saber quantos profissionais eu preciso para administrar meu
ambiente?
Cenário Virtual
Mjolnir Solutions Inc.
Possui um datacenter em sua sede com 750 VMs
Contratou 50 Nodes Cloud (IASS)
Precisa manter rodando 800 servidores virtuais
Dúvidas
Dúvidas comuns
Como faço mudanças rápidas em diversos ambientes e servidores?
Como faço para atender demandas em tempo hábil?
Como faço para manter a documentação atualizada?
Como evitar ao máximo downtime durante as mudanças?
Quantos sysadmins eu preciso para administrar 800 VMs?
Depende de como você
faz a administração!
Sysadmin Artesão
Hoje ainda é comum encontrar
sysadmins que trabalham com
administração manual,
utilizando um método quase
artesanal, executando tarefas
repetitivas cotidianamente
Atualização de Pacotes?
ssh servidor001.dominio.local
ssh servidor002.dominio.local
ssh servidor003.dominio.local
…
ssh servidor800.dominio.local
Instalação de Apps?
ssh servidor001.dominio.local
ssh servidor002.dominio.local
ssh servidor003.dominio.local
…
ssh servidor800.dominio.local
Criação de Usuários?
ssh servidor001.dominio.local
ssh servidor002.dominio.local
ssh servidor003.dominio.local
…
ssh servidor800.dominio.local
Tarefas Repetitivas	
Criação de usuário em servidores
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
Exemplo de processo 1
Atualização de um agente de monitoramento (ubuntu)
ssh servidor001.dominio.local
sudo -i
apt-get install agente-monitoramento-2.0
vim /etc/agente-monitoramento/agent.conf
restart agente-monitoramento
exit
Exemplo de processo 2
Atualização de um agente de monitoramento (centos)
ssh servidor002.dominio.local
su -
yum install agente-monitoramento-2.0
vim /etc/agente-monitoramento/agent.conf
service agente-monitoramento restart
exit
Exemplo de processo 3
Atualização de um agente de monitoramento (debian)
ssh servidor003.dominio.local
su -
aptitude install agente-monitoramento-2.0
vim /etc/agente-monitoramento/agent.conf
/etc/init.d/agente-monitoramento restart
exit
Exemplo de processo 4
Atualização de um agente de monitoramento (fedora)
ssh servidor004.dominio.local
sudo -i
yum install agente-monitoramento-2.0
vim /etc/agente-monitoramento/agent.conf
systemctl restart agente-monitoramento
exit
Cada sistema operacional lida de uma
forma muito particular com seus recursos,
e todas estas exceções precisam ser
cuidadosamente avaliadas e tratadas.
O uso de scripts ajuda, mas o sysadmin vai
passar a dividir seu tempo administrando
VMs e ajustando seus scripts para atender
as mais diferentes exceções.
Fatalmente uma das duas
atividades será negligenciada,
isto vai gerar falhas e
problemas.
Cada sysadmin executará demandas
de uma forma distinta, isto gera um
ambiente sem padrões, impossível
de rastear mudanças.
A medida que o parque aumentar
ficará cada vez mais difícil
administrar, identificar e corrigir
problemas.
Mudanças estruturantes que
afetarem todo parque levarão mais
tempo para serem concluídas pois
no percurso muitas coisas vão
quebrar.
Com o excesso de demandas e
ambiente crescendo cada vez mais,
documentar perderá prioridade e
isto criará um ambiente de alto
risco, obscuro e desconhecido
Pausa
Sabe como o sysadmin se sente ao
atuar em um incidente em ambiente
não documentado? Acompanhe…
Documentação é importante
para você saber lidar com
uma situação inesperada
Continuando…
Percepções da empresa
Aumenta o custo de manutenção devido a retrabalho
Aumenta o desgaste físico e psíquico da equipe
A produtividade da equipe diminui (entregas)
A qualidade do serviço oferecido diminui (uptime)
Ocorre uma grande rotatividade de funcionários
Tarefas Repetitivas
Executadas manualmente significam retrabalho
Retrabalho
Para a empresa significa maior custo e menor lucro
Retrabalho
Para o sysadmin significa menos tempo com a família
Retrabalho
Para ambos significa menor
produtividade e menor
qualidade no que se faz e no
que se entrega.
Desperdício de tempo
é uma característica comum
n e s t e m o d e l o d e
a d m i n i s t r a ç ã o d e
infraestrutura
Exemplo
O cliente deseja instalar um agente de monitoramento
em todas as 800 VMs, removendo qualquer traço do
produto antigo no final do procedimento
Procedimento para instalar o agente
Acessar servidor via ssh
Adicionar repositório APT/YUM
Instalar pacote
Ajustar arquivo de configuração
Reiniciar agente
Remover agente antigo
Instalação de
agente de
monitoramento
800 máquinas
10 minutos por máquina
8000 minutos ou 133 horas
16 dias trabalhando 8 h.p.d
Considerando o modelo manual de
administração e o retrabalho
decorrente de falhas humanas, teremos
um analista focado em uma demanda
simples por cerca de 1 mês.
O modelo manual é
um modelo caro e insustentável
Como resolver
estes problemas?
Como obtenho controle e
padronização em meu
ambiente ?
Gerência de Configurações
Gerência de Configurações
Padronização
Controle
Integridade
Produtividade
Agilidade
Puppet
Ferramenta de nova geração
que implementa gerência de
configurações para seu
ambiente.
Puppet em poucas palavras
É documentação executável
Nos permite parar de administrar e começar a desenvolver nossa infra
Sintaxe simples, prática e natural para sysadmins
Oferece suporte a diversos tipos de sistemas operacionais unix, linux windows
Sobre a ferramenta
Ferramenta Open Source - Apache License
Ferramenta mantida pela empresa Puppetlabs
Suporte comercial
Criado por Luke Kaines (CEO e Fundador Puppetlabs)
Cases de uso com grandes players (HP, CISCO, VMWARE...)
Recebeu pesados investimentos em 2012/2013
Feito por um SysAdmin para SysAdmins
Desenhada para uso DevOps
Visão DevOps
Tech Specs
Escrito em Ruby
Extensível usando código Ruby
Funciona em modo autônomo (sem servidor)
Funciona em modo cliente e servidor
Usa RESTful API
Oferece comunicação segura com uso de certificados digitais
Clientes Puppet Enterprise
Parcerias
Parcerias
Alguns cases no Brasil
Arquitetura
Como funciona o Puppet?
O Puppet pode funcionar em modo
masterless, isto significa sem
servidor. Você pode aplicar uma
configuração do Puppet diretamente a
um sistema operacional apenas com o
agente instalado.
O Puppet também funciona em modo
cliente e servidor. Isto significa que vicê
instalará o puppet master em
alguma VMs e seus agentes irão se
comunicar com ele para obter
configurações.
Existem cenários de uso de Puppet
masterless distribuído, usando GIT.
Neste modelo as configurações do
Puppet são obtidas via GIT e o agente é
acionado via cron periódicamente
Tratamento de informações
e o uso de dados pelo Puppet
Todas as informações de uma sistema
operacional, seja um pacote, usuário,
arquivo ou serviço são consideradas um
'dado' para o puppet.
Quando construímos configurações,
estas são convertidas em catálogos
XML, estes por sua vez são lidos pelos
agentes e a configuração é então
aplicada ao sistema operacional.
Entenda como funciona
a relação cliente e servidor
Tudo é feito pelo agente localmente, o
servidor não se conecta na máquina
para aplicar as configurações.
O servidor puppet é apenas o
repositório de configurações, ele tem
apenas o dever de construir e enviar o
catálogo quando isso for solicitado por
um agente.
Abstração
menor preocupação e maior resultado
Resource Abstraction Layer
Camada de Abstração de Recursos
Fale o que você quer que seja feito
Não se preocupe em como será feito
O Puppet sabe como precisa fazer o que você pediu
Instale Pacote X
Remova usuário Z
(Re)inicie serviço Y
O Puppet é orientado a estados, nós
criamos configurações definindo estes
estados, é uma verdadeira
documentação executável.
Idempotência
Característica exclusiva do Puppet, nenhum outro faz isto.
Puppet na rede
Entenda como funciona a comunicação com o Master
Modo cliente e servidor
O agente gera um certificado digital
O master precisa autorizar o certificado
Sem autorização o agente não pode se comunicar
Toda a comunicação entre agente e master é segura
Puppet Visão em Rede
Puppet Master
Puppet Agent
8140 TCP

puppet agent -t SSL
envio do 

catálogo
Fluxo Cliente/Servidor
Instalação do
node
Fluxo Cliente/Servidor
Instalação do
node
Inicialização
do puppet
Fluxo Cliente/Servidor
Instalação do
node
Geração de
Certificado
Inicialização
do puppet
Fluxo Cliente/Servidor
Instalação do
node
Geração de
Certificado
Envio de
Certificado
Inicialização
do puppet
Fluxo Cliente/Servidor
Instalação do
node
Geração de
Certificado
Master Assina
Certificado
Envio de
Certificado
Inicialização
do puppet
Fluxo Cliente/Servidor
Instalação do
node
Geração de
Certificado
Agente
Sincroniza
Master Assina
Certificado
Envio de
Certificado
Inicialização
do puppet
Fluxo Cliente/Servidor
Instalação do
node
Geração de
Certificado
Agente
Sincroniza
Master Assina
Certificado
Envio de
Certificado
Inicialização
do puppet
Modalidades de Assinatura de Certificado
Assinatura pode ser manual


Assinatura pode ser automática por domínio


Assinatura pode ser automática em qualquer requisição

O agente se comunica com o
master a cada N minutos, você configura N
Configurações
Voláteis e Dados
Puppet
Master
Módulos Estáticos
Visão ampla do Puppet
LDAP DNS MONIT SYSLOG
JBOSS APACHE MYSQL PGSQL
Puppet Agents
Camada de Aplicação
Camada de Serviços Estruturantes
Quais recursos estão disponíveis?
Recursos do Puppet
Resource Types
Parâmetros e Meta-parâmetros
Templates e Definições
Classes e Módulos
Funções e Condicionais
Puppet Resource Types
Arquivos e Diretórios
Usuários
Alias
Pacotes
Serviços
!
Yum Repos
Augeas
Hosts
SSH
Cron
O puppet oferece 38 tipos de recursos nativos, e você pode estendê-lo.
Resource Type: Packages
Suporte a 23 tipos de
provedores de pacotes
Faz a abstração do OS
Declare se o pacote deve estar
presente ou ausente
Declare se o pacote deve
sempre estar em sua última
versão
Resource Type: Services
Suporta 11 tipos de sistemas
INIT para inicializar serviços
Declare se um serviço deve
estar sempre rodando
Declare se um serviço deve ser
carregado no boot
Declare se um serviço depende
de um pacote ou arquivo
Resource Type: File
Especifique permissões e
owners
Declare arquivos,
diretórios e links
Controle de mudanças
usando até 15 tipos de
checksums
Exemplos
Instala, Configura e Inicia
instalar um pacote!
ativar um serviço no boot!
copiar arquivo de configuração!
iniciar serviço instalado
o que queremos fazer?
Instala, Configura e Inicia
# aptitude install apache2!
# insserv apache2!
# cp ~/httpd.conf /etc/apache2/!
# invoke-rc.d apache2 start
no debian seria assim:
Instala, Configura e Inicia
# yum install httpd!
# chkconfig httpd on!
# cp ~/httpd.conf /etc/httpd/conf/!
# service httpd start
no redhat/centos seria assim:
Como seria no Puppet?
Puppet Manifests
Arquivos com extensão.pp, neles expressamos nossas
necessidades utilizando a sintaxe declarativa do Puppet
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”,!
}
Instala, Configura e Inicia
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”,!
}
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”,!
}
resource type
parameter
title
value
A mesma configuração atende a
diversos sistemas operacionais, a
sintaxe é simples e direta. É uma
declaração de estados que o Puppet vai
interpretar e aplicar.
Documentação Executável.
Mais exemplos
Declarando um node (site.pp)
node “servidor.dominio” {!
include linux-server!
include module!
}
node “balancer.dominio” {!
include linux-server!
include cyrus::backend!
include postfix::hub

include haproxy::mailproxy!
}
Apenas com as informações do node, já
podemos entender o que ele faz e
quais ferramentas o puppet gerencia
nele, é outro tipo de documentação.
Variáveis e Fatos
Fatos (facter)
vimpackage => vim-puppet,
!
apacheservice => apache2,
!
ntpconfrhel => ntp.conf.rhel,
!
servername => $facts[fqdn],
Constantes e Variáveisdomain
fqdn

hostname
interfaces
ipaddress_eth0
ipaddress_eth1
ipaddress_lo
lsbdistid
lsbdistrelease
=> hacklab,
=> puppetmaster.hacklab,
=> puppetmaster,
=> eth0,eth1,lo,
=> 10.0.2.15,
=> 192.168.56.150,
=> 127.0.0.1,
=> debian,
=> 6.0.5,
Condicionais
case $operatingsystem {!
CentOS,RedHat: { !
$package_name = 'ntp',!
$service_name = 'ntpd',!
$conf_file = 'ntp.conf.el',!
}!
Debian,Ubuntu: { !
$package_name = 'ntp',!
$service_name = 'ntp',!
$conf_file = 'ntp.conf.debian',!
}!
}!
....
Condicionais
if $operatingsystem == '"CentOS" {!
$package_name = 'ntp',!
$service_name = 'ntpd',!
$conf_file = 'ntp.conf.el',!
}!
elseif $operatingsystem == 'Debian' { !
$package_name = 'ntp',!
$service_name = 'ntp',!
$conf_file = 'ntp.conf.debian',!
}!
else {

notify { “Sistema desconhecido”: }!
}!
....
Condicionais
if ( $operatingsystem == 'Debian' ) and ( $lsbdistcodename == 'squeeze' ) {!
!
bloco de código!
!
}
Definições
proxy { 'Filial' :!
http_port !
squid_mode !
squid_hostname !
cache_mem !
maximum_object_size_in_memory !
maximum_object_size !
memory_replacement_policy !
cache_replacement_policy !
cache_dir !
cache_mgr !
cache_effective_user !
cache_effective_group !
dns_nameservers !
ips_squid !
}
=> '3128',!
=> 'transparent',!
=> 'proxy.hacklab',!
=> '2 GB',!
=> '6 MB',!
=> '128 MB',!
=> 'heap GDSF',!
=> 'heap LFUDA',!
=> 'aufs /var/spool/squid 1024 16 256',!
=> ‘monitora@hacklab.local’,!
=> 'proxy',!
=> 'proxy',!
=> '127.0.0.1 10.61.12.2 172.16.1.1',!
=> '127.0.0.1 192.168.12.3',
Definições
proxy { 'Matriz' :!
http_port !
squid_mode !
squid_hostname !
cache_mem !
maximum_object_size_in_memory !
maximum_object_size !
memory_replacement_policy !
cache_replacement_policy !
cache_dir !
cache_mgr !
cache_effective_user !
cache_effective_group !
dns_nameservers !
ips_squid !
}
=> '3128',!
=> 'transparent',!
=> 'proxy.hacklab',!
=> '8 GB',!
=> '6 MB',!
=> '512 MB',!
=> 'heap GDSF',!
=> 'heap LFUDA',!
=> 'aufs /var/spool/squid 8096 16 256',!
=> ‘monitora@hacklab.local’,!
=> 'proxy',!
=> 'proxy',!
=> '127.0.0.1 10.61.12.2 172.16.1.1',!
=> '127.0.0.1 192.168.12.3',
Templates
myorigin = <%= hostname %>!
mydestination = $myhostname, ..., localhost, <%= fqdn %>
Trecho do template postfix/main.cf
myorigin = servidor.dominio!
mydestination = $myhostname, ..., localhost, servidor.dominio
Substituição de variáveis por fatos
Padronizando nodes
Base Class
class linux-server {!
include sysadmin-utils!
include zabbix-agent!
include ntpconf!
include locales!
include hosts!
include users!
include localmta!
include vimrc!
include backup-agent!
include apt-repos!
}
Node default
node default {!
include linux-server!
}
Dashboards para Puppet
Puppet Dashboard
Foreman
Outros projetos Puppetlabs
Outros projetos Puppetlabs
PuppetDB (coletor de dados)
Razor (provisionador)
Hiera (separa dados de código)
Facter (fatos do sistema)
Mcollective (orquestrador)
Gerenciadores Externos para o Puppet
Configr
Posso fazer mudanças em
tempo real?
Marionette Collective
Orquestrador de nodes
Execução de Tarefas Paralelas
Interação com centenas de nodes
Inventário descentralizado
Leitura de meta-dados do Puppet
Similar a Fabric e Capistrano
Provisionamento? É possível ?
Ferramentas de provisionamento VM
!
Foreman
Vagrant
Razor
Sprinkle
Puppet Enterprise
Ferramentas de provisionamento SW
!
Ansible
Salt
Capistrano
Fabric
Demonstração
Qual o resultado concreto?
A o e s c r e v e r m o s a s n o s s a s
configurações, estamos expressando o
que desejamos ter em nossos nodes,
com isto, já estamos construindo nossa
documentação.
Aos escrevermos uma configuração,
estamos definindo como aquilo de ser
instalado, configurado e como deve
funcionar. Toda a equipe passa a usar a
mesma receita, isto significa que
teremos processos padronizados.
O Puppet oferece recursos para você
fazer backup e restore de arquivos
modificados, portanto, você tem a
segurança de poder recuperar
ambientes caso precise.
Ao adotar Puppet você não vai mais
sentir vontade de executar nada sem
ele, tudo já nascerá automatizado e
controlado, com processos e
documentação instantânea.
Respostas
Um sysadmin que não usa Puppet
consegue administrar no máximo 30
servidores, com alguma dificuldade e
muito retrabalho.
Um sysadmin que usa Puppet consegue
administrar entre 250 e 1000
servidores com facilidade, a
quantidade vai depender do nível de
automatização e maturidade do
profissional e sua equipe.
Para administrar 800 VMs, utilizando
Puppet, você precisará de 4 sysadmins,
e afirmo que dependendo do nível de
automação até menos.
Compare
Ambiente com 800 nodes
modo manual puppet
instalando agente 133 horas N minutos
Benefícios Reais
Maior produtividade em menor tempo
Poucos sysadmins para muitos nodes
Diminuição de falhas humanas
Maior controle de todo o seu parque
Diminuição do tempo gasto em mudanças
Diminuição do custo de manutenção
O sysadmin fará jornadas de trabalho
normais, ficará mais tempo com a
família, terá mais qualidade de vida e
com isso irá produzir mais e melhor.
O negócio de sua empresa vai fluir, ter
m e l h o r q u a l i d a d e , m a i o r
disponibilidade e menor custo
operacional, sendo gerido por uma
equipe qualificada e eficiente.
Puppet Labs
Puppetlabs
Suporte Comercial (em inglês)
Programa de treinamento presencial
Programa de certificação para Sysadmins - PCP 201
Programa de certificação para Developers - PCP 301
Puppet Enterprise Dashboard (Gerenciador)
Puppet em números
700+ pessoas online no canal
#puppet da irc.freenode.net
8.500+ repositórios no GitHub
1000+ módulos no PuppetForge
5000+ usuários ativos na lista
puppet-users com 8000+ tópicos de
discussão
Comunidade brasileira!
Site/Blog
http://www.puppetlabs.com
http://www.puppetlabs.com/blog/
http://puppet-br.org/


Twitter
@puppetlabs
@puppetmasterd (luke)

GitHub
http://www.github.com/puppelabs


Puppet na rede
Google Groups
Puppet-camp,
puppet-users,
puppet-users-br,
puppet-dev

IRC
irc.freenode.org
#puppet
#puppet-br
Existe suporte comercial no Brasil?
• Suporte Oficial Puppetlabs no Brasil
• Empresa especializada em Puppet
• Cursos oficiais, Puppet Enterprise, consultoria e suporte
• 1o Parceiro oficial Puppetlabs Brasil
• 1o empresa com pessoas certificados PCP na América Latina
• Acesse http://www.instruct.com.br
Inovando com o Puppet
PUPPET COMO SERVIÇO
• Gerenciamento de Configuração COMO SERVIÇO
!
• Automatizar Infraestrutura de GRANDES CORPORAÇÕES
!
• Interface intuitiva focada em AGILIDADE e AUTONOMIA
!
• Suporte com PROFISSIONAIS CERTIFICADOS (PCP, RHCE, LPI-3)
!
• SERVIÇO PIONEIRO para Gestão de Infraestrutura no Brasil
www.configr.com
Perguntas?
Obrigado!
Linkedin: http://br.linkedin.com/in/gutocarv
E-mail: gutocarvalho@gmail.com
Contato
Slides: slideshare.net/gutocarvalho
Blog: gutocarvalho.net
Twitter: @gutocarvalho
http://puppetlabs.com
http://instruct.com.br
http://configr.com

Mais conteúdo relacionado

Mais procurados

Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
Daniel Sobral
 
Consegi 2011: Puppet
Consegi 2011: PuppetConsegi 2011: Puppet
Consegi 2011: Puppet
Jose Augusto Carvalho
 
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
Samuel Sampaio
 
Puppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGilPuppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGil
jefesrodrigues
 
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
 
Cultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develCultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e devel
Jose Augusto Carvalho
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
Leandro Silva
 
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
 
Gerenciamento de Configurações - Puppet
Gerenciamento de Configurações - PuppetGerenciamento de Configurações - Puppet
Gerenciamento de Configurações - Puppet
Roberto Scudeller
 
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
 
Discutindo DevOps na pratica, por Danilo Sato
Discutindo DevOps na pratica, por Danilo SatoDiscutindo DevOps na pratica, por Danilo Sato
Discutindo DevOps na pratica, por Danilo Sato
Thoughtworks
 
Tijgs trending topics serverless e sre
Tijgs   trending topics serverless e sreTijgs   trending topics serverless e sre
Tijgs trending topics serverless e sre
Matheus Rossato
 
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
 
Lidando com operações assíncronas no redux com redux saga
Lidando com operações assíncronas no redux com redux sagaLidando com operações assíncronas no redux com redux saga
Lidando com operações assíncronas no redux com redux saga
Hugo Bessa
 
Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
thomasdacosta
 
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
 
Sim, existe vida além do FTP!
Sim, existe vida além do FTP!Sim, existe vida além do FTP!
Sim, existe vida além do FTP!
Gustavo Pereira
 
DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014
Leo Lorieri
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOps
Leonardo Comelli
 

Mais procurados (20)

Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
 
Consegi 2011: Puppet
Consegi 2011: PuppetConsegi 2011: Puppet
Consegi 2011: Puppet
 
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
 
Puppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGilPuppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter á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
 
Cultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develCultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e devel
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 
Gerenciamento de Configurações - Puppet
Gerenciamento de Configurações - PuppetGerenciamento de Configurações - Puppet
Gerenciamento de Configurações - 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!
 
Discutindo DevOps na pratica, por Danilo Sato
Discutindo DevOps na pratica, por Danilo SatoDiscutindo DevOps na pratica, por Danilo Sato
Discutindo DevOps na pratica, por Danilo Sato
 
Tijgs trending topics serverless e sre
Tijgs   trending topics serverless e sreTijgs   trending topics serverless e sre
Tijgs trending topics serverless e sre
 
Automação de Ambientes com Puppet
Automação de Ambientes com Puppet Automação de Ambientes com Puppet
Automação de Ambientes com Puppet
 
Lidando com operações assíncronas no redux com redux saga
Lidando com operações assíncronas no redux com redux sagaLidando com operações assíncronas no redux com redux saga
Lidando com operações assíncronas no redux com redux saga
 
Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
 
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...
 
Sim, existe vida além do FTP!
Sim, existe vida além do FTP!Sim, existe vida além do FTP!
Sim, existe vida além do FTP!
 
DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOps
 

Destaque

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
 
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
 
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
 
Git Básico
Git BásicoGit Básico
Git Básico
Bruno Croci
 
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
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
 
Puppet 3 em 2017
Puppet 3 em 2017Puppet 3 em 2017
Puppet 3 em 2017
Taciano Tres
 
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 (10)

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
 
PHP - Programação para seres humanos
PHP - Programação para seres humanosPHP - Programação para seres humanos
PHP - Programação para seres humanos
 
Mini-curso de Linux - SECCOMP 2009
Mini-curso de Linux - SECCOMP 2009Mini-curso de Linux - SECCOMP 2009
Mini-curso de Linux - SECCOMP 2009
 
Git Básico
Git BásicoGit Básico
Git Básico
 
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
 
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
 
Puppet 3 em 2017
Puppet 3 em 2017Puppet 3 em 2017
Puppet 3 em 2017
 
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 Infraestrutura ágil com Puppet - CISL

Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
Jackson F. de A. Mafra
 
Atps sistemas operacionais
Atps sistemas operacionaisAtps sistemas operacionais
Atps sistemas operacionais
TIAGO SAMPOGNA DE MORAES
 
Apresentacao 8020informatica
Apresentacao 8020informaticaApresentacao 8020informatica
Apresentacao 8020informatica
Sulivan Nascimento
 
SRE - Esperança não é uma estratégia
SRE - Esperança não é uma estratégiaSRE - Esperança não é uma estratégia
SRE - Esperança não é uma estratégia
Leandro Silva
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
tdc-globalcode
 
Apresentacao_Puppet
Apresentacao_PuppetApresentacao_Puppet
Apresentacao_Puppet
Rafael Mendonça
 
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
tdc-globalcode
 
Um novo modelo de implantação do SEI no governo
Um novo modelo de implantação do SEI no governoUm novo modelo de implantação do SEI no governo
Um novo modelo de implantação do SEI no governo
instructbr
 
[DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps![DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps!
Camilla Gomes
 
Aula 100823071954-phpapp01
Aula 100823071954-phpapp01Aula 100823071954-phpapp01
Aula 100823071954-phpapp01
cleytom
 
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCEAgenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Joao Galdino Mello de Souza
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
Deep Tech Brasil
 
IBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to heroIBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to hero
André Luís Cardoso
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Luiz Costa
 
Agenda Versão Final - CMG 14a. conferencia nacional
Agenda Versão Final - CMG 14a. conferencia nacionalAgenda Versão Final - CMG 14a. conferencia nacional
Agenda Versão Final - CMG 14a. conferencia nacional
Joao Galdino Mello de Souza
 
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCEAgenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Joao Galdino Mello de Souza
 
Microservices
MicroservicesMicroservices
Microservices
Diego Pacheco
 
Servico ad
Servico adServico ad
Servico ad
fernandao777
 
Webinar DevOps - Encontros Ágeis
Webinar DevOps - Encontros ÁgeisWebinar DevOps - Encontros Ágeis
Webinar DevOps - Encontros Ágeis
Rodrigo R Garcia, PMP
 
Opções de trabalho remoto na nuvem
Opções de trabalho remoto na nuvemOpções de trabalho remoto na nuvem
Opções de trabalho remoto na nuvem
Fabio Hara
 

Semelhante a Infraestrutura ágil com Puppet - CISL (20)

Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
 
Atps sistemas operacionais
Atps sistemas operacionaisAtps sistemas operacionais
Atps sistemas operacionais
 
Apresentacao 8020informatica
Apresentacao 8020informaticaApresentacao 8020informatica
Apresentacao 8020informatica
 
SRE - Esperança não é uma estratégia
SRE - Esperança não é uma estratégiaSRE - Esperança não é uma estratégia
SRE - Esperança não é uma estratégia
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
 
Apresentacao_Puppet
Apresentacao_PuppetApresentacao_Puppet
Apresentacao_Puppet
 
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
 
Um novo modelo de implantação do SEI no governo
Um novo modelo de implantação do SEI no governoUm novo modelo de implantação do SEI no governo
Um novo modelo de implantação do SEI no governo
 
[DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps![DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps!
 
Aula 100823071954-phpapp01
Aula 100823071954-phpapp01Aula 100823071954-phpapp01
Aula 100823071954-phpapp01
 
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCEAgenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
 
IBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to heroIBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to hero
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
Agenda Versão Final - CMG 14a. conferencia nacional
Agenda Versão Final - CMG 14a. conferencia nacionalAgenda Versão Final - CMG 14a. conferencia nacional
Agenda Versão Final - CMG 14a. conferencia nacional
 
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCEAgenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
 
Microservices
MicroservicesMicroservices
Microservices
 
Servico ad
Servico adServico ad
Servico ad
 
Webinar DevOps - Encontros Ágeis
Webinar DevOps - Encontros ÁgeisWebinar DevOps - Encontros Ágeis
Webinar DevOps - Encontros Ágeis
 
Opções de trabalho remoto na nuvem
Opções de trabalho remoto na nuvemOpções de trabalho remoto na nuvem
Opções de trabalho remoto na nuvem
 

Mais de Jose Augusto Carvalho

Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e devel
Jose Augusto Carvalho
 
Conhecendo o Wordpress
Conhecendo o WordpressConhecendo o Wordpress
Conhecendo o Wordpress
Jose Augusto Carvalho
 
Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2
Jose Augusto Carvalho
 
O que é DevOps afinal?
O que é DevOps afinal?O que é DevOps afinal?
O que é DevOps afinal?
Jose Augusto Carvalho
 
Palestra Puppet Hora Livre
Palestra Puppet Hora LivrePalestra Puppet Hora Livre
Palestra Puppet Hora Livre
Jose Augusto Carvalho
 
Oficina Puppet latinoware
Oficina Puppet latinowareOficina Puppet latinoware
Oficina Puppet latinoware
Jose Augusto Carvalho
 
Puppet Cloud IaaS
Puppet Cloud IaaSPuppet Cloud IaaS
Puppet Cloud IaaS
Jose Augusto Carvalho
 
Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)
Jose Augusto Carvalho
 

Mais de Jose Augusto Carvalho (8)

Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e devel
 
Conhecendo o Wordpress
Conhecendo o WordpressConhecendo o Wordpress
Conhecendo o Wordpress
 
Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2
 
O que é DevOps afinal?
O que é DevOps afinal?O que é DevOps afinal?
O que é DevOps afinal?
 
Palestra Puppet Hora Livre
Palestra Puppet Hora LivrePalestra Puppet Hora Livre
Palestra Puppet Hora Livre
 
Oficina Puppet latinoware
Oficina Puppet latinowareOficina Puppet latinoware
Oficina Puppet latinoware
 
Puppet Cloud IaaS
Puppet Cloud IaaSPuppet Cloud IaaS
Puppet Cloud IaaS
 
Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)
 

Infraestrutura ágil com Puppet - CISL

  • 1. Brasília/DF Infraestrutura ágil com Puppet por Guto Carvalho CISL 2014 2014.04.07
  • 2. José Augusto (Guto) Carvalho Consultor/SysAdmin/DevOp (LPIC-3, RHCE e PCP-201); 14 anos de experiência com TI e FOSS; Blogueiro TI/FOSS há 13 anos (gutocarvalho.net); Atuação em vários projetos de Governo no MDA, MINC, EBC/RADIOBRÁS, MPS/DATAPREV, ITI/PR, CAIXA, MD/SIPAM, DETRAN/DF; Entusiasta DevOps (sysadmin em recuperação) desde 2010. whoami FOSS => Free and Open Source Software
  • 3. Plano de Trabalho 70 minutos de apresentação 25 minutos de demonstração 25 minutos para perguntas Faça perguntas quando quiser Slidedeck disponível em slideshare.com/gutocarvalho
  • 4. Infraestrutura Ágil Um modelo inteligente e economicamente viável
  • 5. Infraestrutura ágil é um conceito ainda em formação, mas ele envolve principalmente gerência de configurações, orquestração, provisionamento dinâmico e metodologias ágeis de trabalho em grupo.
  • 6. Nesta apresentação focaremos na gerência de configurações, uma de suas mais importantes características.
  • 8. Virtualização Hoje podemos rodar centenas de servidores virtuais, com d i f e r e n t e s s i s t e m a s operacionais em um mesmo host em nosso datacenter
  • 9. Cloud Computing Hoje podemos rodar todos os nossos sistemas em nodes (vms) em nuvens públicas ou privadas e nosso parque pode aumentar ou diminuir de forma dinâmica e automática
  • 10. Diminuição de Custos As empresas hoje buscam aumentar a qualidade de seus produtos e serviços mas sem aumentar os seus custos de manutenção e operação
  • 11. Agilidade e Flexibilidade As empresas querem hoje ferramentas que lhes permitam atuar de forma ágil e flexível dentro do seu negócio, algo que se adapte as suas necessidades de forma plena e concreta
  • 12. Novo tipo de profissional As empresas estão buscando no mercado profissionais m u l t i - d i s c i p l i n a r e s , dinâmicos, criativos, com domínio em diferentes tecnologias para dar vazão a demandas e trabalhar com inovação
  • 14. Desafios na TI de hoje Como administrar parques crescentes? Como manter nosso parque padronizado? Como manter nosso parque seguro? Como manter a qualidade do serviço executado? Como manter o custo de manutenção baixo, sem perder qualidade? Como saber quantos profissionais eu preciso para administrar meu ambiente?
  • 16. Mjolnir Solutions Inc. Possui um datacenter em sua sede com 750 VMs Contratou 50 Nodes Cloud (IASS) Precisa manter rodando 800 servidores virtuais
  • 18. Dúvidas comuns Como faço mudanças rápidas em diversos ambientes e servidores? Como faço para atender demandas em tempo hábil? Como faço para manter a documentação atualizada? Como evitar ao máximo downtime durante as mudanças?
  • 19. Quantos sysadmins eu preciso para administrar 800 VMs?
  • 20. Depende de como você faz a administração!
  • 21. Sysadmin Artesão Hoje ainda é comum encontrar sysadmins que trabalham com administração manual, utilizando um método quase artesanal, executando tarefas repetitivas cotidianamente
  • 22. Atualização de Pacotes? ssh servidor001.dominio.local ssh servidor002.dominio.local ssh servidor003.dominio.local … ssh servidor800.dominio.local
  • 23. Instalação de Apps? ssh servidor001.dominio.local ssh servidor002.dominio.local ssh servidor003.dominio.local … ssh servidor800.dominio.local
  • 24. Criação de Usuários? ssh servidor001.dominio.local ssh servidor002.dominio.local ssh servidor003.dominio.local … ssh servidor800.dominio.local
  • 25. Tarefas Repetitivas Criação de usuário em servidores 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
  • 26. Exemplo de processo 1 Atualização de um agente de monitoramento (ubuntu) ssh servidor001.dominio.local sudo -i apt-get install agente-monitoramento-2.0 vim /etc/agente-monitoramento/agent.conf restart agente-monitoramento exit
  • 27. Exemplo de processo 2 Atualização de um agente de monitoramento (centos) ssh servidor002.dominio.local su - yum install agente-monitoramento-2.0 vim /etc/agente-monitoramento/agent.conf service agente-monitoramento restart exit
  • 28. Exemplo de processo 3 Atualização de um agente de monitoramento (debian) ssh servidor003.dominio.local su - aptitude install agente-monitoramento-2.0 vim /etc/agente-monitoramento/agent.conf /etc/init.d/agente-monitoramento restart exit
  • 29. Exemplo de processo 4 Atualização de um agente de monitoramento (fedora) ssh servidor004.dominio.local sudo -i yum install agente-monitoramento-2.0 vim /etc/agente-monitoramento/agent.conf systemctl restart agente-monitoramento exit
  • 30. Cada sistema operacional lida de uma forma muito particular com seus recursos, e todas estas exceções precisam ser cuidadosamente avaliadas e tratadas.
  • 31. O uso de scripts ajuda, mas o sysadmin vai passar a dividir seu tempo administrando VMs e ajustando seus scripts para atender as mais diferentes exceções.
  • 32. Fatalmente uma das duas atividades será negligenciada, isto vai gerar falhas e problemas.
  • 33. Cada sysadmin executará demandas de uma forma distinta, isto gera um ambiente sem padrões, impossível de rastear mudanças.
  • 34. A medida que o parque aumentar ficará cada vez mais difícil administrar, identificar e corrigir problemas.
  • 35. Mudanças estruturantes que afetarem todo parque levarão mais tempo para serem concluídas pois no percurso muitas coisas vão quebrar.
  • 36. Com o excesso de demandas e ambiente crescendo cada vez mais, documentar perderá prioridade e isto criará um ambiente de alto risco, obscuro e desconhecido
  • 37. Pausa
  • 38. Sabe como o sysadmin se sente ao atuar em um incidente em ambiente não documentado? Acompanhe…
  • 39.
  • 40.
  • 41.
  • 42. Documentação é importante para você saber lidar com uma situação inesperada
  • 44. Percepções da empresa Aumenta o custo de manutenção devido a retrabalho Aumenta o desgaste físico e psíquico da equipe A produtividade da equipe diminui (entregas) A qualidade do serviço oferecido diminui (uptime) Ocorre uma grande rotatividade de funcionários
  • 46. Retrabalho Para a empresa significa maior custo e menor lucro
  • 47. Retrabalho Para o sysadmin significa menos tempo com a família
  • 48. Retrabalho Para ambos significa menor produtividade e menor qualidade no que se faz e no que se entrega.
  • 49. Desperdício de tempo é uma característica comum n e s t e m o d e l o d e a d m i n i s t r a ç ã o d e infraestrutura
  • 50. Exemplo O cliente deseja instalar um agente de monitoramento em todas as 800 VMs, removendo qualquer traço do produto antigo no final do procedimento
  • 51. Procedimento para instalar o agente Acessar servidor via ssh Adicionar repositório APT/YUM Instalar pacote Ajustar arquivo de configuração Reiniciar agente Remover agente antigo
  • 52. Instalação de agente de monitoramento 800 máquinas 10 minutos por máquina 8000 minutos ou 133 horas 16 dias trabalhando 8 h.p.d
  • 53. Considerando o modelo manual de administração e o retrabalho decorrente de falhas humanas, teremos um analista focado em uma demanda simples por cerca de 1 mês.
  • 54. O modelo manual é um modelo caro e insustentável
  • 55. Como resolver estes problemas? Como obtenho controle e padronização em meu ambiente ?
  • 58. Puppet Ferramenta de nova geração que implementa gerência de configurações para seu ambiente.
  • 59. Puppet em poucas palavras É documentação executável Nos permite parar de administrar e começar a desenvolver nossa infra Sintaxe simples, prática e natural para sysadmins Oferece suporte a diversos tipos de sistemas operacionais unix, linux windows
  • 60. Sobre a ferramenta Ferramenta Open Source - Apache License Ferramenta mantida pela empresa Puppetlabs Suporte comercial Criado por Luke Kaines (CEO e Fundador Puppetlabs) Cases de uso com grandes players (HP, CISCO, VMWARE...) Recebeu pesados investimentos em 2012/2013
  • 61. Feito por um SysAdmin para SysAdmins
  • 64. Tech Specs Escrito em Ruby Extensível usando código Ruby Funciona em modo autônomo (sem servidor) Funciona em modo cliente e servidor Usa RESTful API Oferece comunicação segura com uso de certificados digitais
  • 68. Alguns cases no Brasil
  • 70. O Puppet pode funcionar em modo masterless, isto significa sem servidor. Você pode aplicar uma configuração do Puppet diretamente a um sistema operacional apenas com o agente instalado.
  • 71. O Puppet também funciona em modo cliente e servidor. Isto significa que vicê instalará o puppet master em alguma VMs e seus agentes irão se comunicar com ele para obter configurações.
  • 72. Existem cenários de uso de Puppet masterless distribuído, usando GIT. Neste modelo as configurações do Puppet são obtidas via GIT e o agente é acionado via cron periódicamente
  • 73. Tratamento de informações e o uso de dados pelo Puppet
  • 74. Todas as informações de uma sistema operacional, seja um pacote, usuário, arquivo ou serviço são consideradas um 'dado' para o puppet.
  • 75. Quando construímos configurações, estas são convertidas em catálogos XML, estes por sua vez são lidos pelos agentes e a configuração é então aplicada ao sistema operacional.
  • 76. Entenda como funciona a relação cliente e servidor
  • 77.
  • 78. Tudo é feito pelo agente localmente, o servidor não se conecta na máquina para aplicar as configurações.
  • 79. O servidor puppet é apenas o repositório de configurações, ele tem apenas o dever de construir e enviar o catálogo quando isso for solicitado por um agente.
  • 81. Resource Abstraction Layer Camada de Abstração de Recursos Fale o que você quer que seja feito Não se preocupe em como será feito O Puppet sabe como precisa fazer o que você pediu
  • 85. O Puppet é orientado a estados, nós criamos configurações definindo estes estados, é uma verdadeira documentação executável.
  • 86. Idempotência Característica exclusiva do Puppet, nenhum outro faz isto.
  • 87. Puppet na rede Entenda como funciona a comunicação com o Master
  • 88. Modo cliente e servidor O agente gera um certificado digital O master precisa autorizar o certificado Sem autorização o agente não pode se comunicar Toda a comunicação entre agente e master é segura
  • 89. Puppet Visão em Rede Puppet Master Puppet Agent 8140 TCP
 puppet agent -t SSL envio do 
 catálogo
  • 92. Fluxo Cliente/Servidor Instalação do node Geração de Certificado Inicialização do puppet
  • 93. Fluxo Cliente/Servidor Instalação do node Geração de Certificado Envio de Certificado Inicialização do puppet
  • 94. Fluxo Cliente/Servidor Instalação do node Geração de Certificado Master Assina Certificado Envio de Certificado Inicialização do puppet
  • 95. Fluxo Cliente/Servidor Instalação do node Geração de Certificado Agente Sincroniza Master Assina Certificado Envio de Certificado Inicialização do puppet
  • 96. Fluxo Cliente/Servidor Instalação do node Geração de Certificado Agente Sincroniza Master Assina Certificado Envio de Certificado Inicialização do puppet Modalidades de Assinatura de Certificado Assinatura pode ser manual
 
Assinatura pode ser automática por domínio
 
Assinatura pode ser automática em qualquer requisição

  • 97. O agente se comunica com o master a cada N minutos, você configura N
  • 98. Configurações Voláteis e Dados Puppet Master Módulos Estáticos Visão ampla do Puppet LDAP DNS MONIT SYSLOG JBOSS APACHE MYSQL PGSQL Puppet Agents Camada de Aplicação Camada de Serviços Estruturantes
  • 99. Quais recursos estão disponíveis?
  • 100. Recursos do Puppet Resource Types Parâmetros e Meta-parâmetros Templates e Definições Classes e Módulos Funções e Condicionais
  • 101. Puppet Resource Types Arquivos e Diretórios Usuários Alias Pacotes Serviços ! Yum Repos Augeas Hosts SSH Cron O puppet oferece 38 tipos de recursos nativos, e você pode estendê-lo.
  • 102. Resource Type: Packages Suporte a 23 tipos de provedores de pacotes Faz a abstração do OS Declare se o pacote deve estar presente ou ausente Declare se o pacote deve sempre estar em sua última versão
  • 103. Resource Type: Services Suporta 11 tipos de sistemas INIT para inicializar serviços Declare se um serviço deve estar sempre rodando Declare se um serviço deve ser carregado no boot Declare se um serviço depende de um pacote ou arquivo
  • 104. Resource Type: File Especifique permissões e owners Declare arquivos, diretórios e links Controle de mudanças usando até 15 tipos de checksums
  • 106. Instala, Configura e Inicia instalar um pacote! ativar um serviço no boot! copiar arquivo de configuração! iniciar serviço instalado o que queremos fazer?
  • 107. Instala, Configura e Inicia # aptitude install apache2! # insserv apache2! # cp ~/httpd.conf /etc/apache2/! # invoke-rc.d apache2 start no debian seria assim:
  • 108. Instala, Configura e Inicia # yum install httpd! # chkconfig httpd on! # cp ~/httpd.conf /etc/httpd/conf/! # service httpd start no redhat/centos seria assim:
  • 109. Como seria no Puppet?
  • 110. Puppet Manifests Arquivos com extensão.pp, neles expressamos nossas necessidades utilizando a sintaxe declarativa do Puppet
  • 111. 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”,! } Instala, Configura e Inicia
  • 112. 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”,! }
  • 113. 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”,! } resource type parameter title value
  • 114. A mesma configuração atende a diversos sistemas operacionais, a sintaxe é simples e direta. É uma declaração de estados que o Puppet vai interpretar e aplicar.
  • 117. Declarando um node (site.pp) node “servidor.dominio” {! include linux-server! include module! } node “balancer.dominio” {! include linux-server! include cyrus::backend! include postfix::hub
 include haproxy::mailproxy! }
  • 118. Apenas com as informações do node, já podemos entender o que ele faz e quais ferramentas o puppet gerencia nele, é outro tipo de documentação.
  • 119. Variáveis e Fatos Fatos (facter) vimpackage => vim-puppet, ! apacheservice => apache2, ! ntpconfrhel => ntp.conf.rhel, ! servername => $facts[fqdn], Constantes e Variáveisdomain fqdn
 hostname interfaces ipaddress_eth0 ipaddress_eth1 ipaddress_lo lsbdistid lsbdistrelease => hacklab, => puppetmaster.hacklab, => puppetmaster, => eth0,eth1,lo, => 10.0.2.15, => 192.168.56.150, => 127.0.0.1, => debian, => 6.0.5,
  • 120. Condicionais case $operatingsystem {! CentOS,RedHat: { ! $package_name = 'ntp',! $service_name = 'ntpd',! $conf_file = 'ntp.conf.el',! }! Debian,Ubuntu: { ! $package_name = 'ntp',! $service_name = 'ntp',! $conf_file = 'ntp.conf.debian',! }! }! ....
  • 121. Condicionais if $operatingsystem == '"CentOS" {! $package_name = 'ntp',! $service_name = 'ntpd',! $conf_file = 'ntp.conf.el',! }! elseif $operatingsystem == 'Debian' { ! $package_name = 'ntp',! $service_name = 'ntp',! $conf_file = 'ntp.conf.debian',! }! else {
 notify { “Sistema desconhecido”: }! }! ....
  • 122. Condicionais if ( $operatingsystem == 'Debian' ) and ( $lsbdistcodename == 'squeeze' ) {! ! bloco de código! ! }
  • 123. Definições proxy { 'Filial' :! http_port ! squid_mode ! squid_hostname ! cache_mem ! maximum_object_size_in_memory ! maximum_object_size ! memory_replacement_policy ! cache_replacement_policy ! cache_dir ! cache_mgr ! cache_effective_user ! cache_effective_group ! dns_nameservers ! ips_squid ! } => '3128',! => 'transparent',! => 'proxy.hacklab',! => '2 GB',! => '6 MB',! => '128 MB',! => 'heap GDSF',! => 'heap LFUDA',! => 'aufs /var/spool/squid 1024 16 256',! => ‘monitora@hacklab.local’,! => 'proxy',! => 'proxy',! => '127.0.0.1 10.61.12.2 172.16.1.1',! => '127.0.0.1 192.168.12.3',
  • 124. Definições proxy { 'Matriz' :! http_port ! squid_mode ! squid_hostname ! cache_mem ! maximum_object_size_in_memory ! maximum_object_size ! memory_replacement_policy ! cache_replacement_policy ! cache_dir ! cache_mgr ! cache_effective_user ! cache_effective_group ! dns_nameservers ! ips_squid ! } => '3128',! => 'transparent',! => 'proxy.hacklab',! => '8 GB',! => '6 MB',! => '512 MB',! => 'heap GDSF',! => 'heap LFUDA',! => 'aufs /var/spool/squid 8096 16 256',! => ‘monitora@hacklab.local’,! => 'proxy',! => 'proxy',! => '127.0.0.1 10.61.12.2 172.16.1.1',! => '127.0.0.1 192.168.12.3',
  • 125. Templates myorigin = <%= hostname %>! mydestination = $myhostname, ..., localhost, <%= fqdn %> Trecho do template postfix/main.cf myorigin = servidor.dominio! mydestination = $myhostname, ..., localhost, servidor.dominio Substituição de variáveis por fatos
  • 127. Base Class class linux-server {! include sysadmin-utils! include zabbix-agent! include ntpconf! include locales! include hosts! include users! include localmta! include vimrc! include backup-agent! include apt-repos! }
  • 128. Node default node default {! include linux-server! }
  • 131.
  • 133.
  • 135. Outros projetos Puppetlabs PuppetDB (coletor de dados) Razor (provisionador) Hiera (separa dados de código) Facter (fatos do sistema) Mcollective (orquestrador)
  • 138.
  • 139.
  • 140. Posso fazer mudanças em tempo real?
  • 141. Marionette Collective Orquestrador de nodes Execução de Tarefas Paralelas Interação com centenas de nodes Inventário descentralizado Leitura de meta-dados do Puppet Similar a Fabric e Capistrano
  • 143. Ferramentas de provisionamento VM ! Foreman Vagrant Razor Sprinkle Puppet Enterprise
  • 144. Ferramentas de provisionamento SW ! Ansible Salt Capistrano Fabric
  • 146. Qual o resultado concreto?
  • 147. A o e s c r e v e r m o s a s n o s s a s configurações, estamos expressando o que desejamos ter em nossos nodes, com isto, já estamos construindo nossa documentação.
  • 148. Aos escrevermos uma configuração, estamos definindo como aquilo de ser instalado, configurado e como deve funcionar. Toda a equipe passa a usar a mesma receita, isto significa que teremos processos padronizados.
  • 149. O Puppet oferece recursos para você fazer backup e restore de arquivos modificados, portanto, você tem a segurança de poder recuperar ambientes caso precise.
  • 150. Ao adotar Puppet você não vai mais sentir vontade de executar nada sem ele, tudo já nascerá automatizado e controlado, com processos e documentação instantânea.
  • 152. Um sysadmin que não usa Puppet consegue administrar no máximo 30 servidores, com alguma dificuldade e muito retrabalho.
  • 153. Um sysadmin que usa Puppet consegue administrar entre 250 e 1000 servidores com facilidade, a quantidade vai depender do nível de automatização e maturidade do profissional e sua equipe.
  • 154. Para administrar 800 VMs, utilizando Puppet, você precisará de 4 sysadmins, e afirmo que dependendo do nível de automação até menos.
  • 155. Compare Ambiente com 800 nodes modo manual puppet instalando agente 133 horas N minutos
  • 156. Benefícios Reais Maior produtividade em menor tempo Poucos sysadmins para muitos nodes Diminuição de falhas humanas Maior controle de todo o seu parque Diminuição do tempo gasto em mudanças Diminuição do custo de manutenção
  • 157. O sysadmin fará jornadas de trabalho normais, ficará mais tempo com a família, terá mais qualidade de vida e com isso irá produzir mais e melhor.
  • 158. O negócio de sua empresa vai fluir, ter m e l h o r q u a l i d a d e , m a i o r disponibilidade e menor custo operacional, sendo gerido por uma equipe qualificada e eficiente.
  • 160. Puppetlabs Suporte Comercial (em inglês) Programa de treinamento presencial Programa de certificação para Sysadmins - PCP 201 Programa de certificação para Developers - PCP 301 Puppet Enterprise Dashboard (Gerenciador)
  • 161. Puppet em números 700+ pessoas online no canal #puppet da irc.freenode.net 8.500+ repositórios no GitHub 1000+ módulos no PuppetForge 5000+ usuários ativos na lista puppet-users com 8000+ tópicos de discussão Comunidade brasileira!
  • 164. • Suporte Oficial Puppetlabs no Brasil • Empresa especializada em Puppet • Cursos oficiais, Puppet Enterprise, consultoria e suporte • 1o Parceiro oficial Puppetlabs Brasil • 1o empresa com pessoas certificados PCP na América Latina • Acesse http://www.instruct.com.br
  • 165. Inovando com o Puppet
  • 166. PUPPET COMO SERVIÇO • Gerenciamento de Configuração COMO SERVIÇO ! • Automatizar Infraestrutura de GRANDES CORPORAÇÕES ! • Interface intuitiva focada em AGILIDADE e AUTONOMIA ! • Suporte com PROFISSIONAIS CERTIFICADOS (PCP, RHCE, LPI-3) ! • SERVIÇO PIONEIRO para Gestão de Infraestrutura no Brasil www.configr.com
  • 169. Linkedin: http://br.linkedin.com/in/gutocarv E-mail: gutocarvalho@gmail.com Contato Slides: slideshare.net/gutocarvalho Blog: gutocarvalho.net Twitter: @gutocarvalho http://puppetlabs.com http://instruct.com.br http://configr.com