Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Meetup Puppet-BR 20160518 - Desenvolvendo módulos e fatos Puppet

Meetup Puppet-BR 20160518 - Desenvolvendo módulos e fatos Puppet

Apresentação sobre o desenvolvimento de módulos e fatos Puppet no Meetup Puppet Brasilia 20160518

E4ecb61d2ce38d137de8a3b129a904b6?s=128

Guto Carvalho

May 26, 2016
Tweet

Transcript

  1. Meetup Puppet Brasil - Brasília - 18/Mai/16

  2. 2 Comunidade Puppet-BR Neste oficina seguiremos todas as recomendações de

    codificação e guia de estilos da Puppet. Aprenda a desenvolver módulos e fatos MÓDULOS E FATOS D E S E N V O L V I M E N T O P U P P E T
  3. 3 Flato Presentation Conceitos Módulos Extras Contato Demos Conteúdo Nesta

    apresentação vamos falar sobre desenvolvimento de módulos e fatos Comunidade Puppet-BR Rafael Sales Guto Carvalho
  4. Antes de iniciar o desenvolvimento vamos entender alguns conceitos básicos

    Entendendo conceitos básicos
  5. O que são manifests Princípios básicos Comunidade Puppet-BR 5 Manifests

    são arquivos que possuem a representação dos estados desejados O Puppet possui uma DSL que permite que que o profissional de automação possa expressar as necessidades de automatização do ponto de vista do negócio. A partir dos manifests, o servidor master gera um catálogo de configurações. O agente recebe o catálogo e aplica as mudanças em seu node. Os manifests são arquivos texto com extensão .pp.
  6. O que são classes Princípios básicos Comunidade Puppet-BR 6 Classes

    são conjuntos de configurações chamados resource types que juntos definem uma configuração Quando formos escrever código Puppet, este código deve sempre estar contido em uma classe, isto é importante pois classes podem ser reutilizadas pelos nodes gerenciados.
  7. O que são módulos Princípios básicos Comunidade Puppet-BR 7 Módulos

    são conjuntos de configurações definidas e autocontidas em um diretório Um módulo pode conter manifests, arquivos estáticos, plugins, templates, testes e dados. Tudo está dentro de um mesmo diretório o que facilita o compartilhamento, desenvolvimento e utilização.
  8. Objetivos de um módulo Princípios básicos Comunidade Puppet-BR 8 Qual

    tarefa você deseja que seu módulo realize? Como você quer resolver isso com seu módulo? Quais sistemas operacionais ou versões de sistemas operacionais você deseja suportar?
  9. Vamos entender como funcionam e quais seus benefícios Estudando módulos

  10. Módulos Puppet Estrutura básica de diretórios Comunidade Puppet-BR 10 Manifests

    Files Templates Lib Spec Examples Diretório do módulo /etc/puppetlabs/code/environment/production/modules/MODULE
  11. Módulos Puppet Estrutura básica de diretórios Comunidade Puppet-BR 11 Manifests

    /etc/puppetlabs/code/environment/production/modules/MODULE O diretório manifests é a referência para o puppet buscar as classes do módulo, o arquivo init.pp contém a classe principal do módulo init.pp
  12. Módulos Puppet Estrutura básica de diretórios Comunidade Puppet-BR 12 /etc/puppetlabs/code/environment/production/modules/MODULE

    O diretório files contém arquivos estáticos, imutáveis. E s t e s a r q u i v o s e s t ã o disponíveis no servidor de arquivos do puppetserver para serem utilizados pelos agentes. Os agentes fazem download destes arquivos para aplicar em seus nodes de acordo com definições do módulo. Files
  13. Módulos Puppet Estrutura básica de diretórios Comunidade Puppet-BR 13 Templates

    /etc/puppetlabs/code/environment/production/modules/MODULE O diretório templates contém arquivos dinâmicos que podem estar no formato EPP ou ERB, estes arquivos podem conter variáveis, fatos e tratamentos condicionais e quando aplicados a um node terão configurações específicas.
  14. Módulos Puppet Estrutura básica de diretórios Comunidade Puppet-BR 14 Lib

    /etc/puppetlabs/code/environment/production/modules/MODULE O diretório lib pode conter custom lens do augeas, custom facts, custom functions, custom providers e custom types. Tudo que
  15. Módulos Puppet Estrutura básica de diretórios Comunidade Puppet-BR 15 Lib

    /etc/puppetlabs/code/environment/production/modules/MODULE Augeas Facter Puppet Provider Parser Type
  16. Módulos Puppet Estrutura básica de diretórios Comunidade Puppet-BR 16 Spec

    /etc/puppetlabs/code/environment/production/modules/MODULE O diretório spec contém diversos tipos de testes que podem ser criados para seu módulo, estes testes podem ser unitários, de aceitação, de sintaxe e podem ser executados contra classes, definições, funções e hosts.
  17. Módulos Puppet Estrutura básica de diretórios Comunidade Puppet-BR 17 /etc/puppetlabs/code/environment/production/modules/MODULE

    Defines Fixtures Functions Hosts spec_helper.rb Spec Classes
  18. Módulos Puppet Estrutura básica de diretórios Comunidade Puppet-BR 18 Examples

    /etc/puppetlabs/code/environment/production/modules/MODULE O d i r e t ó r i o e x a m p l e s , antigamente chamado de “tests” contém exemplos de declaração das classes do diretório manifests. init.pp
  19. Módulos Puppet Estrutura básica de diretórios Comunidade Puppet-BR 19 facts.d

    /etc/puppetlabs/code/environment/production/modules/MODULE Este diretório é opcional e pode conter external facts, estes fatos são alternativas aos fatos em ruby, estes podem ser escritos em qualquer linguagem de programação que seja suportada pelo node. Funciona a partir do facter 2.0.
  20. Módulos Puppet Estrutura básica de diretórios Comunidade Puppet-BR 20 serverspec

    /etc/puppetlabs/code/environment/production/modules/MODULE Este diretório é opcional e pode conter testes de aceitação serverspec
  21. Módulos Puppet Estrutura básica de arquivos Comunidade Puppet-BR 21 README

    Rakefile Gem file .fixtures metadata.json /etc/puppetlabs/code/environment/production/modules/MODULE LICENSE Arquivos do módulo
  22. Módulos Puppet Estrutura básica de arquivos Comunidade Puppet-BR 22 README

    /etc/puppetlabs/code/environment/production/modules/MODULE LICENSE Quando criamos o módulo as informações referentes a seu funcionamento, uso, autores, requisitos e exemplos vão no README e a licença do módulo no arquivo LICENSE. Isso é uma boa prática que ajuda quem for u s a r s e u m ó d u l o c a s o compartilhe.
  23. Módulos Puppet Estrutura básica de arquivos Comunidade Puppet-BR 23 Rakefile

    Gem file /etc/puppetlabs/code/environment/production/modules/MODULE O arquivo Rakefile conterá informações relativas aos testes de código e o arquivo G e m fi l e c o n t e r á a s dependências gem que são usadas pelos testes.
  24. Módulos Puppet Estrutura básica de arquivos Comunidade Puppet-BR 24 .fixtures

    /etc/puppetlabs/code/environment/production/modules/MODULE O arquivo .fixtures é utilizado pelas ferramentas de teste de código, nele serão definidas as dependências para os testes
  25. Módulos Puppet Estrutura básica de arquivos Comunidade Puppet-BR 25 metadata.json

    /etc/puppetlabs/code/environment/production/modules/MODULE Este arquivo contém todas as informações do módulo tais como nome, versão, autor, licença, dependências, os suportados, versão do puppet suportada, url do projeto e muito mais. Esse arquivo é fundamental pro puppet forge.
  26. Acompanhe os DEMOS do PCP Oficina e demos

  27. Criando um módulo demo Comunidade Puppet-BR 27 De forma automática

    ou manual Você pode criar um módulo de forma automática com o comando puppet module generate ou de forma manual
  28. Versionando o módulo (Git) demo Comunidade Puppet-BR 28 Versionando o

    código Todo o código deve ser verminado através de uma ferramenta VCS para que tenhamos controle, rastreabilidade e segurança no processo de desenvolvimento
  29. Criando classes do módulo demo Comunidade Puppet-BR 29 Separação de

    classes Devemos pensar em quais necessidades o módulo vai resolver para separar suas classes com objetivos únicos e diretos.
  30. Criando classes do módulo demo Comunidade Puppet-BR 30 Nomenclatura de

    classes É necessário seguir as regras de nomenclatura de classes para que o puppet master consiga carregar as classes do módulo automaticamente
  31. Paths do Puppet demo Comunidade Puppet-BR 31 Localização O módulo

    deve ser armazenado dentro de um diretório em que o puppet master consiga encontrá-lo ou deve-se passar o parâmetro modulepath para indicar o diretório
  32. Criando arquivos estáticos demo Comunidade Puppet-BR 32 Arquivos estáticos Seu

    módulo pode ter arquivos estáticos, este ficam armazenados no diretório files
  33. Criando arquivos dinâmicos demo Comunidade Puppet-BR 33 Arquivos dinâmicos Seu

    módulo pode ter arquivos dinâmicos, este ficam armazenados no diretório templates, estes podem ser templates ERB ou EPP.
  34. Criando fatos demo Comunidade Puppet-BR 34 Custom Facts Seu módulo

    pode ter fatos customizados que vão atender necessidades de suas classes ou templates
  35. Criando fatos demo Comunidade Puppet-BR 35 External Facts Os custom

    facts devem ser escritos em Ruby puro, mas podemos criar fatos externos em qualquer outra linguagem, estes fatos devem ser armazenados no diretório facts.d
  36. Puppet Apply demo Comunidade Puppet-BR 36 Aplicando localmente É possível

    aplicar um módulo localmente utilizando o comando puppet apply
  37. Puppet Agent demo Comunidade Puppet-BR 37 Aplicando do master Para

    aplicar um modelo a partir do servidor Master
  38. Sobre módulos Extras

  39. Puppet forge repositório de pacotes Comunidade Puppet-BR 39

  40. Bitbucket Módulos públicos Comunidade Puppet-BR 40

  41. Github Módulos públicos Comunidade Puppet-BR 41

  42. GitLab Módulos públicos Comunidade Puppet-BR 42

  43. Flato Presentation 43 QA

  44. Participe da comunidade Venha aprender puppet com a gente Comunidade

    Puppet-BR 44 IRC Site & Planeta Telegram Lista Acesse o canal #puppet-br na rede freenode de IRC com seu cliente preferido Acesse o site 
 puppet-br.org e o planeta.puppet-br.org Entre no grupo telegra.me/puppetbr no telegram. Participe das listas no google groups puppet- users-br e mcollective- users-br.
  45. Entre em Contato @gutocarvalho @tacianot

  46. Flato Presentation 46 Obrigado

  47. Fotos Créditos 47 Flickr/PuppetLabs/PuppetConf'2015 Instruct/PuppetConf'2015 Google Images Comunidade Puppet-BR