Läksy w43: Puppet palvelinautomaatio järjestelmän perusteita

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

About these ads

Avainsanat: , , , , , , ,

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

You are commenting using your WordPress.com account. Log Out / Muuta )

Twitter-kuva

You are commenting using your Twitter account. Log Out / Muuta )

Facebook-kuva

You are commenting using your Facebook account. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s


Seuraa

Get every new post delivered to your Inbox.