28
Trabalhando com módulos A forma mais eficiente de utilizar o Puppet Webinar

Trabalhando com Módulos no Puppet

Embed Size (px)

DESCRIPTION

Webinar que apresenta o uso de módulos no Puppet e suas vantagens.

Citation preview

Page 1: Trabalhando com Módulos no Puppet

Trabalhando com módulos

A forma mais eficiente de utilizar o Puppet

Webinar

Page 2: Trabalhando com Módulos no Puppet

<%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

Page 3: Trabalhando com Módulos no Puppet

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

Page 4: Trabalhando com Módulos no Puppet

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?

Page 5: Trabalhando com Módulos no Puppet

A solução

Para manter o ambiente organizado e coeso, talvez seja melhor agrupar todas estas configurações em um único local, certo?

Page 6: Trabalhando com Módulos no Puppet

Ao agrupar suas configurações você estará dando os primeiros passos para criar um módulo.

Page 7: Trabalhando com Módulos no Puppet

E por que devemos utilizar módulos no

Puppet?

Page 8: Trabalhando com 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.

Page 9: Trabalhando com Módulos no Puppet

Módulos são carregados de forma automática e dinâmica pelo puppet e podem ser utilizados em modo master ou masterless.

Page 10: Trabalhando com Módulos no Puppet

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.

Page 11: Trabalhando com Módulos no Puppet

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.

Page 12: Trabalhando com Módulos no Puppet

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

Page 13: Trabalhando com Módulos no Puppet

Manifests & ClassesO 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ór io e da casse, exemplo ssh::subdir::classe.

Page 14: Trabalhando com Módulos no Puppet

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

Page 15: Trabalhando com Módulos no Puppet

# puppet module generate name-modulo

Page 16: Trabalhando com Módulos no Puppet

Respeitar a estrutura e a nomenclatura das classes e definições é importante para que o módulo seja carregado dinamicamente pelo auto-loader.

Page 17: Trabalhando com Módulos no Puppet

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

Page 18: Trabalhando com Módulos no Puppet

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

Page 19: Trabalhando com Módulos no Puppet

DemoUtilizando vagrant & puppet para criar módulos

Page 20: Trabalhando com Módulos no Puppet

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

Page 21: Trabalhando com Módulos no Puppet

Precisa de ajuda com seus módulos?

Page 22: Trabalhando com Módulos no Puppet

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

Page 23: Trabalhando com Módulos no Puppet

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?

Page 24: Trabalhando com Módulos no Puppet

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.

Page 25: Trabalhando com Módulos no Puppet

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!

[email protected]

‣ (19) 2511-6506

Page 26: Trabalhando com Módulos no Puppet

Obrigado!

Page 27: Trabalhando com Módulos no Puppet

Perguntas?

Page 28: Trabalhando com Módulos no Puppet

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: [email protected]