Erinevus lehekülje "Puppet kasutamine Debianiga" redaktsioonide vahel
(→Apache seadistamine) |
(→Puppetmasteri ettevalmistamine Debianis) |
||
(ei näidata 2 kasutaja 29 vahepealset redaktsiooni) | |||
1. rida: | 1. rida: | ||
===Sissejuhatus=== | ===Sissejuhatus=== | ||
− | Puppet (ingl. k. nukk) http://reductivelabs.com/products/puppet/ võimaldab korraldada arvutite tarkvara ja seadistuste automatiseeritud haldust. | + | Puppet (ingl. k. nukk) http://reductivelabs.com/products/puppet/ võimaldab korraldada arvutite tarkvara ja seadistuste automatiseeritud haldust. Puppet on programmeeritud Ruby keeles. |
+ | ===Tööpõhimõte=== | ||
_____ | _____ | ||
| | puppetmasterd | | | puppetmasterd | ||
− | |_____| | + | |_____| 8140/tcp |
| | | | ||
| | | | ||
12. rida: | 13. rida: | ||
__|__ __|__ __|__ | __|__ __|__ __|__ | ||
| | | | | | puppetd | | | | | | | puppetd | ||
− | |_____| |_____| |_____| | + | |_____| |_____| |_____| 8139/tcp |
smtp1 smtp2 squid | smtp1 smtp2 squid | ||
19. rida: | 20. rida: | ||
* Puppetmaster (ingl. k. nukujuht) sisaldab klientide tarkvara ja seadistuste kirjeldust | * Puppetmaster (ingl. k. nukujuht) sisaldab klientide tarkvara ja seadistuste kirjeldust | ||
* Kliendid teavad oma puppetmasteri aadressi | * Kliendid teavad oma puppetmasteri aadressi | ||
− | * Puppetmasteri ja klientide andmevahetus toimub üle 8140/tcp pordi | + | * Puppetmasteri ja klientide andmevahetus toimub üle 8140/tcp ja 8139/tcp pordi, kusjuures klient saab küsida serverilt muudatusi ja server saab saata kliendile muudatusi |
+ | * Andmevahetus on turvatud x509 sertifikaatide kasutamise abil | ||
+ | |||
+ | ===Eesmärk=== | ||
+ | |||
+ | Käesolevas tekstis kirjeldatakse selliste omadustega asjakorralduse juurutamist | ||
+ | |||
+ | * Kliendid kopeerivad Puppetmasterilt automaatselt seadistusi | ||
+ | * Puppetmaster saab saata klientidele seadistusi | ||
+ | |||
+ | Lisaks esitatakse, kuidas seadistada Puppet süsteem | ||
+ | |||
+ | * kasutama Apache veebiserverit, mis võimaldab paremat käideldavust ning paindlikumat sertifikaatide kasutamist | ||
+ | * kasutama klientide andmete hoidmiseks LDAP kataloogi | ||
===Tarkvara paigaldamine=== | ===Tarkvara paigaldamine=== | ||
− | ====Operatsioonisüsteemi paketihaldusest==== | + | Puppetmasterile ja Puppetitele tuleb paigaldada erinev tarkvara. Omakorda, seda tarkvara saab reeglina paigaldada kahel viisil |
+ | |||
+ | * operatsioonisüsteemi paketihaldusest | ||
+ | * Ruby paketihaldusest | ||
+ | |||
+ | ====Debian Lenny==== | ||
+ | |||
+ | =====Operatsioonisüsteemi paketihaldusest===== | ||
Puppet serverile ehk puppetmasterile tuleb paigadada pakett puppetmaster | Puppet serverile ehk puppetmasterile tuleb paigadada pakett puppetmaster | ||
33. rida: | 54. rida: | ||
# apt-get install puppet | # apt-get install puppet | ||
− | ====Ruby paketihaldusest==== | + | =====Ruby paketihaldusest===== |
# apt-get install rubygems | # apt-get install rubygems | ||
45. rida: | 66. rida: | ||
# gem install puppet | # gem install puppet | ||
− | ===Puppetmasteri ettevalmistamine=== | + | ====OpenBSD==== |
+ | |||
+ | OpenBSD 4.6 jaoks on olemas binaarse paketina Puppet tarkvara v. 0.24.4, mille paigaldamiseks sobib öelda | ||
+ | |||
+ | # pkg_add ruby-puppet | ||
+ | ruby-1.8.6.369p0: complete | ||
+ | ruby-facter-1.5.0: complete | ||
+ | ruby-puppet-0.24.4p1: complete | ||
+ | |||
+ | Tulemusena paigaldatakse | ||
+ | |||
+ | * /etc/puppet - seadistusfailid | ||
+ | * /usr/local/share/examples/ruby-puppet - näited | ||
+ | |||
+ | Ruby Gems süsteemi abil tarkvara paigaldamine | ||
+ | |||
+ | # gem query --local | ||
+ | |||
+ | *** LOCAL GEMS *** | ||
+ | |||
+ | facter (1.5.7) | ||
+ | puppet (0.24.7) | ||
+ | |||
+ | ====FreeBSD==== | ||
+ | |||
+ | Üks võimalus on installida ruby-gems pakett /devel/ruby-gems ja anda käsk gem install puppet | ||
+ | Kuid kna sellega millegpärast ei tulnud default konfifaile on targem paigaldada see portsudes sysutils/puppets harust | ||
+ | |||
+ | Puppeti startimiseks peale booti tuleb rc.conf'i lisada read | ||
+ | |||
+ | puppetd_enable="YES" | ||
+ | puppetmasterd_enable="YES" | ||
+ | |||
+ | konfiguratsioonid nagu puppet.conf näidis asuvad kaustas /usr/local/etc/puppet/ | ||
+ | |||
+ | http://reductivelabs.com/trac/puppet/wiki/PuppetFreeBSD | ||
+ | |||
+ | ===Puppetmasteri ettevalmistamine Debianis=== | ||
Puppetmasteri protsess töötab privilegeerimata kasutajana ja tema tööd juhivad seadistusfailid | Puppetmasteri protsess töötab privilegeerimata kasutajana ja tema tööd juhivad seadistusfailid | ||
51. rida: | 109. rida: | ||
* /etc/puppet/puppet.conf | * /etc/puppet/puppet.conf | ||
− | + | [main] | |
− | + | logdir=/var/log/puppet | |
− | + | vardir=/var/lib/puppet | |
− | + | ssldir=/var/lib/puppet/ssl | |
− | + | rundir=/var/run/puppet | |
− | + | factpath=$vardir/lib/facter | |
− | + | # pluginsync=true | |
− | + | templatedir=$confdir/templates | |
− | + | ||
− | + | #prerun_command=/etc/puppet/etckeeper-commit-pre | |
+ | #postrun_command=/etc/puppet/etckeeper-commit-post | ||
+ | |||
+ | server=puppet.zoo.tartu.ee | ||
+ | listen=true | ||
+ | report=true | ||
+ | |||
+ | [master] | ||
+ | # These are needed when the puppetmaster is run by passenger | ||
+ | # and can safely be removed if webrick is used. | ||
+ | #ssl_client_header = SSL_CLIENT_S_DN | ||
+ | #ssl_client_verify_header = SSL_CLIENT_VERIFY | ||
* /etc/puppet/fileserver.conf | * /etc/puppet/fileserver.conf | ||
70. rida: | 139. rida: | ||
====Moodulid==== | ====Moodulid==== | ||
− | + | TODO | |
− | + | ||
− | + | # find /etc/puppet/modules -type f | |
− | + | /etc/puppet/modules/sudo/files/sudoers | |
− | + | /etc/puppet/modules/sudo/manifests/init.pp | |
kus | kus | ||
81. rida: | 150. rida: | ||
* /etc/puppet/modules/sudo/manifests/init.pp sisaldab sudo mooduliga seotud metaandmeid | * /etc/puppet/modules/sudo/manifests/init.pp sisaldab sudo mooduliga seotud metaandmeid | ||
− | + | # /etc/puppet/modules/sudo/manifests/init.pp | |
− | + | class sudo { | |
− | + | ||
− | + | package { sudo: ensure => latest } | |
− | + | ||
− | + | file { "/etc/sudoers": | |
− | + | owner => "root", | |
− | + | group => "root", | |
− | + | mode => 440, | |
− | + | source => "puppet:///sudo/sudoers", | |
− | + | require => Package["sudo"], | |
− | + | } | |
− | + | } | |
====Puppeti seadistused==== | ====Puppeti seadistused==== | ||
100. rida: | 169. rida: | ||
Moodulid ja node'id ühendab kokku kolm faili | Moodulid ja node'id ühendab kokku kolm faili | ||
− | + | # find /etc/puppet/manifests -type f | |
− | + | /etc/puppet/manifests/modules.pp | |
− | + | /etc/puppet/manifests/nodes.pp | |
− | + | /etc/puppet/manifests/site.pp | |
kus | kus | ||
− | * | + | * /etc/puppet/manifests/modules.pp |
− | + | # /etc/puppet/manifests/modules.pp | |
− | + | import "sudo" | |
* /etc/puppet/manifests/nodes.pp | * /etc/puppet/manifests/nodes.pp | ||
− | + | # /etc/puppet/manifests/nodes.pp | |
− | + | node basenode { | |
− | + | include sudo | |
− | + | } | |
− | + | node 'puppet-1.auul' inherits basenode { | |
− | + | } | |
* /etc/puppet/manifests/site.pp | * /etc/puppet/manifests/site.pp | ||
− | + | # /etc/puppet/manifests/site.pp | |
− | + | ||
− | + | import "modules" | |
− | + | import "nodes" | |
− | + | # The filebucket option allows for file backups to the server | |
− | + | filebucket { main: server => 'puppet-master.auul' } | |
− | + | # Set global defaults - including backing up all files to the main filebucket and adds a global path | |
− | + | File { backup => main } | |
− | + | Exec { path => "/usr/bin:/usr/sbin/:/bin:/sbin" } | |
===Puppet kliendi ettevalmistamine=== | ===Puppet kliendi ettevalmistamine=== | ||
144. rida: | 213. rida: | ||
* /etc/puppet/puppet.conf | * /etc/puppet/puppet.conf | ||
− | + | [main] | |
− | + | logdir=/var/log/puppet | |
− | + | vardir=/var/lib/puppet | |
− | + | ssldir=/var/lib/puppet/ssl | |
− | + | rundir=/var/run/puppet | |
− | + | factpath=$vardir/lib/facter | |
− | + | pluginsync=false | |
− | + | server=puppet-master.auul | |
− | + | listen=true | |
− | + | ||
− | + | [puppetmasterd] | |
+ | templatedir=/var/lib/puppet/templates | ||
* /etc/puppet/namespaceauth.conf | * /etc/puppet/namespaceauth.conf | ||
− | [ | + | [fileserver] |
+ | allow * | ||
+ | |||
+ | [pelementserver] | ||
allow * | allow * | ||
− | + | [puppetrunner] | |
− | + | allow * | |
− | + | [puppetbucket] | |
− | + | allow * | |
− | + | [puppetreports] | |
− | + | allow * | |
− | + | ||
− | + | ===Kliendi registreerimine Puppetmasteris=== | |
− | |||
− | + | Klient saadab puppetmasterile oma sertifikaadi taotluse. Taotluse nägemiseks tuleb puppetmasteris öelda: | |
# puppetca -l | # puppetca -l | ||
puppet-1.auul | puppet-1.auul | ||
− | + | Taotluse signeerimiseks tuleb öelda | |
# puppetca -s puppet-1.auul | # puppetca -s puppet-1.auul | ||
187. rida: | 259. rida: | ||
/var/lib/puppet | /var/lib/puppet | ||
− | Selleks, et klient küsiks puppetmasterilt oma seadistusi | + | Selleks, et klient küsiks puppetmasterilt oma seadistusi ? |
puppet-1:~# ps aux | grep pup | puppet-1:~# ps aux | grep pup | ||
193. rida: | 265. rida: | ||
puppet-1:~# kill -SIGUSR1 8161 | puppet-1:~# kill -SIGUSR1 8161 | ||
− | Kliendi eemaldamiseks sobib öelda | + | Kliendi sertifikaadi eemaldamiseks sobib öelda |
# puppetca --clean puppet-1.auul | # puppetca --clean puppet-1.auul | ||
Removing /var/lib/puppet/ssl/ca/signed/puppet-1.auul.pem | Removing /var/lib/puppet/ssl/ca/signed/puppet-1.auul.pem | ||
− | === | + | ===Puppet süsteemi kasutamine=== |
+ | |||
+ | Vaikimisi töötab Puppet süsteem nii, et ca paar korda tunnis pöördub klient Puppetmasteri poole ja kui on asjakohaseid muudatusi, siis võetakse need kasutusele. | ||
+ | |||
+ | Kliendi seadistusfaili näited oleksid sellised: | ||
+ | |||
+ | Apache paigaldamiseks | ||
+ | |||
+ | class apache { | ||
+ | package { ["apache2", "apache2-mpm-prefork"]: | ||
+ | ensure => latest, | ||
+ | } | ||
+ | |||
+ | file { "apache2.conf": | ||
+ | path => "/etc/apache2/apache2.conf", | ||
+ | ensure => present, | ||
+ | mode => 0644, | ||
+ | source => "puppet:///files/test_apache.conf", | ||
+ | } | ||
+ | |||
+ | service { "apache2": | ||
+ | ensure => running, | ||
+ | subscribe => File["apache2.conf"], | ||
+ | } | ||
+ | } | ||
+ | |||
+ | NB! Kui asendada klientmasinas apache2 seadistusfail siis muudab puppet selle tagasi. | ||
− | + | SSH paigaldamiseks | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | + | class ssh { |
+ | package { ["openssh-client", "openssh-server"]: | ||
+ | ensure => latest, | ||
+ | } | ||
+ | |||
+ | service { "ssh": | ||
+ | ensure => running, | ||
+ | } | ||
+ | } | ||
− | + | Ensure running tähendab, et puppet kontrollib ssh deemoni töötamist ja vajadusel stardib selle uuesti. | |
− | + | Php paigaldamiseks : | |
− | + | class php { | |
+ | package { ["libapache2-mod-php5", "php5-cli"]: | ||
+ | ensure => latest, | ||
+ | } | ||
+ | } | ||
− | + | Apti regulaarseks uuendamiseks: | |
− | + | exec { "/usr/bin/apt-get update": | |
− | + | subscribe => File["/etc/apt/sources.list"], | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Ja lõpuks võib kliendi defineerida ja lisada talle kõik loodud klassid | |
− | + | node 'test-zoo.tartu.ee' { | |
− | + | include apache | |
− | + | include ssh | |
− | + | include php | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Kui masinatel sarnased nimet nt test1, test2, test3 jne võib nad defineerida järgnevalt: | |
− | + | node /^test\d+\.zoo\.tartu\.ee/ { | |
+ | include apache | ||
+ | include php | ||
+ | } | ||
− | + | ====Klient pöördub Puppetmasteri poole==== | |
− | |||
− | |||
− | |||
− | + | Klient pöördub vaikimisi mõned korrad tunnis automaatselt puppetmasteri poole ja kui on, saab uuendusi. Teine variant on kliendile öelda stop ja start | |
− | + | # /etc/init.d/puppet stop | |
− | + | # /etc/init.d/puppet start | |
− | + | Tasutal tasub jälgida logi failis /var/log/daemon.log. | |
− | + | ====Puppetmaster pöördub kliendi poole==== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | TODO | |
− | + | Puppetmasterist saab pöörduda klientide poole programmiga puppetrun. Selleks, et töötaks, tuleb /usr/sbin/puppetrun failis teha real 240 | |
− | |||
− | + | if Puppet[:node_terminus] = "ldap" | |
− | + | asendus = -> == | |
− | |||
− | + | if Puppet[:node_terminus] == "ldap" | |
− | + | # puppetrun -d --host puppet-3.auul | |
+ | Failed to load ruby LDAP library. LDAP functionality will not be available | ||
+ | debug: Parsing /etc/puppet/puppet.conf | ||
+ | debug: Puppet::Network::Client::Runner: defining puppetrunner.run | ||
+ | Triggering puppet-3.auul | ||
+ | debug: Calling puppetrunner.run | ||
+ | puppet-3.auul finished with exit code 0 | ||
+ | Finished | ||
===Puppetmasteri kasutamine koos Apache veebiserveriga=== | ===Puppetmasteri kasutamine koos Apache veebiserveriga=== | ||
292. rida: | 376. rida: | ||
* suurem jõudlus | * suurem jõudlus | ||
− | * paindlikum sertifikaatide haldus | + | * paindlikum sertifikaatide haldus, nt eraldi PKI haru sub CA suhtes antud puppeti hostide sertide jaoks |
* saab moodustada parema käideldavusega süsteemi, nt kasutada mitut puppetmasteri eksemplari | * saab moodustada parema käideldavusega süsteemi, nt kasutada mitut puppetmasteri eksemplari | ||
298. rida: | 382. rida: | ||
# apt-get install apache2 mongrel | # apt-get install apache2 mongrel | ||
+ | |||
+ | Kasulikud lisamaterjalid | ||
+ | |||
+ | * http://projects.reductivelabs.com/projects/puppet/wiki/Using_Mongrel | ||
====Puppetmasteri seadistamine==== | ====Puppetmasteri seadistamine==== | ||
350. rida: | 438. rida: | ||
</VirtualHost> | </VirtualHost> | ||
− | + | ===Puppetmasteri kasutamine koos LDAP kataloogiga=== | |
+ | |||
+ | * http://projects.puppetlabs.com/projects/puppet/wiki/LDAP_Nodes | ||
+ | |||
+ | ===Misc=== | ||
+ | |||
+ | TODO | ||
+ | |||
+ | ====ralsh==== | ||
− | * | + | # ralsh user ntp |
+ | user { 'ntp': | ||
+ | password => '*', | ||
+ | shell => '/bin/false', | ||
+ | uid => '106', | ||
+ | home => '/home/ntp', | ||
+ | gid => '110', | ||
+ | ensure => 'present' | ||
+ | } | ||
− | === | + | ====Facter==== |
− | + | # facter | |
+ | architecture => amd64 | ||
+ | domain => auul | ||
+ | facterversion => 1.5.1 | ||
+ | fqdn => puppet-1.auul | ||
+ | hardwareisa => unknown | ||
+ | hardwaremodel => x86_64 | ||
+ | hostname => puppet-1 | ||
+ | id => root | ||
+ | interfaces => eth0 | ||
+ | ipaddress => 192.168.10.181 | ||
+ | ipaddress_eth0 => 192.168.10.181 | ||
+ | kernel => Linux | ||
+ | kernelrelease => 2.6.26-2-amd64 | ||
+ | kernelversion => 2.6.26 | ||
+ | macaddress => 70:01:68:01:01:81 | ||
+ | macaddress_eth0 => 70:01:68:01:01:81 | ||
+ | ... | ||
===Kasulikud lisamaterjalid=== | ===Kasulikud lisamaterjalid=== | ||
366. rida: | 487. rida: | ||
* http://projects.puppetlabs.com/projects/puppet/wiki/Certificates_And_Security | * http://projects.puppetlabs.com/projects/puppet/wiki/Certificates_And_Security | ||
* http://projects.puppetlabs.com/projects/puppet/wiki/LDAP_Nodes | * http://projects.puppetlabs.com/projects/puppet/wiki/LDAP_Nodes | ||
+ | * http://projects.puppetlabs.com/projects/puppet/wiki/Documentation_Start | ||
+ | * http://projects.puppetlabs.com/projects/puppet/wiki/Puppet_Patterns |
Viimane redaktsioon: 24. detsember 2011, kell 20:52
Sisukord
- 1 Sissejuhatus
- 2 Tööpõhimõte
- 3 Eesmärk
- 4 Tarkvara paigaldamine
- 5 Puppetmasteri ettevalmistamine Debianis
- 6 Puppet kliendi ettevalmistamine
- 7 Kliendi registreerimine Puppetmasteris
- 8 Puppet süsteemi kasutamine
- 9 Puppetmasteri kasutamine koos Apache veebiserveriga
- 10 Puppetmasteri kasutamine koos LDAP kataloogiga
- 11 Misc
- 12 Kasulikud lisamaterjalid
Sissejuhatus
Puppet (ingl. k. nukk) http://reductivelabs.com/products/puppet/ võimaldab korraldada arvutite tarkvara ja seadistuste automatiseeritud haldust. Puppet on programmeeritud Ruby keeles.
Tööpõhimõte
_____ | | puppetmasterd |_____| 8140/tcp | | ---|----|-------|------------|--- | | | __|__ __|__ __|__ | | | | | | puppetd |_____| |_____| |_____| 8139/tcp smtp1 smtp2 squid puppet kliendid
- Puppetmaster (ingl. k. nukujuht) sisaldab klientide tarkvara ja seadistuste kirjeldust
- Kliendid teavad oma puppetmasteri aadressi
- Puppetmasteri ja klientide andmevahetus toimub üle 8140/tcp ja 8139/tcp pordi, kusjuures klient saab küsida serverilt muudatusi ja server saab saata kliendile muudatusi
- Andmevahetus on turvatud x509 sertifikaatide kasutamise abil
Eesmärk
Käesolevas tekstis kirjeldatakse selliste omadustega asjakorralduse juurutamist
- Kliendid kopeerivad Puppetmasterilt automaatselt seadistusi
- Puppetmaster saab saata klientidele seadistusi
Lisaks esitatakse, kuidas seadistada Puppet süsteem
- kasutama Apache veebiserverit, mis võimaldab paremat käideldavust ning paindlikumat sertifikaatide kasutamist
- kasutama klientide andmete hoidmiseks LDAP kataloogi
Tarkvara paigaldamine
Puppetmasterile ja Puppetitele tuleb paigaldada erinev tarkvara. Omakorda, seda tarkvara saab reeglina paigaldada kahel viisil
* operatsioonisüsteemi paketihaldusest * Ruby paketihaldusest
Debian Lenny
Operatsioonisüsteemi paketihaldusest
Puppet serverile ehk puppetmasterile tuleb paigadada pakett puppetmaster
# apt-get install puppetmaster
Puppet kliendile tuleb paigaldada pakett puppet
# apt-get install puppet
Ruby paketihaldusest
# apt-get install rubygems
Gems süsteemi kasutamise kohta näeb näiteid öeldes
# gem help examples
Puppet paigaldamiseks sobib öelda
# gem install puppet
OpenBSD
OpenBSD 4.6 jaoks on olemas binaarse paketina Puppet tarkvara v. 0.24.4, mille paigaldamiseks sobib öelda
# pkg_add ruby-puppet ruby-1.8.6.369p0: complete ruby-facter-1.5.0: complete ruby-puppet-0.24.4p1: complete
Tulemusena paigaldatakse
- /etc/puppet - seadistusfailid
- /usr/local/share/examples/ruby-puppet - näited
Ruby Gems süsteemi abil tarkvara paigaldamine
# gem query --local *** LOCAL GEMS *** facter (1.5.7) puppet (0.24.7)
FreeBSD
Üks võimalus on installida ruby-gems pakett /devel/ruby-gems ja anda käsk gem install puppet Kuid kna sellega millegpärast ei tulnud default konfifaile on targem paigaldada see portsudes sysutils/puppets harust
Puppeti startimiseks peale booti tuleb rc.conf'i lisada read
puppetd_enable="YES" puppetmasterd_enable="YES"
konfiguratsioonid nagu puppet.conf näidis asuvad kaustas /usr/local/etc/puppet/
http://reductivelabs.com/trac/puppet/wiki/PuppetFreeBSD
Puppetmasteri ettevalmistamine Debianis
Puppetmasteri protsess töötab privilegeerimata kasutajana ja tema tööd juhivad seadistusfailid
- /etc/puppet/puppet.conf
[main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter # pluginsync=true templatedir=$confdir/templates #prerun_command=/etc/puppet/etckeeper-commit-pre #postrun_command=/etc/puppet/etckeeper-commit-post server=puppet.zoo.tartu.ee listen=true report=true [master] # These are needed when the puppetmaster is run by passenger # and can safely be removed if webrick is used. #ssl_client_header = SSL_CLIENT_S_DN #ssl_client_verify_header = SSL_CLIENT_VERIFY
- /etc/puppet/fileserver.conf
[files] path /etc/puppet/files allow 192.168.10.0/24
Moodulid
TODO
# find /etc/puppet/modules -type f /etc/puppet/modules/sudo/files/sudoers /etc/puppet/modules/sudo/manifests/init.pp
kus
- /etc/puppet/modules/sudo/files/sudoers fail sisaldab väljajagatava /etc/sudoers faili sisu
- /etc/puppet/modules/sudo/manifests/init.pp sisaldab sudo mooduliga seotud metaandmeid
# /etc/puppet/modules/sudo/manifests/init.pp class sudo { package { sudo: ensure => latest } file { "/etc/sudoers": owner => "root", group => "root", mode => 440, source => "puppet:///sudo/sudoers", require => Package["sudo"], } }
Puppeti seadistused
Moodulid ja node'id ühendab kokku kolm faili
# find /etc/puppet/manifests -type f /etc/puppet/manifests/modules.pp /etc/puppet/manifests/nodes.pp /etc/puppet/manifests/site.pp
kus
- /etc/puppet/manifests/modules.pp
# /etc/puppet/manifests/modules.pp import "sudo"
- /etc/puppet/manifests/nodes.pp
# /etc/puppet/manifests/nodes.pp node basenode { include sudo } node 'puppet-1.auul' inherits basenode { }
- /etc/puppet/manifests/site.pp
# /etc/puppet/manifests/site.pp import "modules" import "nodes" # The filebucket option allows for file backups to the server filebucket { main: server => 'puppet-master.auul' } # Set global defaults - including backing up all files to the main filebucket and adds a global path File { backup => main } Exec { path => "/usr/bin:/usr/sbin/:/bin:/sbin" }
Puppet kliendi ettevalmistamine
Selleks, et Puppeti kliendi protsess saaks teha vajalikke muudatusi töötab ta juurkasutajana ja tema tööd juhivad sellised failid
- /etc/puppet/puppet.conf
[main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter pluginsync=false server=puppet-master.auul listen=true [puppetmasterd] templatedir=/var/lib/puppet/templates
- /etc/puppet/namespaceauth.conf
[fileserver] allow * [pelementserver] allow * [puppetrunner] allow * [puppetbucket] allow * [puppetreports] allow *
Kliendi registreerimine Puppetmasteris
Klient saadab puppetmasterile oma sertifikaadi taotluse. Taotluse nägemiseks tuleb puppetmasteris öelda:
# puppetca -l puppet-1.auul
Taotluse signeerimiseks tuleb öelda
# puppetca -s puppet-1.auul Signed puppet-1.auul
Puppetmaster ja puppet kliendid hoiavad oma andmeid kataloogis
/var/lib/puppet
Selleks, et klient küsiks puppetmasterilt oma seadistusi ?
puppet-1:~# ps aux | grep pup root 8161 4.0 10.0 36652 25472 ? Ssl 15:28 0:14 ruby /usr/sbin/puppetd -w 5 puppet-1:~# kill -SIGUSR1 8161
Kliendi sertifikaadi eemaldamiseks sobib öelda
# puppetca --clean puppet-1.auul Removing /var/lib/puppet/ssl/ca/signed/puppet-1.auul.pem
Puppet süsteemi kasutamine
Vaikimisi töötab Puppet süsteem nii, et ca paar korda tunnis pöördub klient Puppetmasteri poole ja kui on asjakohaseid muudatusi, siis võetakse need kasutusele.
Kliendi seadistusfaili näited oleksid sellised:
Apache paigaldamiseks
class apache { package { ["apache2", "apache2-mpm-prefork"]: ensure => latest, } file { "apache2.conf": path => "/etc/apache2/apache2.conf", ensure => present, mode => 0644, source => "puppet:///files/test_apache.conf", } service { "apache2": ensure => running, subscribe => File["apache2.conf"], } }
NB! Kui asendada klientmasinas apache2 seadistusfail siis muudab puppet selle tagasi.
SSH paigaldamiseks
class ssh { package { ["openssh-client", "openssh-server"]: ensure => latest, } service { "ssh": ensure => running, } }
Ensure running tähendab, et puppet kontrollib ssh deemoni töötamist ja vajadusel stardib selle uuesti.
Php paigaldamiseks :
class php { package { ["libapache2-mod-php5", "php5-cli"]: ensure => latest, } }
Apti regulaarseks uuendamiseks:
exec { "/usr/bin/apt-get update": subscribe => File["/etc/apt/sources.list"], }
Ja lõpuks võib kliendi defineerida ja lisada talle kõik loodud klassid
node 'test-zoo.tartu.ee' { include apache include ssh include php }
Kui masinatel sarnased nimet nt test1, test2, test3 jne võib nad defineerida järgnevalt:
node /^test\d+\.zoo\.tartu\.ee/ { include apache include php }
Klient pöördub Puppetmasteri poole
Klient pöördub vaikimisi mõned korrad tunnis automaatselt puppetmasteri poole ja kui on, saab uuendusi. Teine variant on kliendile öelda stop ja start
# /etc/init.d/puppet stop # /etc/init.d/puppet start
Tasutal tasub jälgida logi failis /var/log/daemon.log.
Puppetmaster pöördub kliendi poole
TODO
Puppetmasterist saab pöörduda klientide poole programmiga puppetrun. Selleks, et töötaks, tuleb /usr/sbin/puppetrun failis teha real 240
if Puppet[:node_terminus] = "ldap"
asendus = -> ==
if Puppet[:node_terminus] == "ldap"
# puppetrun -d --host puppet-3.auul Failed to load ruby LDAP library. LDAP functionality will not be available debug: Parsing /etc/puppet/puppet.conf debug: Puppet::Network::Client::Runner: defining puppetrunner.run Triggering puppet-3.auul debug: Calling puppetrunner.run puppet-3.auul finished with exit code 0 Finished
Puppetmasteri kasutamine koos Apache veebiserveriga
Puppetmasterit on mõttekas kasutada koos Apache veebiserveriga sellistel kaalutlustel
- suurem jõudlus
- paindlikum sertifikaatide haldus, nt eraldi PKI haru sub CA suhtes antud puppeti hostide sertide jaoks
- saab moodustada parema käideldavusega süsteemi, nt kasutada mitut puppetmasteri eksemplari
Lisaks Apache veebiserverile tuleb paigaldada Mongrel tarkvara, mis esineb Ruby teekide kujul
# apt-get install apache2 mongrel
Kasulikud lisamaterjalid
Puppetmasteri seadistamine
Erinevalt nö vanilla seadistusega Puppetmasterist tuleb antud juhul teha seadistusfaili /etc/default/puppetmaster kaks täiendust
SERVERTYPE=mongrel PORT=18140
Apache seadistamine
Sobib kasutada nt sellist veebiserver seadistusfaili
ProxyRequests Off <Proxy balancer://puppetmaster> BalancerMember http://127.0.0.1:18140 </Proxy> <VirtualHost 10.0.9.227:8140> SSLEngine on SSLCipherSuite SSLv2:-LOW:-EXPORT:RC4+RSA SSLCertificateFile /var/lib/puppet/ssl/certs/fai-9-227.loomaaed.pem SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/fai-9-227.loomaaed.pem SSLCertificateChainFile /var/lib/puppet/ssl/certs/ca.pem SSLCACertificateFile /var/lib/puppet/ssl/certs/ca.pem SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient optional SSLVerifyDepth 3 SSLOptions +StdEnvVars RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e <Location /balancer-manager> SetHandler balancer-manager Order Allow,Deny Allow from 172.19 </Location> <Location /> SetHandler balancer-manager Order allow,deny Allow from all </Location> ProxyPass /balancer-manager ! ProxyPass / balancer://puppetmaster:8140/ ProxyPassReverse / balancer://puppetmaster:8140/ ProxyPreserveHost on </VirtualHost>
Puppetmasteri kasutamine koos LDAP kataloogiga
Misc
TODO
ralsh
# ralsh user ntp user { 'ntp': password => '*', shell => '/bin/false', uid => '106', home => '/home/ntp', gid => '110', ensure => 'present' }
Facter
# facter architecture => amd64 domain => auul facterversion => 1.5.1 fqdn => puppet-1.auul hardwareisa => unknown hardwaremodel => x86_64 hostname => puppet-1 id => root interfaces => eth0 ipaddress => 192.168.10.181 ipaddress_eth0 => 192.168.10.181 kernel => Linux kernelrelease => 2.6.26-2-amd64 kernelversion => 2.6.26 macaddress => 70:01:68:01:01:81 macaddress_eth0 => 70:01:68:01:01:81 ...
Kasulikud lisamaterjalid
- http://www.debian-administration.org/articles/526
- http://www.debian-administration.org/articles/528
- http://www.linuxjournal.com/magazine/automate-system-administration-tasks-puppet?page=0,0
- FAI kasutamine Debianiga
- http://projects.puppetlabs.com/projects/puppet/wiki/Certificates_And_Security
- http://projects.puppetlabs.com/projects/puppet/wiki/LDAP_Nodes
- http://projects.puppetlabs.com/projects/puppet/wiki/Documentation_Start
- http://projects.puppetlabs.com/projects/puppet/wiki/Puppet_Patterns