SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline


Trabalhando com módulos
A forma mais eficiente de utilizar o Puppet
Webinar
<%whoami%>
‣ Guto Carvalho
‣ Especialista e instrutor PuppetLabs na Instruct
‣ Blogueiro de TI há mais de 10 anos
‣ RHCSA, RCHE, LPIC3, PCP2, NCLA…
‣ 14 anos de experiência como sysadmin linux
‣ Trabalha com Puppet desde 2010
‣ Implantou Puppet em diversas entidades de governo, dentre eles
‣ EBC, CAIXA, DETRAN/DF e ANATEL
Agenda
‣ Introdução a módulos
‣ Por que usar módulos?
‣ Estrutura de um módulo
‣ Módulos oficiais Puppetlabs
‣ Repositórios públicos de módulos
‣ Demonstração de uso de módulos
‣ Perguntas
O problema
Imagine que você está automatizando um serviço
ou sistema no puppet, imagine que isto envolva
diversos arquivos estáticos, templates, classes e
definições.
Como você vai manter a organização, coesão e
integridade de seu ambiente com diversos arquivos
espalhados em diferentes diretórios?
A solução
Para manter o ambiente organizado e
coeso, talvez seja melhor agrupar todas
estas configurações em um único local,
certo?
Ao agrupar suas configurações
você estará dando os primeiros
passos para criar um módulo.
E por que devemos
utilizar módulos no
Puppet?
Entendendo o Módulo
Um módulo é um conjunto de configurações e
dados, agrupados, independentes, reutilizáveis,
contidos em um mesmo diretório, o Puppet pode
c a r r e g a r e u t i l i z a r v á r i o s m ó d u l o s
simultaneamente e você pode reaproveitar
código.
Módulos são carregados de forma
automática e dinâmica pelo
puppet e podem ser utilizados
em modo master ou masterless.
Módulos são portáveis, você pode
carregar um módulo em um flashdrive e
aplicá-lo em um servidor utilizando
apenas o comando puppet apply, sem a
necessidade de um puppet master.
Sobre módulos
• Módulos podem ficar no diretório /etc/puppet/
modules em versões do puppet =< 3.5.
• A partir do puppet 3.6 os módulos devem ficar
dentro de seu environment, exemplo, caso você
esteja trabalhando com enviroment production o
diretório será /etc/puppet/environment/
production/modules.
Layout de um módulo
‣ Módulo
‣ manifests - contém manifests do módulo
‣ init.pp - arquivo principal do módulo
‣ templates - arquivo dinâmicos
‣ lib - contém plugins
‣ test - contém os smoke tests
‣ files - arquivos estáticos
‣ spec - contém os spec tests
Manifests & Classes
O init.pp é o arquivo principal e ele deve conter uma
única classe com o nome do módulo, se o módulo se
chama ssh, o init.pp deve conter uma classe chamada ssh.
Cada manifest deve conter apenas uma classe. Caso você
crie um manifest chamado client.pp no módulo ssh, ele
deverá ter uma classe única chamada ssh::client.
Caso você crie um sub-diretório, a classe deverá conter o
nome do sub-diretório e da casse, exemplo
ssh::subdir::classe.
Nome de classes
‣ ssh
‣ manifests
‣ init.pp terá uma classe chamada ssh
‣ client.pp terá um classe chamada ssh::client
‣ server.pp terá uma classe chamada ssh::server
‣ keys
‣ admins.pp terá um a classe chamada ssh::keys::admins
# puppet module generate name-modulo
Respeitar a estrutura e a nomenclatura
das classes e definições é importante
para que o módulo seja carregado
dinamicamente pelo auto-loader.
Módulos Puppetlabs
A PuppetLabs disponibiliza uma plataforma
chamada PuppetForge para compartilhamento de
módulos. Além de disponibilizar a plataforma, ela
também publica vários módulos bastante maduros
para automatizar diversos sistemas e serviços.
Acesse http://forge.puppetlabs.com
Outros módulos
É possível encontrar módulos para puppet em sites
como github e bitbucket, procure por projetos que
comecem com puppet-nome, exemplo puppet-ssh.
http://www.github.com
http://www.bitbucket.com
Demo
Utilizando vagrant & puppet para criar módulos
Dicas finais
‣ Escreva módulos e reutilize código sempre
‣ Utilize módulos do forge e github, não reinvente a roda
‣ Escreva módulos compatíveis com o auto-loader
‣ Versione seus módulos com GIT sempre
‣ Escreva testes para suas classes
‣ Siga as recomendações do style-guide
‣ Compartilhe seu módulo no forge e github
Precisa de ajuda com seus módulos?
Comunidade Puppet
‣ Documentação oficial docs.puppetlabs.com
‣ Canal #puppet e #puppet-br na freenode
‣ Comunidade puppet-br.org
‣ Listas puppet-users e puppet-users-br no googlegroups.
‣ Blog gutocarvalho.net e planeta.puppet-br.org
Precisa de mais ajuda, algo além
d a c o m u n i d a d e ? S u p o r t e
avançado?
Suporte oficial no Brasil com a Instruct
‣ Consultoria, suporte e capacitação em Puppet Enterprise e
Puppet Open Source
‣ Treinamentos Oficiais da PuppetLabs
‣ Licenciamento do Puppet Enterprise
‣ Equipe composta por pioneiros no uso de Puppet no Brasil
‣ A Instruct juntamente a com PuppetLabs podem te ajudar a
obter a tão sonhada Infraestrutura Ágil.
Próximos webinars
‣ Novos treinamentos PuppetLabs
‣ Orquestração com Live Management/MCollective
‣ Separação de dados e código com Hiera
‣ Integração do Puppet com PuppetDB
‣ Integração do Puppet com Vagrant
‣ Entre em contato!
‣ contato@instruct.com.br
‣ (19) 2511-6506
Obrigado!
Perguntas?
Entre em contato
‣ Fale com a gente nas redes sociais!
‣ facebook.com/InstructBR
‣ twitter.com/InstructBR
‣ Canal #puppet-br na Freenode
‣ https://webchat.freenode.net/
‣ Miguelzinho e Gutocarvalho
‣ Email: webinar@instruct.com.br

Mais conteúdo relacionado

Mais procurados

Graylog Engineering - Design Your Architecture
Graylog Engineering - Design Your ArchitectureGraylog Engineering - Design Your Architecture
Graylog Engineering - Design Your ArchitectureGraylog
 
An Architectural Deep Dive With Kubernetes And Containers Powerpoint Presenta...
An Architectural Deep Dive With Kubernetes And Containers Powerpoint Presenta...An Architectural Deep Dive With Kubernetes And Containers Powerpoint Presenta...
An Architectural Deep Dive With Kubernetes And Containers Powerpoint Presenta...SlideTeam
 
Cloud Native PostgreSQL
Cloud Native PostgreSQLCloud Native PostgreSQL
Cloud Native PostgreSQLEDB
 
kubernetes - minikube - getting started
kubernetes - minikube - getting startedkubernetes - minikube - getting started
kubernetes - minikube - getting startedMunish Mehta
 
GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)Svetlin Nakov
 
OpenShift 4, the smarter Kubernetes platform
OpenShift 4, the smarter Kubernetes platformOpenShift 4, the smarter Kubernetes platform
OpenShift 4, the smarter Kubernetes platformKangaroot
 
Azure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
Azure Pipeline Tutorial | Azure DevOps Tutorial | EdurekaAzure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
Azure Pipeline Tutorial | Azure DevOps Tutorial | EdurekaEdureka!
 
How to test infrastructure code: automated testing for Terraform, Kubernetes,...
How to test infrastructure code: automated testing for Terraform, Kubernetes,...How to test infrastructure code: automated testing for Terraform, Kubernetes,...
How to test infrastructure code: automated testing for Terraform, Kubernetes,...Yevgeniy Brikman
 
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...Janusz Nowak
 
Containers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red HatContainers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red HatAmazon Web Services
 
Introduction to openshift
Introduction to openshiftIntroduction to openshift
Introduction to openshiftMamathaBusi
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHubVikram SV
 
Lifecycle of a pod
Lifecycle of a podLifecycle of a pod
Lifecycle of a podHarshal Shah
 
Open shift 4 infra deep dive
Open shift 4    infra deep diveOpen shift 4    infra deep dive
Open shift 4 infra deep diveWinton Winton
 
The Enterprise Case for Node.js
The Enterprise Case for Node.jsThe Enterprise Case for Node.js
The Enterprise Case for Node.jsNodejsFoundation
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack CommunityOpen Source Consulting
 
Best Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with TerraformBest Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with TerraformDevOps.com
 

Mais procurados (20)

Graylog Engineering - Design Your Architecture
Graylog Engineering - Design Your ArchitectureGraylog Engineering - Design Your Architecture
Graylog Engineering - Design Your Architecture
 
An Architectural Deep Dive With Kubernetes And Containers Powerpoint Presenta...
An Architectural Deep Dive With Kubernetes And Containers Powerpoint Presenta...An Architectural Deep Dive With Kubernetes And Containers Powerpoint Presenta...
An Architectural Deep Dive With Kubernetes And Containers Powerpoint Presenta...
 
Cloud Native PostgreSQL
Cloud Native PostgreSQLCloud Native PostgreSQL
Cloud Native PostgreSQL
 
kubernetes - minikube - getting started
kubernetes - minikube - getting startedkubernetes - minikube - getting started
kubernetes - minikube - getting started
 
Ansible
AnsibleAnsible
Ansible
 
GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)
 
OpenShift 4, the smarter Kubernetes platform
OpenShift 4, the smarter Kubernetes platformOpenShift 4, the smarter Kubernetes platform
OpenShift 4, the smarter Kubernetes platform
 
Azure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
Azure Pipeline Tutorial | Azure DevOps Tutorial | EdurekaAzure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
Azure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
 
How to test infrastructure code: automated testing for Terraform, Kubernetes,...
How to test infrastructure code: automated testing for Terraform, Kubernetes,...How to test infrastructure code: automated testing for Terraform, Kubernetes,...
How to test infrastructure code: automated testing for Terraform, Kubernetes,...
 
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
 
Containers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red HatContainers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red Hat
 
Introduction to openshift
Introduction to openshiftIntroduction to openshift
Introduction to openshift
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Why Kubernetes on Azure
Why Kubernetes on AzureWhy Kubernetes on Azure
Why Kubernetes on Azure
 
Lifecycle of a pod
Lifecycle of a podLifecycle of a pod
Lifecycle of a pod
 
Open shift 4 infra deep dive
Open shift 4    infra deep diveOpen shift 4    infra deep dive
Open shift 4 infra deep dive
 
Istio on Kubernetes
Istio on KubernetesIstio on Kubernetes
Istio on Kubernetes
 
The Enterprise Case for Node.js
The Enterprise Case for Node.jsThe Enterprise Case for Node.js
The Enterprise Case for Node.js
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
 
Best Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with TerraformBest Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with Terraform
 

Semelhante a Trabalhando com Módulos no Puppet

Conhecendo o NuGet e utilizando com ASP.NET MVC
Conhecendo o NuGet e utilizando com ASP.NET MVCConhecendo o NuGet e utilizando com ASP.NET MVC
Conhecendo o NuGet e utilizando com ASP.NET MVCFabrício Lopes Sanchez
 
Vagrant uma ferramenta realmente útil e versátil
Vagrant   uma ferramenta realmente útil e versátilVagrant   uma ferramenta realmente útil e versátil
Vagrant uma ferramenta realmente útil e versátilWanderlei Silva do Carmo
 
Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Thyago Maia
 
Introdução ao Spider CPM (2)
Introdução ao Spider CPM (2)Introdução ao Spider CPM (2)
Introdução ao Spider CPM (2)Peter Mello
 
Administracao de sistemas_com_puppet
Administracao de sistemas_com_puppetAdministracao de sistemas_com_puppet
Administracao de sistemas_com_puppetRamon Mota
 
Visualg 1231617089791929-2
Visualg 1231617089791929-2Visualg 1231617089791929-2
Visualg 1231617089791929-2jaoozinhoqi123
 
Tutorial poke-tool
Tutorial poke-toolTutorial poke-tool
Tutorial poke-toolunifesptk
 
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppetDaniel Sobral
 
Php5 Orientado A Objetos
Php5 Orientado A ObjetosPhp5 Orientado A Objetos
Php5 Orientado A ObjetosRápido Site
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de DjangoLeandro Zanuz
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetosFrancisco Santos
 
php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetosFer Nando
 
Apostila php orientado a objetos
Apostila php   orientado a objetosApostila php   orientado a objetos
Apostila php orientado a objetosFabiano Rodrigues
 
Poco Bibliotecas C++
Poco Bibliotecas C++Poco Bibliotecas C++
Poco Bibliotecas C++Uilian Ries
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 pythonTiago
 
Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPThiago Colares
 

Semelhante a Trabalhando com Módulos no Puppet (20)

Puppet webcast 4linux
Puppet webcast 4linuxPuppet webcast 4linux
Puppet webcast 4linux
 
Conhecendo o NuGet e utilizando com ASP.NET MVC
Conhecendo o NuGet e utilizando com ASP.NET MVCConhecendo o NuGet e utilizando com ASP.NET MVC
Conhecendo o NuGet e utilizando com ASP.NET MVC
 
Vagrant uma ferramenta realmente útil e versátil
Vagrant   uma ferramenta realmente útil e versátilVagrant   uma ferramenta realmente útil e versátil
Vagrant uma ferramenta realmente útil e versátil
 
Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3
 
Introdução ao Spider CPM (2)
Introdução ao Spider CPM (2)Introdução ao Spider CPM (2)
Introdução ao Spider CPM (2)
 
Administracao de sistemas_com_puppet
Administracao de sistemas_com_puppetAdministracao de sistemas_com_puppet
Administracao de sistemas_com_puppet
 
Visualg 1231617089791929-2
Visualg 1231617089791929-2Visualg 1231617089791929-2
Visualg 1231617089791929-2
 
Visualg
VisualgVisualg
Visualg
 
Semana 1 Technocorp
Semana 1 TechnocorpSemana 1 Technocorp
Semana 1 Technocorp
 
Tutorial poke-tool
Tutorial poke-toolTutorial poke-tool
Tutorial poke-tool
 
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
 
Php5 Orientado A Objetos
Php5 Orientado A ObjetosPhp5 Orientado A Objetos
Php5 Orientado A Objetos
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de Django
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 
php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetos
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 
Apostila php orientado a objetos
Apostila php   orientado a objetosApostila php   orientado a objetos
Apostila php orientado a objetos
 
Poco Bibliotecas C++
Poco Bibliotecas C++Poco Bibliotecas C++
Poco Bibliotecas C++
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 python
 
Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHP
 

Mais de Jose Augusto Carvalho

Infraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLInfraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLJose Augusto Carvalho
 
Cultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develCultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develJose Augusto Carvalho
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveJose Augusto Carvalho
 
Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develJose Augusto Carvalho
 
Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Jose Augusto Carvalho
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilJose Augusto Carvalho
 
Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Jose Augusto Carvalho
 
Oficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesOficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesJose Augusto Carvalho
 
Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)Jose Augusto Carvalho
 

Mais de Jose Augusto Carvalho (17)

Orquestração com Mcollective
Orquestração com McollectiveOrquestração com Mcollective
Orquestração com Mcollective
 
Infraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLInfraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISL
 
Cultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develCultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e devel
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e Mcollective
 
Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e devel
 
Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
 
Conhecendo o Wordpress
Conhecendo o WordpressConhecendo o Wordpress
Conhecendo o Wordpress
 
Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2
 
O que é DevOps afinal?
O que é DevOps afinal?O que é DevOps afinal?
O que é DevOps afinal?
 
Palestra Puppet Hora Livre
Palestra Puppet Hora LivrePalestra Puppet Hora Livre
Palestra Puppet Hora Livre
 
Oficina Puppet latinoware
Oficina Puppet latinowareOficina Puppet latinoware
Oficina Puppet latinoware
 
Oficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesOficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar Configurações
 
Puppet Cloud IaaS
Puppet Cloud IaaSPuppet Cloud IaaS
Puppet Cloud IaaS
 
Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)
 
Consegi 2011: Puppet
Consegi 2011: PuppetConsegi 2011: Puppet
Consegi 2011: Puppet
 
Consegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + PuppetConsegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + Puppet
 

Trabalhando com Módulos no Puppet

  • 1. 
 Trabalhando com módulos A forma mais eficiente de utilizar o Puppet Webinar
  • 2. <%whoami%> ‣ Guto Carvalho ‣ Especialista e instrutor PuppetLabs na Instruct ‣ Blogueiro de TI há mais de 10 anos ‣ RHCSA, RCHE, LPIC3, PCP2, NCLA… ‣ 14 anos de experiência como sysadmin linux ‣ Trabalha com Puppet desde 2010 ‣ Implantou Puppet em diversas entidades de governo, dentre eles ‣ EBC, CAIXA, DETRAN/DF e ANATEL
  • 3. Agenda ‣ Introdução a módulos ‣ Por que usar módulos? ‣ Estrutura de um módulo ‣ Módulos oficiais Puppetlabs ‣ Repositórios públicos de módulos ‣ Demonstração de uso de módulos ‣ Perguntas
  • 4. O problema Imagine que você está automatizando um serviço ou sistema no puppet, imagine que isto envolva diversos arquivos estáticos, templates, classes e definições. Como você vai manter a organização, coesão e integridade de seu ambiente com diversos arquivos espalhados em diferentes diretórios?
  • 5. A solução Para manter o ambiente organizado e coeso, talvez seja melhor agrupar todas estas configurações em um único local, certo?
  • 6. Ao agrupar suas configurações você estará dando os primeiros passos para criar um módulo.
  • 7. E por que devemos utilizar módulos no Puppet?
  • 8. Entendendo o Módulo Um módulo é um conjunto de configurações e dados, agrupados, independentes, reutilizáveis, contidos em um mesmo diretório, o Puppet pode c a r r e g a r e u t i l i z a r v á r i o s m ó d u l o s simultaneamente e você pode reaproveitar código.
  • 9. Módulos são carregados de forma automática e dinâmica pelo puppet e podem ser utilizados em modo master ou masterless.
  • 10. Módulos são portáveis, você pode carregar um módulo em um flashdrive e aplicá-lo em um servidor utilizando apenas o comando puppet apply, sem a necessidade de um puppet master.
  • 11. Sobre módulos • Módulos podem ficar no diretório /etc/puppet/ modules em versões do puppet =< 3.5. • A partir do puppet 3.6 os módulos devem ficar dentro de seu environment, exemplo, caso você esteja trabalhando com enviroment production o diretório será /etc/puppet/environment/ production/modules.
  • 12. Layout de um módulo ‣ Módulo ‣ manifests - contém manifests do módulo ‣ init.pp - arquivo principal do módulo ‣ templates - arquivo dinâmicos ‣ lib - contém plugins ‣ test - contém os smoke tests ‣ files - arquivos estáticos ‣ spec - contém os spec tests
  • 13. Manifests & Classes O init.pp é o arquivo principal e ele deve conter uma única classe com o nome do módulo, se o módulo se chama ssh, o init.pp deve conter uma classe chamada ssh. Cada manifest deve conter apenas uma classe. Caso você crie um manifest chamado client.pp no módulo ssh, ele deverá ter uma classe única chamada ssh::client. Caso você crie um sub-diretório, a classe deverá conter o nome do sub-diretório e da casse, exemplo ssh::subdir::classe.
  • 14. Nome de classes ‣ ssh ‣ manifests ‣ init.pp terá uma classe chamada ssh ‣ client.pp terá um classe chamada ssh::client ‣ server.pp terá uma classe chamada ssh::server ‣ keys ‣ admins.pp terá um a classe chamada ssh::keys::admins
  • 15. # puppet module generate name-modulo
  • 16. Respeitar a estrutura e a nomenclatura das classes e definições é importante para que o módulo seja carregado dinamicamente pelo auto-loader.
  • 17. Módulos Puppetlabs A PuppetLabs disponibiliza uma plataforma chamada PuppetForge para compartilhamento de módulos. Além de disponibilizar a plataforma, ela também publica vários módulos bastante maduros para automatizar diversos sistemas e serviços. Acesse http://forge.puppetlabs.com
  • 18. Outros módulos É possível encontrar módulos para puppet em sites como github e bitbucket, procure por projetos que comecem com puppet-nome, exemplo puppet-ssh. http://www.github.com http://www.bitbucket.com
  • 19. Demo Utilizando vagrant & puppet para criar módulos
  • 20. Dicas finais ‣ Escreva módulos e reutilize código sempre ‣ Utilize módulos do forge e github, não reinvente a roda ‣ Escreva módulos compatíveis com o auto-loader ‣ Versione seus módulos com GIT sempre ‣ Escreva testes para suas classes ‣ Siga as recomendações do style-guide ‣ Compartilhe seu módulo no forge e github
  • 21. Precisa de ajuda com seus módulos?
  • 22. Comunidade Puppet ‣ Documentação oficial docs.puppetlabs.com ‣ Canal #puppet e #puppet-br na freenode ‣ Comunidade puppet-br.org ‣ Listas puppet-users e puppet-users-br no googlegroups. ‣ Blog gutocarvalho.net e planeta.puppet-br.org
  • 23. Precisa de mais ajuda, algo além d a c o m u n i d a d e ? S u p o r t e avançado?
  • 24. Suporte oficial no Brasil com a Instruct ‣ Consultoria, suporte e capacitação em Puppet Enterprise e Puppet Open Source ‣ Treinamentos Oficiais da PuppetLabs ‣ Licenciamento do Puppet Enterprise ‣ Equipe composta por pioneiros no uso de Puppet no Brasil ‣ A Instruct juntamente a com PuppetLabs podem te ajudar a obter a tão sonhada Infraestrutura Ágil.
  • 25. Próximos webinars ‣ Novos treinamentos PuppetLabs ‣ Orquestração com Live Management/MCollective ‣ Separação de dados e código com Hiera ‣ Integração do Puppet com PuppetDB ‣ Integração do Puppet com Vagrant ‣ Entre em contato! ‣ contato@instruct.com.br ‣ (19) 2511-6506
  • 28. Entre em contato ‣ Fale com a gente nas redes sociais! ‣ facebook.com/InstructBR ‣ twitter.com/InstructBR ‣ Canal #puppet-br na Freenode ‣ https://webchat.freenode.net/ ‣ Miguelzinho e Gutocarvalho ‣ Email: webinar@instruct.com.br