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
Postar um comentário