(devops) gerencia de configuração, puppet, ansible e chef uma analise comparativa

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

If you can't read please download the document

Upload: samuel-sampaio

Post on 16-Apr-2017

3.267 views

Category:

Technology


1 download

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/