(devops) gerencia de configuração, puppet, ansible e chef uma analise comparativa
TRANSCRIPT
Gerenciamento de ConfiguraoDevOps em Ao
Samuel Sampaio - SMk [email protected]/SamukaSMk
O Que Gerenciamento de Configurao ?
O que :Gerenciamento de Configurao o processo de controle de itens configuraveis e seus requisitos, gerenciados e declarados de forma controlada para mudanas, organizando e padronizando a infraestrutura de TI de uma forma gil e automatizada.
Como funciona:
Levantar Dependncias
Testar Alteraes
Declarar Configuraes
Aplicar dependencias no ambiente
By: Samuel Sampaio SMk Technologia aka: github.com/SamukaSMk
Puppet
(Desenv. em Ruby)Muito Conhecido no ambiente e TI e Facil de Configurar
Sistemas de Gerenciamento de Configuraes Atuais
Chef
(Desenv. em Ruby)Conhecido no mundo de TI, porem mais complexo de configurar/utilizar
Ansible
(Desenv. Em Python)No to famoso quando os outros, porem de simples utilizao
By: Samuel Sampaio SMk Technologia aka: github.com/SamukaSMk
http://www.motorstown.com/imgs/22100-ducati-1098-superbike-4.html
http://www.transpi.com.br/noticias/saipem7000_01.jpg
Como Compara-los ?
Depende das necessidades de Aplicao
Ansible
Puppet
Chef
By: Samuel Sampaio SMk Technologia
Aka: github.com/SamukaSMk
Arquitetura: Puppet
By: Samuel Sampaio SMk Technologia aka: github.com/SamukaSMk
http://docs.puppetlabs.com/images/Puppet_Star.png
http://gutocarvalho.net/wordpress/wp-content/uploads/2012/05/manifest_to_defined_state_split.png
Arquitetura: Chef
By: Samuel Sampaio SMk Technologia aka: github.com/SamukaSMk
http://wiki.opscode.com/download/attachments/7274878/chef-server-arch.png
Arquitetura: Ansible
By: Samuel Sampaio SMk Technologia aka: github.com/SamukaSMk
http://ansible.cc
Principais Itens de Configurao (IC's)
Para o Inventrio de Recursos :
Grupos de ativos/servidores de seu (parque de maquinas)
Aplicaes Instaladas x Versionamento de Necessidades
Atributos Especificos de Configuraes das Aplicaes
Configuraes Padres do ambiente necessrias para um certo proprsito
Execuo de Servios/Processos (Agendado x 24x7)
By: Samuel Sampaio SMk Technologia aka: github.com/SamukaSMk
Mtodos de Definio
de Recursos:
Uso:PuppetChefAnsible
Linguagem: Prpria DSL
Prpria DSL
Ruby
Markup: YAML
Declarao dasConfiguraes: Manifestos
CookBooks
PlayBooks
Itens de configurao: Resources
Resources
Modules
Blocos de configuraes: Classes
Blocos de Cookbooks
Blocos Ruby
Tasks
Pacotes de Declaraes Mdulos
CookBooks Genricos
PlayBooks Genricos
By: Samuel Sampaio SMk Technologia aka: github.com/SamukaSMk
Declarao de Inventrio e
Conjuntos de Recursos :
PuppetAnsible
ARQUIVO: manifests/site.pp ARQUIVO: hosts
# Declaraoes que afetam todos hostsnode default { include classes_dos_manifestos,} # Declaraoes afetam hosts do grupo test_serversnode test_servers { include classes_dos_manifestos,}
# Declaraoes afetam host especifico web-server-1node web-servers-1 inherits test_servers { include usuarios_smktech}[test_servers]web-servers-1
[apache_servers]web-servers-2 web-servers-310.0.0.10
ARQUIVO: manifests/classes/exemplo.ppARQUIVO: playbooks/exemplo-test_servers.yml
class usuarios_smktech { # Declaraoes de Recursos AQUI tipo_de_recurso { 'nome_ou_acao_do_recurso' : atrubuto_do_recurso => 'valor', atrubuto_do_recurso => 'valor', } }- hosts: test_servers tasks: - name: Nome do Recurso action: modulo_do_recurso 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 aka: github.com/SamukaSMk
Mos a Massa: Definio de Recursos Bsicos
Grupos de ativos/servidores (parque de maquinas) :test_servers:Web-server-1 (192.168.100.15)
Configuraes Padres necessrias do ambiente (SMK Tecnologia)
Grupo de Usurios:SmktechGid: 1000
Usurios:SamukaSmkUid: 1001
Grupo: Smktech
LindenberghUid: 1002
Grupo: Smktech
Aplicaes Instaladas x Versionamento de necessidades e (segurana) : NTP:Verso: 4.2.6p5
Repo: epel6
OpenSSH:Verso: v5.3p1
Repo: amzn-main
Atributos Especificos de Configuraes das Aplicaes:Privilgios (Sudoers):Grupo: (smktech) com sudo sem senha
Acesso (SSH):Grupo: (smktech)
HoraCerta (NTP):Coleta de hora dos servidores brasileiros
By: Samuel Sampaio SMk Technologia
Aka: github.com/SamukaSMk
Declarao de Recursos Bsicos:
1. Usurios / Grupo
PuppetAnsible
# CRIA Grupo (smktech) group { 'smktech' : ensure => 'present', gid => '1000', name => 'smktech', } # CRIA Usuario (samukasmk), no grupo (smktech) user { 'samukasmk' :ensure => present,uid => '1001',gid => 'smktech',shell => '/bin/bash',home => '/home/samukasmk',managehome => true, } # CRIA Usuario (lindenberg), no grupo (smktech) user { 'lindenbergh' : ensure => present, uid => '1002', gid => 'smktech', shell => '/bin/bash', home => '/home/adminzero', managehome => true, }### Exemplo de uso do mdulo, sem declarar action:
# CRIA Grupo (smktech) no linux- group: name=smktech gid=1000 state=present
### Exemplo de uso dos mdulos, declararando na action- name: CRIA Usuario (samukasmk), no grupo (smktech) action: user name=samukasmk group=smktech shell=/bin/bash uid=1001 state=present
- name: CRIA Usuario (lindenbergh), no grupo (smktech) action: user name=lindenbergh group=smktech shell=/bin/bash uid=1002 state=present
By: Samuel Sampaio SMk Technologia aka: github.com/SamukaSMk
Declarao de Recursos Bsicos:
2. Atribuioes de Chaves SSH
PuppetAnsible
# ATRUIBUI Chave ao usurio (samukasmk)ssh_authorized_key { 'samukasmk.pub' : ensure => 'present', user => 'samukasmk', key => 'ssh-rsa AAAAs8ds879d7...',}
# ATRUIBUI Chave ao usurio (lindenbergh)ssh_authorized_key { 'lindenbergh.pub' : ensure => 'present', user => 'lindenbergh', key => 'ssh-rsa AAAAdud7h8d7...', }- name: ATRIBUI Chave ao usurio (samukasmk) action: authorized_key user=samukasmk state=present key=ssh-rsa AAAAs8ds879d7...
- name: ATRIBUI Chave ao usurio (lindenbergh) action: authorized_key user=lindenbergh state=present key=ssh-rsa AAAAdud7h8d7...
By: Samuel Sampaio SMk Technologia aka: github.com/SamukaSMk
Declarao de Recursos Bsicos:
3. Privilgios (Sudoers)
Puppet
# Se NO (Encontrar o grupo [smktech] liberado)# LIBERA o grupo [smktech] com permisso 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 permisso de 'sudo su', por substituio action: lineinfile dest=/etc/sudoers regexp='' line='%smktech ALL=(ALL) NOPASSWD : ALL' backup=yes insertafter=EOF state=present
By: Samuel Sampaio SMk Technologia aka: github.com/SamukaSMk
Declarao de Recursos Bsicos:
4. HoraCerta (NTP)
PuppetAnsible
# INSTALA pacote (ntp) package { 'ntp' : ensure => 'installed', } # HABILITA o servio (NTPd) service { 'ntpd' :ensure => 'running',enable => true,require => Package["ntp"], } # CRIA o arquivo (/etc/ntp.conf) a partir do template file { '/etc/ntp.conf' : source => 'puppet:///files/base_linux/ntp/ntp.conf', ensure => present, owner => 'root', group => 'root', mode => 644, notify => Service["ntpd"], }- name: INSTALA pacote (ntp) action: yum name=ntp state=present
- name: CRIA o arquivo (/etc/ntp.conf) a partir do template action: template src=base_linux/ntpd/templates/ntp.conf.j2 dest=/etc/ntp.conf owner=root group=root mode=0644
- name: HABILITA o servio (NTPd) e o REINICIA para efetivar mudancas action: service name=ntpd enabled=yes state=restarted
By: Samuel Sampaio SMk Technologia aka: github.com/SamukaSMk
Aplicao de Declaraes:
Puppet
# Uma Vez Configurado os manifestos e testados:# 1. Certifique-se que o servio puppet (client/node) esta rodando service puppet restart # 2. Aguarde por 30 min para as declaraes serem aplicadas.
# Forando a aplicao das declaraes pelo (server/master) {para teste dos manifestos} puppet apply --verbose --debug /etc/puppet/manifests/site.pp
# Declarao 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 inventrioexport 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
# Declarao 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 aka: github.com/SamukaSMk
Controle de Verses:
Puppet
cd /etc/puppet
git add . git commit -m Alterao XPTO do manifesto BLAH
Ansible
cd /etc/ansible
git add . git commit -m Alterao XPTO do playbook BLAH.yml
By: Samuel Sampaio SMk Technologia aka: github.com/SamukaSMk
Prximos Passos Para
Auto-Automao:
Puppet
# Mdulo no-nativo do puppet
puppet help mode_aws
Ansible
# Mdulos Nativos do Ansible
ansible -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 aka: github.com/SamukaSMk
Perguntas?
Muito Obrigado! Por: Samuel Sampaio
By: Samuel Sampaio SMk Technologia aka: github.com/SamukaSMk
By: Samuel Sampaio SMk Technologia aka: github.com/SamukaSMk
Referncias Eletrnicas:
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-ec2-module/
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/