Download - Gerência de Configurações com o Puppet
![Page 1: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/1.jpg)
Gerência de Configurações com Puppetpor Péricles S. da C. Jr.
SEMCOMP 2015Salvador/BA 2015.09.04
![Page 2: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/2.jpg)
$ whoami● Péricles S. da C. Jr.● Bolsista na CRI/STI UFBA● Sysadmin Voluntário no
grupo GRACO/DCC-UFBA● Entusiasta FOSS (Debian
GNU/Linux)
![Page 3: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/3.jpg)
Automação de Infraestrutura ● Processo de criar scripts de ambientes● Replicação de configuração no ativo da Instituição● Automatização das atividades operacionais.● Infraestrutura Ágil.
○ Ter qualquer ambiente, seja PaaS, IaaS ou servidores físicos e independente do fornecedor utilizado.
● Gerência de configurações.
![Page 4: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/4.jpg)
Como é feita geralmente...● Configuração manual de ambientes (humano) ● Processos propensos à erros● Aumento dos tempos de ciclo● Impossibilidade de escalabilidade
![Page 5: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/5.jpg)
Tarefas Repetivas● Criação de usuários em servidores● Elaboração de scripts● Configuração de serviços● Configuração de monitoramentos● Criação de imagens de ambientes● Configuração do sistema
operacional● Instalação, atualização e remoção
de pacotes
![Page 6: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/6.jpg)
O que é o Puppet?● Ferramenta com versão Opensource, sob
licença Apache● Desenvolvida pelo Luke Kanie (CEO da
Puppetlabs )● Foco na Gerência de configurações● Linguagem DSL declarativa● Outras alternativas:
○ Chef○ Salt ○ CFEngine ○ Ansible
![Page 8: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/8.jpg)
A Comunidade
Fonte: https://puppetlabs.com/community/overview
![Page 9: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/9.jpg)
Legal não é! Mas pra que usar isso?● Escalabilidade● Gerenciamento de
configurações:○ Laboratórios (Ex: Desktops
e Notebooks)● Administrar Infraestrutura de
grande escala● Replicação de ambiente de
produção● Distribuição de atualizações
críticas
![Page 10: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/10.jpg)
Imperativa vs. Declarativa● Imperativa:● Descrição de um algoritmo
ou processo específico;
● Declarativa:● Descrição do estado ou
objetivo a ser alcançado.
![Page 11: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/11.jpg)
Exemplo● Imperativa
○ “Faça um sanduíche”○ Step by step○ Receitas, procedimentos ou
algoritmos● Declarativa
○ “Desejo um sanduíche”○ Deve existir um saduíche
com pão francês, presunto, alface, tomate e etc, após essa apresentação no coffe-break para o palestrante!
![Page 12: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/12.jpg)
Como funciona?
![Page 13: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/13.jpg)
Componentes Descrição
Agente Um daemon executando que coleta informações sobre o nó e envia essas informações ao Puppet principal.
Catalog Compilação de fatos que especificam como configurar o nó.
Facts Dados sobre um nó, enviados pelo nó para o Puppet Server.
Manifest Descreve recursos e as dependências entre eles.
Recursos Por exemplo, o pacote, arquivo ou serviço.
Módulo Relacionados a grupos (em um diretório). Por exemplo, um module pode definir como um banco de dados como o MySQL é instalado, configurado e executado.
Classes Coleção de recurso no puppet. Uma unidade lógica aplicada pelo agente através de uma definição de um nó.
Nó Um host gerenciado. Os nós são definidos como classes, mas contêm o nome do host ou nome completo do domínio.
Puppet Server O servidor que gerencia todos os nós do Puppet.
![Page 15: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/15.jpg)
GIVE ME THE CODES
![Page 16: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/16.jpg)
Declaração de um nónode /^node[0-9][0-9]\.lab$/ {
$rede= "homologacao"include apacheinclude tomcatinclude ntpinclude aliasesinclude openjdk_jre
}
![Page 17: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/17.jpg)
root@puppetserver:~# tree /etc/puppet/modules/ssh//etc/puppet/modules/ssh/├── manifests│ ├── config.pp│ ├── init.pp│ ├── install.pp│ ├── params.pp│ └── service.pp└── templates└── sshd_config.erb
2 directories, 6 files
![Page 18: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/18.jpg)
class ssh { include ssh::install include ssh::params include ssh::config include ssh::service
}
![Page 19: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/19.jpg)
class ssh::install { include ssh::params package { $ssh::params::packages: ensure => present, require => Class['repository::config'], }}
![Page 20: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/20.jpg)
class ssh::config { include ssh::params file { "/etc/ssh/sshd_config": ensure => present, owner => 'root', group => 'root', mode => '0600', content => template('ssh/sshd_config.erb'), require => Class["ssh::install"], notify => Class["ssh::service"], }}
![Page 21: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/21.jpg)
class ssh::service { include ssh::params service { $ssh::params::service: ensure => running, hasstatus => true, hasrestart => true, enable => true, require => Class["ssh::config"], }
}
![Page 22: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/22.jpg)
class ssh::params { $packages = hiera('ssh_packages') $service = hiera('ssh_service') $port_var = hiera('ssh_port') $allow_groups_var = hiera('ssh_allow_groups')}
![Page 23: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/23.jpg)
---ssh_packages: openssh-serverssh_service: sshssh_port: 6666ssh_allow_groups: sysadmins devels
![Page 24: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/24.jpg)
case $rede { 'desenvolvimento': {
$nameserver_var = ['192.168.xxx.xx']$domain_var = ['foo.exemlo.br']
} 'dmz': {
$nameserver_var = ['10.0.x.xxx','10.0.1.xxx']$domain_var = ['bar.exemplo.br']
} 'homologacao': {
$nameserver_var = ['192.168.xx.xx', '200.xxx.x.xx']$domain_var = ['bla.exemplo.br']
} default: {
fail("A ${rede} nao pertence a nenhuma rede de servidores") }
![Page 25: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/25.jpg)
<% @nameserver_var.each do |val| -%>nameserver <%= val %>
<% end -%><% @domain_var.each do |val_domain| -%>
search <%= val_domain -%><% end -%>
![Page 26: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/26.jpg)
A Pilha
![Page 27: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/27.jpg)
Exemplos
![Page 28: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/28.jpg)
Profiles e Roles
class java($distribution = 'jdk',$version = 'present',$package = undef,$java_alternative = undef,$java_alternative_path= undef
) { include java::params...
![Page 29: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/29.jpg)
class profile::java::jre { class { 'java': distribution => 'jre', } contain ::java}
![Page 30: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/30.jpg)
class logstash { yumrepo { 'logstash-1.5': ... } -> package { 'logstash': ... } -> file {'/etc/logstash/conf.d/central.conf': ... } ~> service {'logstash': ... }}
![Page 31: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/31.jpg)
class role::logserver { include profile::java::jre include profile::elasticsearch include profile::logstash include profile::kibana include profile::logging
Class['profile::java::jre'] -> Class['profile::elasticsearch'] Class['profile::elasticsearch'] -> Class['profile::logstash'] Class['profile::logstash'] -> Class['profile::kibana']}
![Page 32: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/32.jpg)
Pensamento do dia!
O “sucesso” do projeto de um bolsista depende do mouse ( by
Madson )
![Page 33: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/33.jpg)
Dashboard
![Page 34: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/34.jpg)
Dashboard
![Page 35: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/35.jpg)
Opa!!! “Peraí”!!!
● Que opressão é essa?
● E seu meu ativo tiver somente M$-Window$, como é que eu fico!?!?!?
![Page 36: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/36.jpg)
Plataformas Suportadas● Server 2003
e 2003 R2● Server 2008
e 2008 R2● Window$ 7● Server 2012
![Page 37: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/37.jpg)
Tipos de recursos Suportados
● File● User● Group● Schedule_task
● Package● Service● Exec● Host
Fonte: https://docs.puppetlabs.com/references/latest/type.html
Obs: 49 tipos de recursos em ambientes *nix.
![Page 38: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/38.jpg)
Chocolatey Package Manager
![Page 39: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/39.jpg)
Chocolatey Puppet Provider
![Page 40: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/40.jpg)
Dúvidas??
![Page 41: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/41.jpg)
Contato
Email: [email protected] / [email protected]: http://github.com/periclesjuniorLinkedin: http://br.linkedin.com/in/periclesjunior
![Page 42: Gerência de Configurações com o Puppet](https://reader033.vdocuments.net/reader033/viewer/2022051521/5874b5f21a28ab1b098b724d/html5/thumbnails/42.jpg)
Referências● http://www.ibm.com/developerworks/br/library/a-devops2/● http://softwarelivre.gov.br/palestras-tecnicas-cisl/palestra_puppet● http://spin.atomicobject.com/2012/09/13/from-imperative-to-
declarative-system-configuration-with-puppet/● http://www.example42.com/tutorials/PuppetTutorial● http://www.olindata.com/blog/2014/02/how-can-i-use-puppet● https://chocolatey.org/● http://docs.puppetlabs.com/windows/index.html● http://www.slideshare.net/PuppetLabs/plugging-chocolatey-into-your-
puppet-infrastructure-rob-reynolds-puppet-labs● https://github.com/instruct-br/webinar-elk● https://www.youtube.com/playlist?list=PLwbuDNhcHQgAr-
d5sOB0xwpQw3SNbsnDa