Puppet kasutamine
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 Puppetmasteri kasutamine koos Apache veebiserveriga
- 9 Puppetmasteri kasutamine koos LDAP kataloogiga
- 10 Misc
- 11 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 (puppet.zoo.tartu.ee) |_____| 8140/tcp | | ---|----|-------|------------|--- | | | __|__ __|__ __|__ | | | | | | puppetd |_____| |_____| |_____| 8139/tcp test1 test2 test3.zoo.tartu.ee 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 abil saab kasutada nt etckeeperit mis salvestab versioonihaldusse klientide etc kaustade sisu #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
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
Kliendi sertifikaadi eemaldamiseks sobib öelda
# puppetca --clean puppet-1.auul Removing /var/lib/puppet/ssl/ca/signed/puppet-1.auul.pem
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
Taustal tasub jälgida logi failis /var/log/daemon.log.
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