Puppet seadistamine Debian süsteemis

From ICO wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Viimati muudetud 30.04.2011

Sissejuhatus

Selle artikli eesmärk on tutvustada Puppetit algajale administraatorile.

Puppet on vabavaraline konfiguratsioonihaldus tarkvara ning võimaldab automatiseerida paljusid igapäevaseid administratiivseid tegevusi nagu tarkvara installimine, seadistamine, kasutajate haldamine jpm.

Puppet võimalda hallata tuhandeid süsteeme, sealjuures erinevaid operatsioonisüsteeme.

Näidetes kasutatav operatsioonisüsteem on Debian 6, ning Puppeti versioon 2.6.2-4.

Kõik näidetes kirjeldatud käsud käivitada administraatori õigustes.

Puppeti seadistamise Ubuntu näitel leiad siit: https://wiki.itcollege.ee/index.php/Puppet_seadistamine_Ubuntu_s%C3%BCsteemis

Tööpõhimõte

Serveris hoitakse klient-süsteemide seadistuste kirjeldusi.

Kliendid küsivad serverilt aka puppetmasterilt uuendusi mille korral serveri poolt teeb puppetmaster kliendile vajalikud muudatused või laeb üles vajalikud failid.


Paigaldamine (Debian 6 Squeeze)

Puppetit saab installida nii rubygem-ist kui ka pakihaldussüsteemidega. Ruby pakkidest installides tuleb lisaks installida ruby1.8 ja facter.

Server / Puppetmaster

aptitude install puppetmaster

Klient / Puppet

aptitude install puppet

Seadistamine

Seadistada nimesätted.

Kuna vaikeseadena otsib puppeti klient serverit nimega puppet, siis võime kirjeldada ta nimeseadetes, et ei oleks vaja seda mujal iga kord täpsustada. Kui sul on DNS tsooni fail siis saad sinna märkida järgneva:

puppet   IN   CNAME  example.domain.com

Võib ka lisada kirjed hoopis /etc/hosts faili, kuid siis juba järgnevalt:

Serveril:

127.0.0.1 localhost.localdomain localhost puppet

Klientidel:

192.168.1.1 example.domain.com example puppet


Server / Puppetmaster

Kõigepealt serveris seadistame faili /etc/puppet/fileserver.conf .

Seadistan puppetmasteri lubama jagada faile 192.168.1.0/24 võrgule kus hakkavad olema puppet kliendid.

[files]
  path /etc/puppet/modules/
  allow 192.168.1.0/24
[plugins]
  allow 192.168.1.0/24
 

Failis fileserver.conf võib ka kliente kirjeldada nimekirjetega ja kasutada metamärke. Näiteks:

[mount_point]
   path /path/to/files
   allow *.domain.com
   deny *.wireless.domain.com

Genereeri vajalikud sertifikaadid ja failid järgmise käsuga.

puppet master --mkusers

Konfiguratsioonifaili /etc/puppet/puppet.conf ei ole lihtsamate operatsioonide jaoks vaja muuta, kuid kui soovid näha kõiki seadistusvõimalusi siis käivita järgmine käsk.

puppet --genconfig

Peale Puppetmasteri seadistamist tee talle restart.

/etc/init.d/puppetmaster restart

Klient / Puppet

Tee kindlaks, et kliendil näeks /etc/puppet/puppet.conf välja selline:

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates

Kui sul ei ole server kirjeldatud nagu eespool mainitud siis saad seda teha siin failis kirjega:

server= example.domain.com

Vaikesätetes küsib klient serverilt uuendusi iga 30 minuti tagant, muuta saad seda järgneva kirjega.

runinterval=600

Luba deemoni käivitamine failis /etc/default/puppet

START=yes

Tee kliendile restart.

/etc/init.d/puppet restart

Kliendi registreerimine

Kontrolli kas klient töötab korralikult küsidest serverilt sertifikaati.

puppet agent --waitforcert 60 --test

Peaksid nägema järgmist väljundit kuna turvalisuse huvidest ei jaga server sertifikaate automaatselt.

info: Requesting certificate
warning: peer certificate won't be verified in this SSL session
notice: Did not receive certificate

Serveris vaata kas klient on ootel.

puppet cert --list

Kui soovid võtta ootel oleva süsteemi puppetmasteri kliendiks siis anna talle välja sertifikaat.

puppet cert --sign klient.domain.com

Kui soovid kliendi uuendamist paremini näha siis peata kliendi deemon ja käivita kliendi süsteemis uuenduste pärimine käsitsi:

puppet agent --no-daemonize -v

Moodulid

Moodulid seatakse üles serveris/puppetmasteris.

Et paremini mõista mooduleid tuleks kõigepealt aru saada puppeti failide hierarhiast.

Üldiselt kasutatakse järgmist ülesehitust:

Kataloogis /etc/puppet/manifests/ asuvad failid mille abil loetakse sisse moodulid ja kirjeldatakse need klientidele.

  • site.pp failist loetakse kataloogid kuskohast hakkab puppetmaster faile võtma.
  • nodes.pp failis kirjeldatakse kliendid ja millised moodulid neile anda.
  • modules.pp failis imporditakse moodulid puppemasterile.
  • Kataloogis /etc/puppet/modules/ hoitakse mooduleid. Moodulid asuvad alamkataloogidest nagu näiteks /etc/puppet/modules/{modulename}/ kus kataloogis
  • /etc/puppet/modules/{modulename}/manifests/ asuvad mooduli enda failid ning
  • /etc/puppet/modules/{modulename}/files asuvad lisa failid mida kliendile üles laetakse.

Näitena loon mooduli installima ssh serverit tema puudumise korral, laadima ssh serverile ette antud konfiguratsioonifaili ning kontrollima kas teenus töötab.

Hierarhia olulistest failidest ssh mooduli puhul /etc/puppet/ kataloogis:

            |-modules.pp
|-manifests-|-nodes.pp
|           |-site.pp
|
|-modules---|-ssh-----------------|-manifests-|-init.pp
                                  |
                                  |-files-----|-sshd_config


Ssh mooduli fail /etc/puppet/modules/ssh/init.pp

class ssh {
	package { 
		["openssh-client","openssh-server"]:
		ensure => installed
	}
	file { '/etc/ssh/sshd_config':
		source => 'puppet:///ssh/files/sshd_config',
		owner => 'root',
		group => 'root',
		mode => '640'
	}
	service { "ssh":
		enable => true,
		ensure => running,
	}
}								   

sshd_config faili üleslaadimiseks kasutatakse puppet failiserverit kus kirjeldatakse faili asukohti järgmiselt:

puppet://{server-hostname(optional)}/{mountpoint}/{remainder-of-path}

Mountpoint-i kirjeldad fileserver.conf failis kus on minul ta kirjeldatud /etc/puppet/modules/.

Impordi moodul

echo 'import "ssh"' >> /etc/puppet/manifests/modules.pp	

Kirjelda ssh class kliendile failis /etc/puppet/manifests/nodes.pp

node basenode {
}
node 'klient.domain.com' inherits basenode {
	  include ssh
}	

Kui soovid lisada ssh moodul kõikidele klientidele siis lisa "include ssh" hoopis basenode alla.

Varundamine/Taastamine

Kuna puppetmasteris muudetakse aegajalt mooduleid ja ka konfiguratsiooni faile siis oleks soovitatav kasutada nendel failidel versioonihaldust (SVN,CVS vms) ning luua uus versioon iga muutuse järel.

Kasutatud kirjandus

http://docs.puppetlabs.com/

Autor

Karel Laid A31