Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Puppet vs ansible

119 views

Published on

Breve comparação entre as duas ferramentas.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Puppet vs ansible

  1. 1. Ansible / Puppet André “Ramoni” Guimarães https://ramoni.com.br
  2. 2. Ansible / Puppet Exemplos Considerações Conclusão
  3. 3. Exemplos Exemplos Considerações Conclusão
  4. 4. 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 } }
  5. 5. Linguagem Ansible Python YAML Exemplos Considerações Conclusão Puppet Ruby Ruby like
  6. 6. Instalar pacote Ansible - package: name: htop state: present Exemplos Considerações Conclusão Puppet package { ‘htop’: ensure => present, }
  7. 7. Subir serviço Ansible - service: name: crond state: started enabled: true Exemplos Considerações Conclusão Puppet service { ‘crond’: ensure => running, enable => true, }
  8. 8. 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, }
  9. 9. 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, } } }
  10. 10. 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, }
  11. 11. 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, }
  12. 12. 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 -%>
  13. 13. 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
  14. 14. Fazem a mesma coisa ? Exemplos Considerações Conclusão
  15. 15. Considerações Exemplos Considerações Conclusão
  16. 16. 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
  17. 17. 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
  18. 18. Executar vs assegurar Ansible Cron / Rundeck / Tower / AWX Exemplos Considerações Conclusão Puppet Drift de 30 minutos
  19. 19. 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
  20. 20. Facts Ansible Facts defasados Exemplos Considerações Conclusão Puppet Inventário atualizado Pode executar ação quando um fact mudar
  21. 21. Ordem de execução Ansible Em sequência Exemplos Considerações Conclusão Puppet Você precisa especificar as dependências
  22. 22. 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
  23. 23. 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)
  24. 24. 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
  25. 25. Ferramentas auxiliares Ansible Tower / AWX / ARA Reports Workflows Exemplos Considerações Conclusão Puppet Foreman / Satellite Reports Provisionamento, IPAM Inventário
  26. 26. Fazem a mesma coisa ? Exemplos Considerações Conclusão
  27. 27. Conclusão Exemplos Considerações Conclusão
  28. 28. 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
  29. 29. 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
  30. 30. 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
  31. 31. 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
  32. 32. 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.
  33. 33. 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
  34. 34. Mcollective
  35. 35. Mcollective
  36. 36. Ansible e Puppet https://ansible.com https://puppet.com Obrigado André “Ramoni” Guimarães https://ramoni.com.br

×