Harjoitustehtävän aiheena oli tutustua Puppet palvelinautomaatio järjestelmän Learning Pupppet dokumentaation ensimmäisiin lukuihin Resources and the RAL ja Manifests. Käytännön harjoituksena asennettiin Puppet palvelinautomaatio järjestelmä Xubuntu versio 12. 04 käyttöjärjestelmään ja tehtiin lyhyitä Puppet ohjelmia (manifest) edellä mainitun dokumentaation teemoista.
Harjoitusympäristö
Harjoitus suoritettiin 28.10.2012 opiskelijan kotona käyttäen henkilökohtaista tietokonetta. Internet-yhteytenä oli Elisa Oyj:n tarjoama VDSL tyyppinen 100/10 mbit kiinteä laajakaistayhteys. Harjoituksessa käytettiin Lenovo R60 kannettavaa tietokonetta. Käyttöjärjestelmä ladattiin Xubuntu versio 12.04 32-bittinen Linux live-cd:ltä. Tietokoneen kiintolevylle asennettua käyttöjärjestelmää ei käytetty harjoitustehtävän suorittamiseen.
Lenovo R60 kokoonpano:
- Suoritin: Intel Core 2 Duo T56000 @1.83 Ghz
- Keskusmuisti: 4 Gt DDR2
- Kiintolevy: 100 Gt SATA150 54000rpm
- Käyttöjärjestelmä: Xubuntu versio 12.04 32-bittinen
Puppet palvelinautomaatio järjestelmän asentaminen
Aloitin harjoitustehtävän tekemisen päivittämällä Ubuntun pakettivarastot komennolla:
$sudo apt-get update
Pakettivarastojen päivitys kesti muutamia sekunteja.
Asensin Puppet järjestelmän komennolla:
$sudo apt-get install puppet
Testasin asennuksen ajamalla komennon puppet komentoriviltä:
$puppet
Komento antoi tulosteen:
See 'puppet help' for help on available puppet subcommands
Totesin puppet asennuksen onnistuneen.
Puppet resource työkalun kokeileminen
Kokeilin puppet resource työkalua komennolla, joka tulostaa käyttäjän xubuntu tiedot:
$puppet resource user xubuntu
Komento antoi tulosteen:
user { 'xubuntu':
ensure => 'present',
comment => 'Live session user,,,',
gid => '999',
groups => ['adm', 'cdrom', 'sudo', 'dip', 'plugdev', 'lpadmin', 'sambashare'],
home => '/home/xubuntu',
shell => '/bin/bash',
uid => '999',
}
Seuraavaksi loin käyttäjän puppet_tester käyttämällä puppet resource komentoa:
$sudo puppet resource user puppet_tester ensure=present shell="/bin/bash" home="/home/puppet_tester" managehome=true
Komento antoi tulosteen:
notice: /User[puppet_tester]/ensure: created
user { 'puppet_tester':
ensure => 'present',
home => '/home/puppet_tester',
shell => '/bin/bash',
}
Testasin uuden käyttäjän luomista tutkimalla /home hakemiston tiedostolistausta komennolla:
$ls -l /home
Komento antoi tulosteen:
total 0
drwxr-xr-x 2 puppet_tester puppet_tester 140 Oct 28 17:48 puppet_tester
drwxr-xr-x 23 xubuntu xubuntu 700 Oct 28 17:47 xubuntu
Kokeilin kirjautumista puppet_tester käyttäjänä luomalla ensin salasanan passwd ja vaihtamalla käyttäjää su komennolla:
xubuntu@xubuntu:~$ sudo passwd puppet_tester
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
xubuntu@xubuntu:~$ su - puppet_tester
Password:
puppet_tester@xubuntu:~$
Pääsin kirjautumaan puppet_tester käyttäjänä ja totesin puppet resource komennon onnistuneen. Seuraavaksi kokeilin pupper resource komennon –edit valitsinta, jolla resurssia pystyy muokkaamaan tekstieditorissa:
$sudo puppet resource user puppet_tester --edit
Komento avasi puppet_tester user resurssin vim editorissa muokattavaksi. Muutin ensure rivin muotoon, jolla käyttäjä poistetaan:
ensure => 'absent',
Tallensin muutokset ja poistun vim editorista komennolla ‘:x’ ja seuraavaksi puppet poisti käyttäjän:
warning: Could not retrieve fact fqdn
info: Applying configuration version '1351440883'
notice: /Stage[main]//User[puppet_tester]/ensure: removed
notice: Finished catalog run in 2.94 seconds
Testasin käyttäjän poistamista tutkimalla /home hakemiston tiedostolistausta komennolla:
$ls -l /home
Komento antoi tulosteen:
total 0
drwxr-xr-x 2 1000 1000 160 Oct 28 18:01 puppet_tester
drwxr-xr-x 23 xubuntu xubuntu 700 Oct 28 18:14 xubuntu
Käyttäjän puppet_tester kotihakemistoa ei oltu poistettu. Kokeilin seuraavaksi kirjautumista puppet_tester käyttäjänä luomalla ensin salasanan passwd ja vaihtamalla käyttäjää su komennolla:
xubuntu@xubuntu:~$ sudo passwd puppet_tester
passwd: user 'puppet_tester' does not exist
xubuntu@xubuntu:~$ su - puppet_tester
Unknown id: puppet_tester
Salasanan vaihtaminen ja kirjautuminen puppet_tester käyttäjänä ei onnistunut, koska puppet_tester käyttäjää ei ollut enää olemassa. Totesin puppet resource –edit komennon onnistuneen, vaikka se ei poistanut käyttäjän kotihakemistoa. Seuraavaksi kokeilin poistaa puppet_tester käyttäjän kotihakemiston komennolla:
xubuntu@xubuntu:~$ sudo puppet resource file '/home/puppet_tester' ensure=absent recurse=true
notice: /File[/home/puppet_tester]: Not removing directory; use 'force' to override
notice: /File[/home/puppet_tester]/ensure: removed
file { '/home/puppet_tester':
ensure => 'directory',
}
xubuntu@xubuntu:~$ ls -l /home/
total 0
drwxr-xr-x 2 1000 1000 160 Oct 28 18:01 puppet_tester
drwxr-xr-x 23 xubuntu xubuntu 700 Oct 28 18:14 xubuntu
Hakemistoa ei poistettua, jonka myös ls komento vahvisti. Seuraavaksi kokeilin lisätä edelliseen puppet resource komentoon force=true määrityksen:
xubuntu@xubuntu:~$ sudo puppet resource file '/home/puppet_tester' ensure=absent force=true recurse=true
notice: /File[/home/puppet_tester]/ensure: removed
file { '/home/puppet_tester':
ensure => 'absent',
}
xubuntu@xubuntu:~$ ls -l /home
total 0
drwxr-xr-x 23 xubuntu xubuntu 700 Oct 28 18:14 xubuntu
Tällä kertaa puppet_tester käyttäjän kotihakemiston poistaminen onnistui.
Puppet manifestin kirjoittaminen
Aluksin tein hakemiston puppet ja sen alihakemiston manifests:
xubuntu@xubuntu:~$ cd
xubuntu@xubuntu:~$ mkdir puppet
xubuntu@xubuntu:~$ cd puppet/
xubuntu@xubuntu:~/puppet$ mkdir manifests
xubuntu@xubuntu:~/puppet$
Kirjoitin Puppet manifestin käyttämällä nano editoria:
$nano manifests/site.pp
Puppet manifestin sisältö oli seuraava:
file {"/etc/motd":
ensure => link,
target => "/var/run/motd",
}
file {"/var/run/motd":
ensure => present,
content => "Tervetuloa Xubuntu 12.04.1 LTS Linuxiin.\n\n* Dokumentaatio: https://help.ubuntu.com/\n\n\n",
}
Puppet manifest muuttaa kirjautumisen yhteydessä näytetyn /etc/motd tiedoston sisällön suomenkieliseksi. Ajoin Puppet manifestin komennolla:
$ sudo puppet apply manifests/site.pp
warning: Could not retrieve fact fqdn
notice: /Stage[main]//File[/var/run/motd]/content: content changed '{md5}12a60eba83a333eddefc6ec1342ebf0e' to '{md5}b7a50b4ef95b24e4e7bc6b9733788edd'
notice: Finished catalog run in 0.06 seconds
Testasin Puppet manifestin toimivuutta komennolla:
xubuntu@xubuntu:~$ cat /etc/motd
Tervetuloa Xubuntu 12.04.1 LTS Linuxiin.
* Dokumentaatio: https://help.ubuntu.com/
Totesin Puppet manifestin toimivaksi.
Apache palvelimen asentaminen Puppet manifestilla
Kirjoitin toisen Puppet manifestin Apache palvelimen asentamiseksi nano editorilla:
$nano manifests/site.pp
Manifestin sisällöstä tuli seuraava:
package { "apache2":
ensure => installed,
allowcdrom => true,
}
service { "apache2":
ensure => running,
enable => true,
}
Ajoin Puppet manifestin komennolla:
$ sudo puppet apply manifests/apache.pp
warning: Could not retrieve fact fqdn
err: /Stage[main]//Service[apache2]: Could not evaluate: Could not find init script for 'apache2'
notice: /Stage[main]//Package[apache2]/ensure: ensure changed 'purged' to 'present'
notice: Finished catalog run in 13.02 seconds
Puppet ilmoitti, että se ei löydä taustaprosessin käynnistysskriptiä (init script) “apache2″ palvelulle. Apache palvelin kuitenkin asennettiin.
Ajoin uudestaan saman komennon:
$ sudo puppet apply manifests/apache.pp
warning: Could not retrieve fact fqdn
notice: Finished catalog run in 0.39 seconds
Tällä kertaa Apachen käynnistysskripti löytyi, koska se oli asennettu kun Puppet manifesti ajettiin ensimmäisen kerran. Testasin Apache pavelimen toimivuutta avaamalla Firefox selaimella osoitteen “localhost”:
Totesin Apache asennuksen toimivaksi. Seuraavaksi muutin Puppet manifestia niin, että Apache taustaprosessin sammutetaan:
service { "apache2":
ensure => stopped,
enable => true,
}
Ajoin uudestaan Puppet manifestin, jotta Apache taustaprosessin tila päivitettiin:
$ sudo puppet apply manifests/apache.pp
warning: Could not retrieve fact fqdn
notice: /Stage[main]//Service[apache2]/ensure: ensure changed 'running' to 'stopped'
notice: Finished catalog run in 1.60 seconds
Testasin Apache pavelimen toimivuutta uudestaan avaamalla Firefox selaimella osoitteen “localhost”:
Yhteyttä localhost palvelimeen ei saatu, koska Apache taustaprosessi oli sammutettu. Totesin Puppet manifestiin tehdyn muutoksen toimivan.
Lähteet
Karvinen, Tero 2012a. Hello Puppet – on Ubuntu 12.04 LTS.
http://terokarvinen.com/2012/hello-puppet-on-ubuntu-12-04-lts
Karvinen, Tero 2012b. Linux keskitetty hallinta ICT4TN011-2 kurssin kotisivu.
http://terokarvinen.com/2012/aikataulu-linuxin-keskitetty-hallinta-ict4tn011-2-puppet
Puppet Labs 2011. Docs: Learning — Resources and the RAL.
http://docs.puppetlabs.com/learning/ral.html
Puppet Labs 2011. Docs: Learning — Manifests
http://docs.puppetlabs.com/learning/manifests.html
About
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti.
http://www.gnu.org/licenses/gpl.html
Pohjana Tero Karvisen Linux-kurssi, www.iki.fi/karvinen
Avainsanat: Apache, Linux keskitetty hallinta, palvelinautomaatio, Puppet, Puppet manifest, Puppet resource, server automation, Xubuntu