Puppet seadistamine Debian süsteemis: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Rhaavre (talk | contribs)
Created page with 'Karel Laid'
 
Klaid (talk | contribs)
No edit summary
Line 1: Line 1:
Karel Laid
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.
 
[[File:Puppet_diagram.png]]
 
 
 
=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 uuendus 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 ning  kus kirjeldatakse faili asukohti
 
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=
http://docs.puppetlabs.com/
 
=Autor=
Karel Laid A31
 
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]

Revision as of 17:31, 30 April 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.

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 uuendus 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 ning kus kirjeldatakse faili asukohti

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

http://docs.puppetlabs.com/

Autor

Karel Laid A31