PUPPET - criando classes- parte 2



PUPPET - criando classes 

Bem pessoal, como havia prometido, irei continuar o tutorial do Puppet.

Agora nosso servidor está criando corpo e a brincadeira começa a ficar legal.

Nessa segunda parte, esterei mostrando:
- Estrutura de diretórios;
- Criação de classes


Vamos continuar usando a mesmo nomenclatura da (parte 1) - link) master (servidor puppet), client01 (cliente1)

No primeiro artigo instalamos o master e o client01,


Estrutura de diretórios
manifests # aqui onde fica os arquivos de iremos informar qual hosts usa x classe
site.pp #importa as classes e hosts que serão utilizados
modules.pp #Importa a classes dos modulos
nodes.pp # declara os hosts e classes a serem usadas

modules # nesse diretório colocamos todos os modulos a serem usados
manifests # onde tem os arquivos de classes criadas
files #arquivos padrão (não tem variavel)
templates # templates a serem usados (contem variaveis)

Essa é a estrutura básica, iremos entender um pouco mais na prática


Criação de classes

Agora vamos criar 3 modulos e cada módulo com suas classes.

O primeiro modulo a ser criado é helloword.

entre no diretório /etc/puppet/

criando os diretórios
mkdir modules/helloword/{files,manifests,templates}

Após entre no diretório manifests
cd modules/helloword/manifests

crie o arquivo init.pp com o seguinte conteúdo
class helloword {
file {
"/tmp/file.tmp":
ensure => present,
owner => "root",
group => "users",
mode => "640",
content => template("/etc/puppet/modules/helloword/files/helloword.tmp"),
}
}

crie o arquivo file.pp com o seguinte conteúdo

class helloword::file {
file {
"/tmp/file.tmp":
ensure => present,
owner => "root",
group => "users",
mode => "640",
content => template("/etc/puppet/modules/helloword/files/file.tmp"),
}
}


no arquivo /etc/puppet/modules/helloword/files/helloword.tmp, coloque o seguinte:
teste com helloword

no arquivo /etc/puppet/modules/helloword/files/file.tmp, coloque o seguinte:
teste com subclasse


Feito isso, entre no diretório /etc/puppet/manifests, e vamos criar assim:

vim site.pp
import "nodes"


no arquivo nodes.pp, tem o seguinte conteúdo

#Aqui uma configuração padrão que será usado em grande parte dos clients
node basenode {
include helloword
}


node 'client1.interop.local' inherits basenode {
include helloword::file
}


no arquivo modules.pp o seguinte conteúdo
import helloword
import helloword:file


Feito isso, acesse o server client1 e execute o seguinte comando:
puppetd agent --test --ignorecache

Após executar o comando, deve ter a seguinte saída
info: Caching catalog for client1.interop.local
info: Applying configuration version '1345743353'
notice: /Stage[main]/Helloword::File/File[/tmp/file.tmp]/ensure: created
notice: Finished catalog run in 0.12 seconds


Vamos agora criar a segunda classe de ntp
entre no diretório /etc/puppet/modules e crie o seguinte
mkdir ntp/{manifests,files,templates}

No arquivo init.pp vamos criar assim

class ntp {
  case $::operatingsystem {
    Debian: {
      $packagename = 'openntp'
      $servicename = 'openntp'
    }
    default: {
      $packagename = 'ntp'
      $servicename = 'ntpd'
    }
  }

  package { $packagename:
    ensure => installed,
  }

  file { '/etc/ntp.conf':
    ensure  => file,
    content  => template("/etc/puppet/modules/ntp/files/ntp.conf"),
    #source  => 'puppet:///modules/ntp/files/ntp.conf',
    owner   => 'root',
    group   => 'root',
    mode    => '0444',
    require => Package[$packagename],
    notify  => Service[$servicename],
  }

  service { $servicename:
    ensure => 'running',
    enable => true,
  }
}


No arquivo ntp.conf, coloque o seguinte conteúdo
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server br.pool.ntp.org
server a.ntp.br
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys



E a última classe iremos mostrar algumas variaves
mkdir testtemplate/{files,manifests,templates}
 no arquivo init.pp, coloque assim:

class testtemplate {

$key = "teste com chave"

#Vamos informar para criar o arquivo caso nao exista
file { "variaveis":
path => "/tmp/variaveis.log",
owner   => root,
group => users,
content => template("/etc/puppet/modules/testtemplate/templates/variaveis.log.erb"),
}
}

No aqruivo variaveis.log.erb, coloque assim
name = <%= @name %>
fqdn = <%= @fqdn %>
memoryfree = <%= @memoryfree %>
so = <%= @operatingsystem %>
virtual = <%= @virtual %>
puppetmaster = <%= @puppetmaster %>
ip = <%= @ipaddress %>
key = <%= @key %>




Agora vamos editar o arquivo modules.pp "/etc/puppet/manifests/modules.pp
e insira o seguinte:

import testtemplate
import ntp

em nodes.pp inclua as classes no client1
node 'client1.interop.local' inherits basenode {
include helloword::file
include ntp
include testtemplate
}


execute o comando puppetd agent --test --ignorecache ou espere por 3 minutos a sincronização e verifique o arquivo /tmp/variaveis.log
cat /tmp/variaveis.log


Feito isso, estamos com nosso server puppet testado com algumas classes criadas e com a hora sincronizada.

Podemos fazer muitas outras coisas com o puppet, veremos num próximo artigo.

link da parte 1
Deixe o seu comentário sobre este artigo.


Comentários

Postagens mais visitadas deste blog

Zabbix - LLD de portas abertas no server

PUPPET - Gerenciamento e configuração centraliazada