Puppet seadistamine Debian süsteemis
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.
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 fileserverit kus kirjeldatakse faili asukohti järgmiselt:
puppet://{server-hostname(optional)}/{mountpoint}/{remainder-of-path}
Mountpointi 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 puppetmasteri faile aegajalt muudetakse siis oleks soovitav kasutada nendel failidel versioonihaldust (SVN,CVS vms).
Kasutatud kirjandus
Autor
Karel Laid A31