(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Comparativa
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Comparativa

on

  • 1,344 views

Uma Analise Comparativa sobre a Gerencia de Configuração com Puppet, Ansible e Chef.

Uma Analise Comparativa sobre a Gerencia de Configuração com Puppet, Ansible e Chef.

Statistics

Views

Total Views
1,344
Views on SlideShare
1,344
Embed Views
0

Actions

Likes
1
Downloads
23
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Comparativa Presentation Transcript

  • 1. Gerenciamento de Configuração “DevOps em Ação” Samuel Sampaio - SMk Tecnologia samuel@smktecnologia.com.br github.com/SamukaSMk
  • 2. O Que é Gerenciamento de Configuração ?● O que é: “Gerenciamento de Configuração é o processo de controle de itens configuraveis e seus requisitos, gerenciados e declarados de forma controlada para mudanças, organizando e padronizando a infraestrutura de TI de uma forma ágil e automatizada.● Como funciona: Levantar Dependências Aplicar dependencias no Declarar ambiente Configurações Testar Alterações By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 3. Sistemas de Gerenciamento de Configurações Atuais ● Puppet ● Chef ● Ansible(Desenv. em Ruby) (Desenv. em Ruby) (Desenv. Em Python)Muito Conhecido Conhecido no mundo Não tão famosono ambiente e TI e de TI, porem mais quando os outros, complexo de porem de simplesFacil de Configurar configurar/utilizar utilização By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 4. Como Compara-los ? “Depende das necessidades de Aplicação”Puppet Chef http://www.transpi.com.br/noticias/saipem7000_01.jpg Ansible By: Samuel Sampaio – SMk Technologia http://www.motorstown.com/imgs/22100-ducati-1098-superbike-4.html <samuel@smktecnologia.com.br> Aka: github.com/SamukaSMk
  • 5. Arquitetura: Puppethttp://docs.puppetlabs.com/images/Puppet_Star.png http://gutocarvalho.net/wordpress/wp-content/uploads/2012/05/manifest_to_defined_state_split.png By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 6. Arquitetura: Chef http://wiki.opscode.com/download/attachments/7274878/chef-server-arch.png By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 7. Arquitetura: Ansible http://ansible.cc By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 8. Principais Itens de Configuração (ICs) Para o Inventário de Recursos :➔ Grupos de ativos/servidores de seu (parque de maquinas)➔ Aplicações Instaladas x Versionamento de Necessidades➔ Atributos Especificos de Configurações das Aplicações➔ Configurações Padrões do ambiente necessárias para um certo proprósito➔ Execução de Serviços/Processos (Agendado x 24x7) By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 9. Métodos de Definição de Recursos: Uso: Puppet Chef AnsibleLinguagem: ● Própria – DSL ● Própria – DSL ● Markup: YAML ● RubyDeclaração das ● Manifestos ● CookBooks ● PlayBooksConfigurações:Itens de ● Resources ● Resources ● Modulesconfiguração:Blocos de ● Classes ● Blocos de ● Tasksconfigurações: Cookbooks ● Blocos RubyPacotes de ● Módulos ●CookBooks ●PlayBooksDeclarações Genéricos Genéricos By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 10. Declaração de Inventário e Conjuntos de Recursos : Puppet Ansible ARQUIVO: manifests/site.pp ARQUIVO: hosts# Declaraçoes que afetam todos hosts [test_servers]node default { web-servers-1 include classes_dos_manifestos,} [apache_servers] web-servers-2# Declaraçoes afetam hosts do grupo test_servers web-servers-3node test_servers { 10.0.0.10 include classes_dos_manifestos,}# Declaraçoes afetam host especifico web-server-1node web-servers-1 inherits test_servers { include usuarios_smktech} ARQUIVO: manifests/classes/exemplo.pp ARQUIVO: playbooks/exemplo-test_servers.yml - hosts: test_serversclass usuarios_smktech { tasks: # Declaraçoes de Recursos AQUI - name: Nome do Recurso tipo_de_recurso { nome_ou_acao_do_recurso : action: atrubuto_do_recurso => valor, modulo_do_recurso atrubuto_do_recurso => valor, atrubuto_do_recurso=valor } atrubuto_do_recurso=valor - modulo_do_recurso: atrubuto_do_recurso=valor} handlers: - name: Nome do Handler - action: service name=httpd state=restarted By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 11. Mãos a Massa: Definição de Recursos Básicos➔ Grupos de ativos/servidores (parque de maquinas) : ➔ test_servers: ➔ Web-server-1 (192.168.100.15)➔ Configurações Padrões necessárias do ambiente (SMK Tecnologia) – Grupo de Usuários: ● Smktech – Gid: 1000 – Usuários: ● SamukaSmk – Uid: 1001 – Grupo: Smktech ● Lindenbergh – Uid: 1002 – Grupo: Smktech● Aplicações Instaladas x Versionamento de necessidades e (segurança) : – NTP: ● Versão: 4.2.6p5 ● Repo: epel6 – OpenSSH: ● Versão: v5.3p1 ● Repo: amzn-main● Atributos Especificos de Configurações das Aplicações: – Privilégios (Sudoers): ● Grupo: (smktech) com sudo sem senha – Acesso (SSH): ● Grupo: (smktech) – HoraCerta (NTP): By: Samuel Sampaio – SMk Technologia ● Coleta de hora dos servidores brasileiros <samuel@smktecnologia.com.br> Aka: github.com/SamukaSMk
  • 12. Declaração de Recursos Básicos: 1. Usuários / Grupo Puppet Ansible# CRIA Grupo (smktech) ### Exemplo de uso do módulo, sem declarar action:group { smktech : ensure => present, # CRIA Grupo (smktech) no linux gid => 1000, - group: name => smktech, name=smktech} gid=1000 state=present# CRIA Usuario (samukasmk), no grupo (smktech)user { samukasmk : ### Exemplo de uso dos módulos, declararando na action ensure => present, - name: CRIA Usuario (samukasmk), no grupo (smktech) uid => 1001, action: gid => smktech, user shell => /bin/bash, name=samukasmk home => /home/samukasmk, group=smktech managehome => true, shell=/bin/bash} uid=1001 state=present# CRIA Usuario (lindenberg), no grupo (smktech)user { lindenbergh : - name: CRIA Usuario (lindenbergh), no grupo (smktech) ensure => present, action: uid => 1002, user gid => smktech, name=lindenbergh shell => /bin/bash, group=smktech home => /home/adminzero, shell=/bin/bash managehome => true, uid=1002} state=present By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 13. Declaração de Recursos Básicos: 2. Atribuiçoes de Chaves SSH Puppet Ansible# ATRUIBUI Chave ao usuário (samukasmk) - name: ATRIBUI Chave ao usuáriossh_authorized_key { samukasmk.pub : (samukasmk) ensure => present, action: user => samukasmk, key => ssh-rsa AAAAs8ds879d7..., authorized_key} user=samukasmk state=present# ATRUIBUI Chave ao usuário (lindenbergh) key=”ssh-rsa AAAAs8ds879d7...”ssh_authorized_key { lindenbergh.pub : ensure => present, - name: ATRIBUI Chave ao usuário user => lindenbergh, (lindenbergh) key => ssh-rsa AAAAdud7h8d7..., action: } authorized_key user=lindenbergh state=present key=”ssh-rsa AAAAdud7h8d7...” By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 14. Declaração de Recursos Básicos: 3. Privilégios (Sudoers) Puppet# Se NÃO (Encontrar o grupo [smktech] liberado)# LIBERA o grupo [smktech] com permissão de sudo su.exec { ”/bin/echo %smktech ALL=(ALL) NOPASSWD : ALL >> /etc/sudoers” : unless => ”grep ^%smktech.*NOPASSWD /etc/sudoers > /dev/null 2>&1”, path => ”/usr/bin:/usr/sbin:/bin”,} Ansible- name: LIBERA o grupo (smktech) com permissão de sudo su, por substituição action: “ lineinfile dest=/etc/sudoers regexp= line=%smktech ALL=(ALL) NOPASSWD : ALL backup=yes insertafter=EOF state=present “ By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 15. Declaração de Recursos Básicos: 4. HoraCerta (NTP) Puppet Ansible# INSTALA pacote (ntp) - name: INSTALA pacote (ntp)package { ntp : action: ensure => installed, yum} name=ntp state=present# HABILITA o serviço (NTPd) service { ntpd : - name: CRIA o arquivo (/etc/ntp.conf) a partir do ensure => running, template enable => true, action: require => Package["ntp"], template } src=base_linux/ntpd/templates/ntp.conf.j2 dest=/etc/ntp.conf# CRIA o arquivo (/etc/ntp.conf) a partir do template owner=rootfile { /etc/ntp.conf : group=root source => puppet:///files/base_linux/ntp/ntp.conf, mode=0644 ensure => present, owner => root, - name: HABILITA o serviço (NTPd) e o REINICIA group => root, para efetivar mudancas mode => 644, action: notify => Service["ntpd"], service} name=ntpd enabled=yes state=restarted By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 16. Aplicação de Declarações: Puppet# Uma Vez Configurado os manifestos e testados:# 1. Certifique-se que o serviço puppet (client/node) esta rodando service puppet restart# 2. Aguarde por 30 min para as declarações serem aplicadas.# Forçando a aplicação das declarações pelo (server/master) {para teste dos manifestos} puppet apply --verbose --debug /etc/puppet/manifests/site.pp# Declaração na linha de comando (no quente) [ad-hoc]: puppet resource user dave ensure=present shell="/bin/zsh" home="/home/dave" managehome=true Ansible# Exportando a variavel do arquivo de inventárioexport ANSIBLE_HOSTS=./hosts# Carregando ssh-agent e chavessh-agent $BASHssh-add /path/para/chave_ssh# Uma Vez Configurado o playbook:ansible-playbook -u usuario --sudo test_servers-playbook.yml# Declaração na linha de comando (no quente) [ad-hoc]:ansible -u usuario –sudo grupo_de_servidores -m user -a “name=dave state=present shell=/bin/zsh” By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 17. Controle de Versões: Puppetcd /etc/puppetgit add .git commit -m “Alteração XPTO do manifesto BLAH” Ansiblecd /etc/ansiblegit add .git commit -m “Alteração XPTO do playbook BLAH.yml” By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 18. Próximos Passos Para Auto-Automação: Puppet# Módulo não-nativo do puppetpuppet help mode_aws Ansible# Módulos Nativos do Ansibleansible -u user --sudo -m add_host -a “ hostname=${ip_from_ec2create}groups=just_created foo=42”ansible -u user --sudo -m ec2 -a “keypair=admin instance_type=m1.large image=emi-40603AD1 wait=true group=webserver count=3 group=webservers” By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 19. Perguntas? Muito Obrigado! Por: Samuel Sampaio <samukasmk@gmail.com> By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk
  • 20. Referências Eletrônicas:● Puppet: – http://docs.puppetlabs.com – http://gutocarvalho.net/ – http://www.puppetcookbook.com/ – http://www.slideshare.net/jefesrodrigues/puppet-torne-seu-datacenter-gil – http://puppet-br.org/ – http://www.vivaolinux.com.br/artigo/Instalacao-e-Configuracao-do-Puppet – https://padrao.sarava.org/puppet/ –● Ansible: – http://ansible.cc/docs/ – http://www.youtube.com/watch?v=up3ofvQNm8c – http://groups.google.com/group/ansible-project – https://github.com/ansible/ansible/ – http://webchat.freenode.net/?channels=ansible – http://www.ansibleworks.com/ – http://lesterwade.wordpress.com/2013/02/05/ansible-playbook-to-deploy-a-workload-using-the-ec – http://michaeldehaan.net/ – http://jpmens.net/2012/09/19/on-the-creation-of-an-ansible-booklet/ – http://www.slideshare.net/lorinh/vagrant-ansible-and-openstack-on-your-laptop – http://www.cybera.ca/tech-radar/first-look-ansible● Chef: – http://wiki.opscode.com/display/chef/ By: Samuel Sampaio – SMk Technologia <samuel@smktecnologia.com.br> aka: github.com/SamukaSMk