SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
Ansible / Puppet
André “Ramoni” Guimarães
https://ramoni.com.br
Ansible / Puppet
Exemplos
Considerações
Conclusão
Exemplos
Exemplos
Considerações
Conclusão
Facts
Ansible
“facter_os": {
"architecture": "x86_64",
"family": "RedHat",
"hardware": "x86_64",
"name": "CentOS",
"release": {
"full": "7.3.1611",
"major": "7",
"minor": "3"
},
"selinux": {
"enabled": false
}
},
Exemplos
Considerações
Conclusão
Puppet
os => {
architecture => "x86_64",
family => "RedHat",
hardware => "x86_64",
name => "CentOS",
release => {
full => "7.3.1611",
major => "7",
minor => "3"
},
selinux => {
enabled => false
}
}
Linguagem
Ansible
Python
YAML
Exemplos
Considerações
Conclusão
Puppet
Ruby
Ruby like
Instalar pacote
Ansible
- package:
name: htop
state: present
Exemplos
Considerações
Conclusão
Puppet
package { ‘htop’:
ensure => present,
}
Subir serviço
Ansible
- service:
name: crond
state: started
enabled: true
Exemplos
Considerações
Conclusão
Puppet
service { ‘crond’:
ensure => running,
enable => true,
}
Criar usuário
Ansible
- user:
name: infra
state: present
shell: /bin/bash
group: admin
password: {{ infra_passwd_hash }}
Exemplos
Considerações
Conclusão
Puppet
user { ‘infra’:
ensure => present,
shell => ‘/bin/bash’,
gid => ‘admin’,
password => $infra_passwd_hash,
}
Condicionais
Exemplos
Considerações
Conclusão
Ansible
- package:
name: open-vm-tools
state: present
when:
- facter_virtual == “vmware”
- (ansible_os_family == “RedHat” and ansible_distribution_major_version >= 6) or
(ansible_os_family == “Debian” and ansible_distribution_major_version >= 7)
Puppet
if ( $::virtual == ‘vmware’ ) {
if ( $::osfamily == ‘RedHat’ and $::lsbmajdistrelease >= 6)
or ( $::osfamily == ‘Debian’ and $::lsbmajdistrelease >= 7) {
package { ‘open-vm-tools’:
ensure => present,
}
}
}
Loops
Ansible
- package:
name: "{{ item }}"
state: present
with_items:
- htop
- nload
- strace
Exemplos
Considerações
Conclusão
Puppet
$packages = [ ‘htop’, ‘nload’, ‘strace’ ]
package { $packages:
ensure => present,
}
Package / File / Service
Ansible
- package:
name: squid
state: present
- copy:
src: squid.conf
dest: /etc/squid/squid.conf
- service:
name: squid
state: started
enabled: true
Exemplos
Considerações
Conclusão
Puppet
package { ‘squid’:
ensure => present,
}
file { ‘/etc/squid/squid.conf’:
source => ‘puppet://modules/squid.conf’
}
service { ‘squid’:
ensure => running,
enable => true,
}
Templates
Ansible
Jinja2
# cat resolv.conf.j2
search {{ dns_domain }}
domain {{ dns_domain }}
{% for server in dns_servers %}
nameserver {{ server }}
{% endfor %}
Exemplos
Considerações
Conclusão
Puppet
Erb
# cat resolv.conf.erb
search <%= dns_domain %>
domain <%= dns_domain %>
<% @dns_servers.each do |server| -%>
nameserver <%= server %>
<% end -%>
Instalação
Ansible
# yum install ansible
Ready to go !
Criar inventário e playbooks
Exemplos
Considerações
Conclusão
Puppet
Instalar servidor Puppet
Instalar agente nos nodes
Criar classes e classificar
Fazem a mesma coisa ?
Exemplos
Considerações
Conclusão
Considerações
Exemplos
Considerações
Conclusão
Push vs Pull
Ansible
Hein ?
Push
Agentless
Problemas com NATs e rotas
Não escala
Exemplos
Considerações
Conclusão
Puppet
Teoria da promessa
Pull
Precisa de agente
Conexão do agente ao Puppet
Escalabilidade
Descentralizado
vs centralizado
Ansible
Bazar
Cada ansible no seu quadrado
Cagadas pontuais
Flexibilidade e agilidade
Report é STDOUT
Exemplos
Considerações
Conclusão
Puppet
Catedral
Um anel para controlar todos
Cagadas generalizadas
Responsabilidade e controle
Reports centralizados
Executar vs assegurar
Ansible
Cron / Rundeck / Tower / AWX
Exemplos
Considerações
Conclusão
Puppet
Drift de 30 minutos
Tshoot
Ansible
Sem interferência
Lembrar de mudar depois
Exemplos
Considerações
Conclusão
Puppet
Parar o agente do Puppet
Report de nodes que não se
reportam
Facts
Ansible
Facts defasados
Exemplos
Considerações
Conclusão
Puppet
Inventário atualizado
Pode executar ação quando um fact
mudar
Ordem de execução
Ansible
Em sequência
Exemplos
Considerações
Conclusão
Puppet
Você precisa especificar as
dependências
Idempotência
Ansible
Multiplos pontos de controle
Lista de ações a serem executadas
Pode executar ações opostas em
cada execução
Até na mesma execução…
Exemplos
Considerações
Conclusão
Puppet
Único ponto de controle
Estado final desejado
Reclama se houver inconsistência
Roles / Módulos
Ansible
HAproxy (1.4k)
Keepalived (6.7k)
Redis (252k) (+baixado do galaxy)
Consul (784)
Cassandra (63)
Exemplos
Considerações
Conclusão
Puppet
HAproxy (2.3M, supported)
Keepalived (5.1M, supported)
Redis (681k)
Consul (3.7M, aproved)
Cassandra (584k)
Módulos para windows
Ansible
Módulos específicos
win_file & win_copy
win_service
win_package
win_user
Exemplos
Considerações
Conclusão
Puppet
Recursos nativos
file
service
package
user
Ferramentas auxiliares
Ansible
Tower / AWX / ARA
Reports
Workflows
Exemplos
Considerações
Conclusão
Puppet
Foreman / Satellite
Reports
Provisionamento, IPAM
Inventário
Fazem a mesma coisa ?
Exemplos
Considerações
Conclusão
Conclusão
Exemplos
Considerações
Conclusão
O cagaço
Ansible
De executar todos os playbooks
Cagadas só quando executar
Não há como saber o drift
No ruim: CTRL+C
Exemplos
Considerações
Conclusão
Puppet
De alguém comitar uma cagada
Cagadas épicas
Drift de 30 minutos
No ruim: mata o Puppet
Consultoria local
Ansible
Sem necessidade de infra
Rodar da própria máquina
Se quebrarem, chama de novo
Exemplos
Considerações
Conclusão
Puppet
Instalar ambiente do Puppet server
Instalar agente e classificar
Se quebrarem, conserta sozinho
Consultoria remota
Ansible
Tem que alcançar a rede do cliente
Cliente vai criar uma VPN pra você
Exemplos
Considerações
Conclusão
Puppet
Ter um Puppet na AWS com todo
seu portfolio de serviços
Cliente pode instalar o agente e
apontar pro seu Puppet
Seu Puppet instala MCO
Aplicar melhorias posteriormente
Cenário ideal
Ansible
Times diferentes com acessos à
servidores diferentes ou em comum
Orquestração complexa
Exemplos
Considerações
Conclusão
Puppet
Gerenciamento centralizado em uma
equipe, regras centralizadas
Conformidade e correção automática
Conclusão
Para cada problema, uma delas será a melhor ferramenta.
Use a ferramenta que mais se alinhar com seu ambiente.
Quem disse que só pode usar uma ? Não martele parafusos.
Se há demanda para as duas ferramentas, use as duas. Ou as quatro.
Foreman
https://theforeman.org & https://goo.gl/JzhE9n
“Foreman is a complete lifecycle management tool for physical and virtual
servers.”
Integração com Ansible, Chef, Salt e Puppet (classificação e reports)
Provisionamento (AWS, VMware, Openstack, Azure, Bare Metal etc)
IPAM
Execução e agendamento de tarefas
Mcollective
Mcollective
Ansible e Puppet
https://ansible.com
https://puppet.com
Obrigado
André “Ramoni” Guimarães
https://ramoni.com.br

Mais conteúdo relacionado

Mais procurados

Apache2.4 tuning-hands on
Apache2.4 tuning-hands onApache2.4 tuning-hands on
Apache2.4 tuning-hands onRenato Gomes
 
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
 
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHPPHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHPAryel Tupinambá
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao TerraformLeandro Silva
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#Leandro Silva
 
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 sagaHugo Bessa
 
A Arte do Deployment - WebDevCamp
A Arte do Deployment - WebDevCampA Arte do Deployment - WebDevCamp
A Arte do Deployment - WebDevCampGeorge Guimarães
 
pfSense - Proxy integrado ao AD Regras por usuários e grupos
pfSense - Proxy integrado ao AD Regras por usuários e grupospfSense - Proxy integrado ao AD Regras por usuários e grupos
pfSense - Proxy integrado ao AD Regras por usuários e gruposCavalcante Treinamentos
 
06 breve histórico do action script - Flash 8
06 breve histórico do action script - Flash 806 breve histórico do action script - Flash 8
06 breve histórico do action script - Flash 8Reuel Lopes
 
(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
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxThiago Paes
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxThiago Paes
 
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 puppetDaniel Sobral
 
Depurando código PHP com Docker e Xdebug - PHPRS
Depurando código PHP com Docker e Xdebug - PHPRSDepurando código PHP com Docker e Xdebug - PHPRS
Depurando código PHP com Docker e Xdebug - PHPRSEduardo Pittol
 

Mais procurados (17)

Apache2.4 tuning-hands on
Apache2.4 tuning-hands onApache2.4 tuning-hands on
Apache2.4 tuning-hands on
 
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)
 
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHPPHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
 
Puppet webcast 4linux
Puppet webcast 4linuxPuppet webcast 4linux
Puppet webcast 4linux
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
 
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
 
A Arte do Deployment - WebDevCamp
A Arte do Deployment - WebDevCampA Arte do Deployment - WebDevCamp
A Arte do Deployment - WebDevCamp
 
Fabric
FabricFabric
Fabric
 
Trabalhando com Módulos no Puppet
Trabalhando com Módulos no PuppetTrabalhando com Módulos no Puppet
Trabalhando com Módulos no Puppet
 
pfSense - Proxy integrado ao AD Regras por usuários e grupos
pfSense - Proxy integrado ao AD Regras por usuários e grupospfSense - Proxy integrado ao AD Regras por usuários e grupos
pfSense - Proxy integrado ao AD Regras por usuários e grupos
 
06 breve histórico do action script - Flash 8
06 breve histórico do action script - Flash 806 breve histórico do action script - Flash 8
06 breve histórico do action script - Flash 8
 
(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...
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - Nginx
 
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
 
Depurando código PHP com Docker e Xdebug - PHPRS
Depurando código PHP com Docker e Xdebug - PHPRSDepurando código PHP com Docker e Xdebug - PHPRS
Depurando código PHP com Docker e Xdebug - PHPRS
 

Semelhante a Puppet vs ansible

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
 
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
 
Project HA
Project HAProject HA
Project HAKarpv
 
GSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression TestGSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression TestVictor Hugo Bilouro
 
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
 
Administracao de sistemas_com_puppet
Administracao de sistemas_com_puppetAdministracao de sistemas_com_puppet
Administracao de sistemas_com_puppetRamon Mota
 
Instalação e Configuração do Hipervisor xen pvm
Instalação e Configuração do Hipervisor xen pvmInstalação e Configuração do Hipervisor xen pvm
Instalação e Configuração do Hipervisor xen pvmFernando Pessoa
 
Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008zehzinho
 
Como criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containersComo criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containersElias Nogueira
 
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
 
Relatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunkRelatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunkJeison Barros
 
Análise de Tráfego TCP/IP
Análise de Tráfego TCP/IPAnálise de Tráfego TCP/IP
Análise de Tráfego TCP/IPThiago Finardi
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosElias Nogueira
 
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
 
Amazon EC2 boas praticas e otimizações de desempenho
Amazon EC2 boas praticas e otimizações de desempenhoAmazon EC2 boas praticas e otimizações de desempenho
Amazon EC2 boas praticas e otimizações de desempenhoAmazon Web Services LATAM
 

Semelhante a Puppet vs ansible (20)

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
 
Orquestração com Mcollective
Orquestração com McollectiveOrquestração com Mcollective
Orquestração com Mcollective
 
Puppet overview
Puppet overviewPuppet overview
Puppet overview
 
Vagrant + Puppet
Vagrant + PuppetVagrant + Puppet
Vagrant + Puppet
 
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!
 
Project HA
Project HAProject HA
Project HA
 
GSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression TestGSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression Test
 
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
 
Administracao de sistemas_com_puppet
Administracao de sistemas_com_puppetAdministracao de sistemas_com_puppet
Administracao de sistemas_com_puppet
 
Instalação e Configuração do Hipervisor xen pvm
Instalação e Configuração do Hipervisor xen pvmInstalação e Configuração do Hipervisor xen pvm
Instalação e Configuração do Hipervisor xen pvm
 
Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008
 
Como criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containersComo criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containers
 
Gerenciamento de configuração com puppet
Gerenciamento de configuração com puppetGerenciamento de configuração com puppet
Gerenciamento de configuração com puppet
 
Relatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunkRelatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunk
 
Análise de Tráfego TCP/IP
Análise de Tráfego TCP/IPAnálise de Tráfego TCP/IP
Análise de Tráfego TCP/IP
 
Middlewares ASP.NET
Middlewares ASP.NETMiddlewares ASP.NET
Middlewares ASP.NET
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
 
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
 
Amazon EC2 boas praticas e otimizações de desempenho
Amazon EC2 boas praticas e otimizações de desempenhoAmazon EC2 boas praticas e otimizações de desempenho
Amazon EC2 boas praticas e otimizações de desempenho
 

Puppet vs ansible