Puppet, Ansible, Salt: Maturidade, Simplicidade e Flexibilidade

1.095 visualizações

Publicada em

Puppet, Ansible e Salt são 3 das principais ferramentas livres de gerência de configuração no cenário atual (some a elas apenas Chef e CfEngine e temos todos os principais atuais nomes dessa categoria).

As 3 ferramentas tem crescido muito nos últimos anos, se tornando cada vez mais populares. As necessidades de gerenciar ambientes em escalas cada vez maiores, o crescimento de metodologias ágeis e da cultura DevOps, entre outros fatores, tem tornado cada vez mais necessárias e pervasivas a automação de processos e testes, e a abordagem de infraestrutura como código.

É apresentado o básico sobre cada ferramenta e sobre o "ecossistema" de cada uma, comentar e discutir as principais diferenças entre elas e fornecer aos participantes uma série de referências e incentivos para que eles possam descobrir mais e avaliar qual a mais adequada para os seus ambientes. São mostrados também alguns exemplos de código fazendo a mesma tarefa em cada uma.

Associado à apresentação estou criando um ambiente Vagrant no meu github com as várias ferramentas e exemplos prontos para uso: https://github.com/dgmorales/vagrant-cfgmgmt-sandbox.

Esta apresentação foi realizada em um Meetup DevOps Carioca em abril/2016 e FISL17 em julho/2016. Ela está disponível online também em http://dgmorales.info/talks/cm-pas.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.095
No SlideShare
0
A partir de incorporações
0
Número de incorporações
704
Ações
Compartilhamentos
0
Downloads
9
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Puppet, Ansible, Salt: Maturidade, Simplicidade e Flexibilidade

  1. 1. →
  2. 2. Puppet Master Puppet DB Puppet Explorer* Mcollective Server Puppet Agent Mcollective Client Mcollective Server Puppet Agent Arquitetura Puppet
  3. 3. Control Machine Ansible Tower / Rundeck Powershell Remoting SSH Server "Arquitetura" Ansible Control Machine
  4. 4. Salt Master Saltpad* Arquitetura Salt salt-ssh Salt Minion ZeroMQ Salt Minion ZeroMQ Salt Minion SSH
  5. 5. package { 'openssh-server': ensure => installed, } file { '/etc/ssh/sshd_config': source => 'file:///vagrant/puppet/sshd_config', owner => 'root', group => 'root', mode => '0644', notify => Service['ssh'] # require => Package['openssh-server'], } service { 'ssh': ensure => running, enable => true, }
  6. 6. - hosts: all name: Install SSH Server tasks: - package: name=openssh-server state=present - template: src: sshd_config dest: /etc/ssh/sshd_config owner: root group: root mode: 0644 notify: - restart ssh - service: name=ssh state=started handlers: - name: restart ssh service: name=ssh state=restarted
  7. 7. openssh-server: pkg.installed: - name: openssh-server service.running: - name: ssh - enable: True file.managed: - name: /etc/ssh/sshd_config - source: salt://sshd_config - user: root - group: root - mode: 644 - watch_in: - service: openssh-server
  8. 8. $binaries = ["run", "build", "update", "foo"] $binaries.each |String $binary| { file {"/usr/local/bin/myapp-$binary": ensure => link, target => "/opt/myapp/bin/$binary", } }
  9. 9. - hosts: all tasks: - name: create symlinks for our app file: > state=link src=/opt/myapp/bin/{{ item }} dest=/usr/local/bin/myapp-{{ item }} force=yes with_items: - run - build - update - foo
  10. 10. {% for binary in ['run', 'build', 'update', 'foo'] %} /usr/local/bin/myapp-{{ binary }}: file.symlink: - target: /opt/myapp/bin/{{ binary }} {% endfor %}

×