Puppet seadistamine Ubuntu süsteemis: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Tparnpuu (talk | contribs)
uued ip aadressid hosts faili
Tparnpuu (talk | contribs)
No edit summary
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Sissejuhatus=
= Puppet paigaldus Ubuntu serveril =
Juhendi verisoon 1.1
== Sissejuhatus ==
Käesolev juhend on mõeldud inimesele, kes oskab UNIX käsurida ja saab aru mis info paikneb /etc/hosts failis.
[https://wiki.itcollege.ee/index.php?title=Puppet_seadistamine_Ubuntu_süsteemis&oldid=60062 Juhendi originaal]


Juhend õpetab ja näitab kuidas installeerida ja seadistada Puppet master + kaks puppetit.
Juhendi verisoon 1.1 Käesolev juhend on mõeldud inimesele, kes oskab UNIX käsurida ja saab aru mis info paikneb /etc/hosts failis.
 
Juhend käsitleb, kuidas installeerida ja seadistada Puppet master + kaks puppetit.


Selleks on vaja kolme masinat, millel jookseb ubuntu server.
Selleks on vaja kolme masinat, millel jookseb ubuntu server.
Line 11: Line 13:
example.com on näite domeen, vajadusel asenda see enda domeeniga.
example.com on näite domeen, vajadusel asenda see enda domeeniga.


Puppeti seadistamise Debian näitel leiad siit:
== Tarkvara versioonid: ==
https://wiki.itcollege.ee/index.php/Puppet_seadistamine_Debian_s%C3%BCsteemis
* Ubuntu server 12.10
* Puppet 3.0.2


=Joonis=
== Paigalduse planeerimine ==
[[File:puppet_topo.png]]
Puppeti taristu on võimalik üles ehitada [http://docs.puppetlabs.com/guides/installation.html#deployment-type erinevate mudelite] alusel:


=Paigaldamine (Ubuntu server)=
* tsentrailiseeritud (Agent / master)Keskne server pakub klientidele nende konfiguratsiooni. (Tasub tähelepanu pöörata serveri jõudlusele).
==Lisame read /etc/hosts faili==
* Eraldiseisev või hajus (Standalone)Puppeti konfiguratsiooni sünkroniseeritakse masinate vahel kasutades muid vahendeid (näiteks versiooni haldust).
Puppeti toimimiseks on vajalik täispikk domeeninimi.
Hosts faili muutmine on vajalik ainult testkeskkonnas, kus ei ole DNS seadistamist.
Need read lisame iga masina /etc/hosts faili
192.168.56.254 puppetmaster.example.com puppetmaster
192.168.56.201 puppetclient1.example.com puppetclient1
192.168.56.202 puppetclient2.example.com puppetclient2


==Server / Puppetmaster==
Selles juhendis käsitletav paigalduse tüüp on Agent / master
===Puppetmasteri installeerimine===
apt-get install puppet puppetmaster
===Lubame puppet kliendid puppetmasteri failidele ligi===
nano /etc/puppet/fileserver.conf


Vajadusel muudame read, et näeks välja järgmiselt:
Agendid saavad oma konfiguratsiooni master serveri käest. Admnistraator peab haldama klientmasinate sertifikaate. Manifest faile tuleb kirjutada ainult puppetmaster serveri peal.
[files]
  path /etc/puppet/files/
  allow 192.168.1.0/24


[plugins]
=== Võrgu seadistused ===
  allow 192.168.1.0/24
* 192.168.56.254 puppet.example.com puppe
===Taaskäivitame puppetmasteri===
* 192.168.56.201 puppetclient1.example.com
/etc/init.d/puppetmaster restart
* 192.168.56.202 puppetclient2.example.com
* Puppet vajab toimimiseks töötavat nimelahendust, kas dns serveri näol (nõuab ka tagurpidi nimelahenduse toimimist) või iga masina hosts failis kirjed FQDN (täispikk domeeninimi) nimedega.


==Klient / Puppet==
=== Tulemüüri seaded (Iptables) ===
===Puppet kliendi installeerimine===
Puppetmaster peab lubama sisenevad ühendused pordil 8140 (TCP)
sudo apt-get  install puppet
===Muudame faili etc/puppet/puppet.conf===
nano /etc/puppet/puppet.conf
Vajadusel muudame read, et näeks välja järgmiselt:
[main]
  logdir=/var/log/puppet
  vardir=/var/lib/puppet
  ssldir=/var/lib/puppet/ssl
  rundir=/var/run/puppet
  factpath=$vardir/lib/facter
  pluginsync=true


  [puppetmasterd]
Klientmasinad peavad lubama väljuvad ühendused puppetmaster 8840 pordi suunas.
  templatedir=/var/lib/puppet/templates
 
= Paigaldus =
Puppet 3.0.2 versiooni paigaldamiseks peame kasutama puppetlab repositooriumit. Juhendi kirjutamise hetkel oli Ubuntu tarkvaravaramus Puppet 2.7. Serverile paigaldame paketi ''puppetmaste'' ja klientmasinatele ''puppet''
 
=== Puppetmaster paigaldus ===
Puppetmasteri paigalduseks lisame puppetlabs repositooriumi ning paigaldame paketti puppetmaster.
 
wget http://apt.puppetlabs.com/puppetlabs-release-quantal.deb
  dpkg -i puppetlabs-release-quantal.deb
apt-get update
apt-get install puppetmaster -y
 
Peale installatsiooni käivitatakse puppetmaster automaatselt.
 
== Puppet kliendi paigaldus ja käivitamine ==
wget http://apt.puppetlabs.com/puppetlabs-release-quantal.deb
dpkg -i puppetlabs-release-quantal.deb
apt-get update
apt-get install puppet -y
 
Peale paigaldus tuleb seadistada puppet automaatselt käivituma. Selleks muuda failis /etc/default/puppet rida START=no.


===Lubame puppetil käivituda automaatselt===
nano /etc/default/puppet
Vajadusel muudame
  START=yes
  START=yes
===Taaskäivitame puppeti===
/etc/init.d/puppet restart


=Puppetite lisamine puppetmasterisse=
ning käivita kliendi poolel teenus puppet
==Puppet klient==
 
Puppetmasterist sertifikaadi küsimiseks, käivitame käsu:
service puppet start
puppet agent --server puppetmaster.example.com --waitforcert 60
 
=== Puppet kliendi käivitusintervall ===
<nowiki>Kui on vajadus muuta puppet kliendi käivitusintervalli, siis tuleb lisada faili /etc/puppet/puppet.conf rida runinterval = <aeg sekundites>.</nowiki>
 
'''puppet.conf'''


==Puppetmasteris==
  <nowiki>#/etc/puppet/puppet.conf</nowiki>
Vaatame kes ootab sertifikaati
  <nowiki>[agent]</nowiki>
  puppet cert -la
  runinterval = 600
Puppetile sertifikaadi andmine
  puppet cert --sign puppetclient1.example.com
  puppet cert --sign puppetclient2.example.com


=Puppet mooduli loomine=
== Klientide lisamine puppetmasterile ==
Puppetmasterisse saab luua moodulid ja neid ka puppetitele määrata.
Peale käivitumist pöörduvad klientmasinad vaikimisi aadressile puppet.example.com ning teevad sertifikaadi taotluse. Seda saab näha käsuga:
Oluline on siinkohal ära märkida, et '''serveri ja kliendi FQDN peab olema mõlemalt poolt lahenduv''', muidu läheb sertifikaatidega autentimine katki ning klientide lisamine Puppetmasterisse ei õnnestu.
puppet cert list


See juhend õpetab ja näitab kuidas lisada puppetitele apache2
Sertifikaatitaotluste allkirjastamiseks tee järgnevat:
==Puppet faili hierarhia==
            |-modules.pp
|-manifests-|-nodes.pp
|          |-site.pp
|
|-modules---|-apache2--------------|-manifests-|-init.pp
                                   


==Puppetmasteri seadistamine==
  puppet cert sign puppetclient1.example.com
'''Puppetmaster ei vaja peale manifestide muutmist restarti'''
  puppet cert sign puppetclient2.example.com
===Loome puppeti jaoks vajalikud failid ===
  touch /etc/puppet/manifests/site.pp
  touch /etc/puppet/manifests/nodes.pp
touch /etc/puppet/manifests/modules.pp


==Loome apache 2 mooduli jaoks vajalikud kaustad ja failid==
Kontrollida saab:
mkdir -p /etc/puppet/modules/apache2/manifests
touch /etc/puppet/modules/apache2/manifests/init.pp


==Loome noded==
puppet cert list –all
Lisame apache 2 mooduli ainult serverile puppetclient1
 
Selleks muudame faili nodes.pp
Peale seda on puppetmaster valmis oma alluvaid juhtima.
nano /etc/puppet/manifests/nodes.pp
 
Lisame read
= Seadistuste näited =
  node basenode {
== Test 2: Vim, vimrc ja htop paigaldus ==
Allolev kujutab puppet-i seadistuste kataloogipuud (/etc/puppet/). Loodud või muudetud failid ja kataloogid on pakus kirjas.
 
/etc/puppet/
├── auth.conf
├── '''files'''/
│&nbsp;&nbsp; └── '''vimrc'''
├── '''fileserver.conf'''
├── manifests/
│&nbsp;&nbsp; ├── '''classes'''/
│&nbsp;&nbsp; │&nbsp;&nbsp; ├── '''htop.pp'''
│&nbsp;&nbsp; │&nbsp;&nbsp; └── '''vim.pp'''
│&nbsp;&nbsp; └── '''site.pp'''
├── modules/
├── puppet.conf
└── templates/
 
=== fileserver.conf ===
<nowiki>[files] </nowiki>
  path /etc/puppet/files
  allow *.example.com
 
 
Loon ka vastava kataloogi:
 
mkdir /etc/puppet/files
 
Loodud kataloogi kopeerin /etc/vim/vimrc faili.
 
=== manifests/site.pp ===
Faili kust kõik saab alguse. Selleks, et luua taaskasutatavaid komponente või klasse ning neid paremini hallata, loome kataloogi /etc/puppet/manifests/classes/ kuhu edaspidi paigutame klasside kirjeldused. Need tuuakse site.pp failile külge.
 
<nowiki>#site.pp </nowiki>
import 'classes/*.pp'
  node 'basenode'{
  include htop
  }
  }
  node 'puppetclient1.example.com' inherits basenode {
 
    include apache2
  node 'puppetmaster.example.com' inherits 'basenode' {
  }
  }
  node 'puppetclient2.example.com' inherits basenode {
  node 'puppetclient1.example.com' inherits 'basenode' {
  include vim
  }
  }
node 'puppetclient2.example.com' inherits 'basenode' {
  include vim


==Mooduli loomine==
=== manifests/classes/htop.pp ===
Muudame apache2 init.pp faili
Htop-i paigaldamiseks loome klassi htop.pp ning nõuame, et paigaldatav versioon oleks tarkvaravaramust kõige uuem.
  nano /etc/puppet/modules/apache2/manifests/init.pp
 
Lisame read
  class htop ($version = 'latest') {
<source lang="bash">
  package {'htop':
  class apache2{
    ensure => $version
    package {
    }
    'apache2':
}
    ensure => installed
 
    }
=== manifests/classes/vim.pp ===
}
Vim-nox paigaldamiseks loome klassi vim.pp ning nõuame, et paigaldatav versioon oleks tarkvaravaramust kõige uuem. Lisaks sellele kopeeritakse eelnevalt ettevalmistatud vimrc fail puppetmasterist /etc/vim/ kataloogi.
</source>
 
Mooduli testimiseks saame kasutada:
  class vim ($version = 'latest') {  
  puppet apply --noop /etc/puppet/modules/apache2/manifests/init.pp
    package {'vim-nox':  
        ensure => $version
    }  
 
    file { "/etc/vim/vimrc":
        source => "puppet:///files/vimrc",
    } 
}
 
== Diagnostika võimalused ==
Süntaksilisi vigu aitas minul kõige paremini siluda allolev meetod, kus ei lasta protsessidel taustale minna.
 
=== Puppetmaster ===
Vigade tekkimisel soovitan puppetmaster teenuse seisma panna ning käivitada uuesti –verbose ja --no-daemonize
 
service puppetmaster stop
puppet master  --verbose –-no-daemonize
 
=== Puppet agent  ===
Peatame puppet teenuse ning käivitame ta käsurealt.
 
service puppet stop
puppet agent --test
= Puppet kliendi eemaldamine ja lisamine ehk sertifikaatide haldus =
Kuidas tühistada kliendi sertifikaati (a'la vahetad arvutid välja ja tahad uue kliendi registreerida juba olemasoleva nimega)
 
== Olemasolevate sertifikaatide vaatamine ==
Selleks, et näha millised kliendid puppetmasteril küljes on käivita:
 
  puppet cert --list --all
<nowiki>#+ "puppetclient2.example.com" (SHA256) B7:6D:A5:A2:65:94:80:5E:C0:43:8E:EF:7D:AD:D9:16:FB:CF:4A:6D:BA:82:D5:08:ED:CD:8A:A4:8F:06:FE:E9
</nowiki>
<nowiki>#+ "puppetmaster.example.com" </nowiki> (SHA256) 64:D1:F3:47:E6:88:8C:4B:FF:5A:1C:B3:E1:4A:41:C5:51:B2:95:90:52:1A:EA:13:B4:55:F1:78:AB:04:7F:B9 (alt names: "DNS:puppet", "DNS:puppet.example.com", "DNS:puppetmaster.example.com")
 
== Sertifikaadi tühistamine ==
Olemasolevate kliendisertifikaatide kuvamine:
 
puppet cert --list –all
 
Näidisena eemadame kliendi puppetclient1


==Lisame apache2 mooduli puppeti moodulisse==
  puppet cert clean puppetclient1.example.com
Lisame puppeti modules.pp faili vajalikud read:
  nano /etc/puppet/manifests/modules.pp
  import "apache2"


==Muudame site.pp faili==
Peale sertifikaadi tühistamist taaskäivita puppetmaster.
/etc/puppet/manifests/site.pp
Lisame rea:
import "nodes"


==Puppetmasteri taaskäivitamine==
  service puppetmaster restart
  service puppetmaster restart
==Mooduli testimine puppetis==
puppet agent --test --server puppetmaster.example.com


=Kasulikud lingid ja kasutatud allikad=
== Sertifikaadi taasväljastamine ==
http://bitcube.co.uk/content/puppet-errors-explained - puppeti veateated
Kliendi uuesti puppetmasteri külge lisamiseks tuleb kõigepealt tühistatud sertifikaadid eemaldada, selleks kustutame /var/lib/puppet/ssl
/ kataloogi ära. Sama FQDN-i aga täiesti uue masina puhul pole kustutada vaja.
 
rm -r /var/lib/puppet/ssl


=Autorid=
Puppetmasterist uue sertifikaadi taotlemiseks käivita
Tarmo Trumm


Olle Tuur
puppet agent --test
--waitforcert 120


Täiendanud: Toivo Pärnpuu (2013)
Sertifikaadi taotluse allkirjastamine.


puppet cert --sign puppetclient1.example.com


= Viited =
[http://docs.puppetlabs.com/guides/puppetlabs_package_repositories.html http://docs.puppetlabs.com/guides/puppetlabs_package_repositories.html]


[http://docs.puppetlabs.com/guides/installation.html http://docs.puppetlabs.com/guides/installation.html]


[http://www.packtpub.com/puppet-2-7-for-reliable-secure-systems-cloud-computing-cookbook/book http://www.packtpub.com/puppet-2-7-for-reliable-secure-systems-cloud-computing-cookbook/book]




Koostas:


[[Category:IT infrastruktuuri teenused]]
Toivo Pärnpuu

Latest revision as of 17:37, 12 January 2013

Puppet paigaldus Ubuntu serveril

Sissejuhatus

Juhendi originaal

Juhendi verisoon 1.1 Käesolev juhend on mõeldud inimesele, kes oskab UNIX käsurida ja saab aru mis info paikneb /etc/hosts failis.

Juhend käsitleb, kuidas installeerida ja seadistada Puppet master + kaks puppetit.

Selleks on vaja kolme masinat, millel jookseb ubuntu server.

Kõik näidetes kirjeldatud käsud käivitada administraatori õigustes.

example.com on näite domeen, vajadusel asenda see enda domeeniga.

Tarkvara versioonid:

  • Ubuntu server 12.10
  • Puppet 3.0.2

Paigalduse planeerimine

Puppeti taristu on võimalik üles ehitada erinevate mudelite alusel:

  • tsentrailiseeritud (Agent / master)Keskne server pakub klientidele nende konfiguratsiooni. (Tasub tähelepanu pöörata serveri jõudlusele).
  • Eraldiseisev või hajus (Standalone)Puppeti konfiguratsiooni sünkroniseeritakse masinate vahel kasutades muid vahendeid (näiteks versiooni haldust).

Selles juhendis käsitletav paigalduse tüüp on Agent / master

Agendid saavad oma konfiguratsiooni master serveri käest. Admnistraator peab haldama klientmasinate sertifikaate. Manifest faile tuleb kirjutada ainult puppetmaster serveri peal.

Võrgu seadistused

  • 192.168.56.254 puppet.example.com puppe
  • 192.168.56.201 puppetclient1.example.com
  • 192.168.56.202 puppetclient2.example.com
  • Puppet vajab toimimiseks töötavat nimelahendust, kas dns serveri näol (nõuab ka tagurpidi nimelahenduse toimimist) või iga masina hosts failis kirjed FQDN (täispikk domeeninimi) nimedega.

Tulemüüri seaded (Iptables)

Puppetmaster peab lubama sisenevad ühendused pordil 8140 (TCP)

Klientmasinad peavad lubama väljuvad ühendused puppetmaster 8840 pordi suunas.

Paigaldus

Puppet 3.0.2 versiooni paigaldamiseks peame kasutama puppetlab repositooriumit. Juhendi kirjutamise hetkel oli Ubuntu tarkvaravaramus Puppet 2.7. Serverile paigaldame paketi puppetmaste ja klientmasinatele puppet

Puppetmaster paigaldus

Puppetmasteri paigalduseks lisame puppetlabs repositooriumi ning paigaldame paketti puppetmaster.

wget http://apt.puppetlabs.com/puppetlabs-release-quantal.deb
dpkg -i puppetlabs-release-quantal.deb
apt-get update
apt-get install puppetmaster -y

Peale installatsiooni käivitatakse puppetmaster automaatselt.

Puppet kliendi paigaldus ja käivitamine

wget http://apt.puppetlabs.com/puppetlabs-release-quantal.deb
dpkg -i puppetlabs-release-quantal.deb
apt-get update
apt-get install puppet -y

Peale paigaldus tuleb seadistada puppet automaatselt käivituma. Selleks muuda failis /etc/default/puppet rida START=no.

START=yes

ning käivita kliendi poolel teenus puppet

service puppet start

Puppet kliendi käivitusintervall

Kui on vajadus muuta puppet kliendi käivitusintervalli, siis tuleb lisada faili /etc/puppet/puppet.conf rida runinterval = <aeg sekundites>.

puppet.conf

#/etc/puppet/puppet.conf
[agent]
runinterval = 600

Klientide lisamine puppetmasterile

Peale käivitumist pöörduvad klientmasinad vaikimisi aadressile puppet.example.com ning teevad sertifikaadi taotluse. Seda saab näha käsuga: Oluline on siinkohal ära märkida, et serveri ja kliendi FQDN peab olema mõlemalt poolt lahenduv, muidu läheb sertifikaatidega autentimine katki ning klientide lisamine Puppetmasterisse ei õnnestu.

puppet cert list

Sertifikaatitaotluste allkirjastamiseks tee järgnevat:

puppet cert sign puppetclient1.example.com 
puppet cert sign puppetclient2.example.com

Kontrollida saab:

puppet cert list –all

Peale seda on puppetmaster valmis oma alluvaid juhtima.

Seadistuste näited

Test 2: Vim, vimrc ja htop paigaldus

Allolev kujutab puppet-i seadistuste kataloogipuud (/etc/puppet/). Loodud või muudetud failid ja kataloogid on pakus kirjas.

/etc/puppet/ 
├── auth.conf 
├── files/ 
│   └── vimrc 
├── fileserver.conf 
├── manifests/ 
│   ├── classes/ 
│   │   ├── htop.pp 
│   │   └── vim.pp 
│   └── site.pp 
├── modules/ 
├── puppet.conf 
└── templates/ 

fileserver.conf

[files] 
  path /etc/puppet/files 
  allow *.example.com 
  

Loon ka vastava kataloogi:

mkdir /etc/puppet/files

Loodud kataloogi kopeerin /etc/vim/vimrc faili.

manifests/site.pp

Faili kust kõik saab alguse. Selleks, et luua taaskasutatavaid komponente või klasse ning neid paremini hallata, loome kataloogi /etc/puppet/manifests/classes/ kuhu edaspidi paigutame klasside kirjeldused. Need tuuakse site.pp failile külge.

#site.pp 
import 'classes/*.pp' 
node 'basenode'{
  include htop 
}
 
node 'puppetmaster.example.com' inherits 'basenode' {
}

node 'puppetclient1.example.com' inherits 'basenode' {
  include vim
}
node 'puppetclient2.example.com' inherits 'basenode' { 
  include vim 
}  

manifests/classes/htop.pp

Htop-i paigaldamiseks loome klassi htop.pp ning nõuame, et paigaldatav versioon oleks tarkvaravaramust kõige uuem.

class htop ($version = 'latest') { 
  package {'htop': 
    ensure => $version 
    } 
} 

manifests/classes/vim.pp

Vim-nox paigaldamiseks loome klassi vim.pp ning nõuame, et paigaldatav versioon oleks tarkvaravaramust kõige uuem. Lisaks sellele kopeeritakse eelnevalt ettevalmistatud vimrc fail puppetmasterist /etc/vim/ kataloogi.

class vim ($version = 'latest') { 
    package {'vim-nox': 
        ensure => $version 
    } 
    file { "/etc/vim/vimrc": 
        source => "puppet:///files/vimrc", 
    }   
} 

Diagnostika võimalused

Süntaksilisi vigu aitas minul kõige paremini siluda allolev meetod, kus ei lasta protsessidel taustale minna.

Puppetmaster

Vigade tekkimisel soovitan puppetmaster teenuse seisma panna ning käivitada uuesti –verbose ja --no-daemonize

service puppetmaster stop
puppet master  --verbose –-no-daemonize

Puppet agent

Peatame puppet teenuse ning käivitame ta käsurealt.

service puppet stop
puppet agent --test

Puppet kliendi eemaldamine ja lisamine ehk sertifikaatide haldus

Kuidas tühistada kliendi sertifikaati (a'la vahetad arvutid välja ja tahad uue kliendi registreerida juba olemasoleva nimega)

Olemasolevate sertifikaatide vaatamine

Selleks, et näha millised kliendid puppetmasteril küljes on käivita:

puppet cert --list --all
#+ "puppetclient2.example.com" (SHA256) B7:6D:A5:A2:65:94:80:5E:C0:43:8E:EF:7D:AD:D9:16:FB:CF:4A:6D:BA:82:D5:08:ED:CD:8A:A4:8F:06:FE:E9

#+ "puppetmaster.example.com"  (SHA256) 64:D1:F3:47:E6:88:8C:4B:FF:5A:1C:B3:E1:4A:41:C5:51:B2:95:90:52:1A:EA:13:B4:55:F1:78:AB:04:7F:B9 (alt names: "DNS:puppet", "DNS:puppet.example.com", "DNS:puppetmaster.example.com")

Sertifikaadi tühistamine

Olemasolevate kliendisertifikaatide kuvamine:

puppet cert --list –all

Näidisena eemadame kliendi puppetclient1

puppet cert clean puppetclient1.example.com

Peale sertifikaadi tühistamist taaskäivita puppetmaster.

service puppetmaster restart

Sertifikaadi taasväljastamine

Kliendi uuesti puppetmasteri külge lisamiseks tuleb kõigepealt tühistatud sertifikaadid eemaldada, selleks kustutame /var/lib/puppet/ssl / kataloogi ära. Sama FQDN-i aga täiesti uue masina puhul pole kustutada vaja.

rm -r /var/lib/puppet/ssl

Puppetmasterist uue sertifikaadi taotlemiseks käivita

puppet agent --test
--waitforcert 120

Sertifikaadi taotluse allkirjastamine.

puppet cert --sign puppetclient1.example.com 

Viited

http://docs.puppetlabs.com/guides/puppetlabs_package_repositories.html

http://docs.puppetlabs.com/guides/installation.html

http://www.packtpub.com/puppet-2-7-for-reliable-secure-systems-cloud-computing-cookbook/book


Koostas:

Toivo Pärnpuu