Harjoitus 3: Työasemien automaattinen asennus

Harjoituksen tarkoituksena oli automatisoida Fedora Core 4-työaseman asennus seuraavasti: "Automatisoi valmiin työaseman asennus. Asennus alkaa sammutetusta, tyhjästä työasemasta, jossa on sopivat BIOS-asetukset. Sopivia tekniikoita WakeOnLan, dhcp, pxe, kickstart. Valmis työasema on sellainen, jolle käyttäjä voi kirjautua sisään ja alkaa tehdä töitä."

Sisällysluettelo

  1. Ajoitus
  2. Harjoitus
  3. Jälkikommentteja
  4. To-Do

Ajoitus

Suoritin harjoituksen 07 - 09.11.2005 aikana, luokassa 5007 koneilla numero 15 & 16 ja luokassa 5013 koneilla 5 & 10. Aikaa harjoitukseen kului kaiken kaikkiaan noin 10 tuntia, josta dokumenttien kirjoittaminen vei noin parin tunnin verran.


Harjoitus

Aloitin asiaan tutustumisen lukaisemalla opettajan sivuilta löytyviä vinkkejä asiasta. Samalla törmäsin myöskin Ville Myllymäen sivuille, joista oli suuresti apua harjoituksen toteuttamisessa.

Sitten vain tuumasta toimeen, eli hain ensin opettajan tekemän tftpboot.tar-paketin ja purin sen juureen näin:

cd /
wget http://myy.helia.fi/~karte/teros-tftpboot.tar.bz2
tar jxvf teros-tftpboot.tar.bz2

Tämän jälkeen kävin hakemassa vmlinuz ja initrd.img tiedostoista uusimmat versiot funetin peililtä ja kopioin ne tar-tiedoston purkamisen yhteydessä syntyneeseen hakemistoon /tftpboot kutakuinkin näin:

cd /tmp
wget http://ftp.funet.fi/pub/Linux/mirrors/fedora/linux/core/4/i386/os/images/pxeboot/initrd.img
wget http://ftp.funet.fi/pub/Linux/mirrors/fedora/linux/core/4/i386/os/images/pxeboot/vmlinuz
rm /tftpboot/initrd.img
rm /tftpboot/vmlinuz
cp initrd.img /tftpboot
cp vmlinuz /tftpboot

Seuraavaksi asensin tftp:n ja httpd:n yum:in avulla:

# yum install tftp-server.i386
# yum install httpd.i386

Jonka jälkeen otin vielä palomuurin ja SElinuxin pois päältä varmistaakseni juuri asennettujen palvelinten toiminnallisuuden.Tätä ei kannata tehdä, mikäli olet julkisessa verkossa, sillä seuraukset saattavat olla huikeita... Tässä vielä kertauksena komennot, joilla homma hoituu:

# setenforce 0
# /etc/init.d/iptables stop

Seuraavaksi laitoin juuri asennetut serverit päälle komennoillalla:

 # /etc/init.d/tftpd start
 # /etc/init.d/httpd start

Molemmat palvelimet asensin oletusasetuksin, eikä mitään ongelmia tullut tässä vastaan. Httpd:n asennus perustui pelkästään oletusarvoihija testasin vain nopeasti selaimella, että haluamiini tiedostoihin ja hakemistoihin pääsee todellakin kiinni selaimella. Tässä vaiheessa oli hyvä muistaa "chmod o+r ..." komento, sillä muuten ei esim. kickst.cfg tiedosto ollut luettavissa...

Täältä löytyy käyttämäni httpd.conf tiedosto.

Tämän jälkeen kopioin myy-palvelimelta kickst.cfg tiedoston /var/www/html -hakemistoon testikoneellani. Koska nyt oli ajatuksena tarjota oman http-palvelun kautta asennustiedostoja, piti kickst.cfg tiedostoon tehdä hiukan muutoksia, joiden jälkeen tiedosto näytti tältä.

Seuraavaksi oli vuorossa tftpboot-tiedostojen muokkaus tarpeen mukaisiksi. Heti kärkeen kävin editoimassa tiedostoa /tftpboot/pxelinux.cfg/default, jotta PXE-bootissa osattaisiin etsiä kickstart-tiedostoani oikeasta paikasta, joka oli siis oma http-palvelimeni.

Seuraavaksi kävin laittamassa bootup messagen asianmukaiseen muotoon - eli laitoin oman nimeni näkyviin.

Tämän jälkeen oli vuorossa itse asennusmedioiden käyttöön saattaminen, joka hoitui yksinkertaisesti kopioimalla kaikkien neljän FC4-asennus CD:n sisältö hakemistoon /var/www/html/linux.

Nyt olikin sitten vuoro siirtyä tutkailemaan dhcp:n asetuksien säätöä. Tunnilla mainittiinkin, että dhcpd.conf:sta tulee löytyä määreet next-server ja pxelinux.0. Näiden säätöjen lisäksi löytyi Villen sivuilta pointtereita toisiin sivuihin, joissa kehoitettiin määrittelemään hwaddressin avulla kiinteä IP asiakaskoneelle. Pienoisen pohdinnan jälkeen päädyin tämän näköiseen dhcpd.conf tiedostoon. Nyt oli mielestäni kaikki oleellinen jo kasassa, joten oli aika alkaa tutkimaan wakeonlan-toiminnallisuutta.

Wake-On-Lan

Noudatin Villen neuvoa googlettamisesta ja hyppysiini tarttui wakeonlan-0.41-0.fdr.1.noarch.rpm niminen paketti.

Siispä asensin ko. paketin komennolla:

rpm -ivh wakeonlan-0.41-0.fdr.1.noarch.rpm

ja testasin asennuksen toimivuuden antamalla komennon "wakeonlan", joka palautti komennon helpin - asennus siis onnistui.

Tämän jälkeen kirjasin ylös "serveri"-koneen(nro 16) MAC-osoitteen(hwaddr), joka oli 00:0D:56:2B:CC:2D . Seuraavaksi toistin tempun "asiakas"-koneella boottaamalla sen omalla siirtokovalevylläni ylös - asiakas koneen (nro 15) MAC-osoite oli muotoa 00:0D:56:2B:D2:9A . Lisäksi tarkistin, että asiakaskoneen BIOS-asetuksissa oli kohta

"REMOTE WAKE UP" säädetty asetukseen "On w/ Boot to NIC" 

sekä

"Integrated Devices (LegacySelect Options) --> Network Interface Controller Parametrin arvo oli "On w/ PXE".

Tämän jälkeen siirsin siirtokovalevyni takaisin "serveri"-koneeseeni, kytkin serveri-koneen ja asiakas-koneen toisiinsa ristiinkytketyllä verkkokaapelilla ja aloin kokeilemaan miten wakeonlan toimii. Hetken aikaa kestäneen kokeilun jälkeen totesin, että homma toimii hienosti.

Asiakaskoneeni lähti käynnistymään, kun annoin serverikoneella komennon:

# wakeonlan -i 10.0.0.255 00:0D:562B:D2:9A

Tästä lokista näkyy miten asiakaskone alkaa hakemaan IP:tä itselleen:

Nov  9 17:48:07 localhost dhcpd: dhcpd startup succeeded
Nov  9 17:48:28 localhost kernel: e1000: eth0: e1000_watchdog_task: NIC Link is Down
Nov  9 17:48:31 localhost kernel: e1000: eth0: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex
Nov  9 17:48:33 localhost dhcpd: DHCPDISCOVER from 00:0d:56:2b:d2:9a via eth0
Nov  9 17:48:33 localhost dhcpd: DHCPOFFER on 10.0.0.103 to 00:0d:56:2b:d2:9a via eth0
Nov  9 17:48:37 localhost dhcpd: DHCPREQUEST for 10.0.0.103 (10.0.0.2) from 00:0d:56:2b:d2:9a via eth0
Nov  9 17:48:37 localhost dhcpd: DHCPACK on 10.0.0.103 to 00:0d:56:2b:d2:9a via eth0
Nov  9 15:48:37 localhost in.tftpd[3525]: tftp: client does not accept options

Ainoa murheenkryyni hommassa oli se, että asiakas-koneen biossista johtuvista syistä bootti halttasi ja jäi odottamaan joko F1-näppäimen painallusta - jolloin jatkettaisiin boottia - tai F2-näppäimen painallusta, jolloin siirrytään koneen BIOS-määrityksiä tutkailemaan...

Tästä pienoisesta kauneusvirheestä huolimatta koko muu boottijärjestely toimi kuten pitikin, eli wakeonlan-paketilla kone käynnistyi ja F1-näppäimen painalluksen jälkeen alkoi asentelemaan onnellisesti Linuxia käyttäen tekemääni kickst.cfg tiedostoa ja hakien tavarat suoraan rakentamaltani http-palvelimelta. Asennus tosin kaatui siinä vaiheessa kun se alkoi käsittelemään laitteen kovalevyä, sillä olin tarkoituksella jättänyt kickst.cfg tiedostoon kohdekovalevyksi hda:n enkä hdc:tä, sillä koneissa näytti olevan jo w2k asennettuna, enkä halunnut turhaan sotkea koneita.

Kolmosharjoitus oli näin kokonaisuudessaan suoritettu onnistuneesti ;)


Jälkikommentteja

Harjoituksesta ei jäänyt oikeastaan mitään hampaankoloon/ihmeteltävää, sillä kaikki toimi odotetusti. Suurin osa ajasta harjoituksessa meni siihen, että kävi läpi materiaalia ja koetti järjestellä asioita loogiseen järjestykseen omassa päässään, jotta tulee kaikki oleellinen varmasti tehtyä...


To-Do

Bonustehtävänä oli vastaavan järjestelmän rakentaminen Ubuntulle, sillä näköjään myös Ubuntu tukee kickstart-asennuksia. Täältä löytyy lisäinfoa Ubuntu kickstart asennuksesta.