Puppet seadistamine Debian süsteemis: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Klaid (talk | contribs)
No edit summary
Otuur (talk | contribs)
No edit summary
 
(11 intermediate revisions by 2 users not shown)
Line 4: Line 4:
Selle artikli eesmärk on tutvustada Puppetit algajale administraatorile.
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.
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.
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=
=Tööpõhimõte=
Line 105: Line 112:
  puppet cert --sign klient.domain.com
  puppet cert --sign klient.domain.com


Kui soovid kliendi uuendamist paremini näha siis peata kliendi deemon ja käivita '''kliendi''' süsteemis uuendus käsitsi:
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
  puppet agent --no-daemonize -v


=Moodulid=
=Moodulid=


Moodulid seatakse üles serveris/puppetmasteris.
Moodulid seatakse üles serveris/puppetmasteris.
Et paremini mõista mooduleid tuleks kõigepealt aru saada puppeti failide hierarhiast.
 
Et paremini mõista mooduleid tuleks kõigepealt aru saada puppeti failide hierarhiast.
 
Üldiselt kasutatakse järgmist ülesehitust:
Üldiselt kasutatakse järgmist ülesehitust:


Line 129: Line 138:
Näitena loon mooduli installima ssh serverit tema puudumise korral, laadima ssh serverile ette antud konfiguratsioonifaili ning kontrollima kas teenus töötab.
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:
Hierarhia olulistest failidest ssh mooduli puhul '''/etc/puppet/''' kataloogis:


             |-modules.pp
             |-modules.pp
Line 141: Line 150:


'''Ssh mooduli fail /etc/puppet/modules/ssh/init.pp'''
'''Ssh mooduli fail /etc/puppet/modules/ssh/init.pp'''
class ssh {
class ssh {
package {  
package {  
["openssh-client","openssh-server"]:
["openssh-client","openssh-server"]:
ensure => installed
ensure => installed
}
}
file { '/etc/ssh/sshd_config':
file { '/etc/ssh/sshd_config':
source => 'puppet:///ssh/files/sshd_config',
source => 'puppet:///ssh/files/sshd_config',
owner => 'root',
owner => 'root',
group => 'root',
group => 'root',
mode => '640'
mode => '640'
}
}
service { "ssh":
service { "ssh":
enable => true,
enable => true,
ensure => running,
ensure => running,
}
}
}    
}    
Sshd_config faili üleslaadimiseks kasutatakse puppet fileserverit ning  kus kirjeldatakse faili asukohti
sshd_config faili üleslaadimiseks kasutatakse puppet failiserverit kus kirjeldatakse faili asukohti järgmiselt:


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


Mountpointi kirjeldad fileserver.conf failis kus on minul ta kirjeldatud /etc/puppet/modules/.
''Mountpoint''-i kirjeldad fileserver.conf failis kus on minul ta kirjeldatud /etc/puppet/modules/.
'''Impordi moodul'''
'''Impordi moodul'''
Line 167: Line 176:
'''Kirjelda ssh class kliendile failis /etc/puppet/manifests/nodes.pp'''
'''Kirjelda ssh class kliendile failis /etc/puppet/manifests/nodes.pp'''
node basenode {
node basenode {
}
}
node 'klient.domain.com' inherits basenode {
node 'klient.domain.com' inherits basenode {
  include ssh
  include ssh
}
}
Kui soovid lisada ssh moodul kõikidele klientidele siis lisa "include ssh" hoopis basenode alla.
Kui soovid lisada ssh moodul kõikidele klientidele siis lisa "include ssh" hoopis basenode alla.  


=Varundamine/Taastamine=
=Varundamine/Taastamine=
Kuna puppetmasteri faile aegajalt muudetakse siis oleks soovitav kasutada nendel failidel versioonihaldust (SVN,CVS vms).
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=
=Kasutatud kirjandus=

Latest revision as of 10:43, 14 December 2011

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