H4

Tehtävänanto

h4.

a) Unelmien työpöytä. Konfiguroi graafinen ja komentirivikäyttöliittymä Puppetilla. Asenna tarvittavat ohjelmat ja niihin säädöt.

Skripti

21:30

Harjoituksen tarkoituksena oli luoda valmis puppet moduuli omista käytetyistä asetuksisita. Päätin hyödyntää tässä H2 tekemääni skripitä ja modata sitä hiukan. Loppujen lopuksi skripti näytti tältä:

#!/bin/bash

#bash panoq.sh

sudo timedatectl set-timezone Europe/Helsinki
setxkbmap fi
sudo apt-get update
sudo apt-get install -y git tree puppet firefox

git clone https://github.com/panoq/drdes
sudo mv /home/xubuntu/drdes/ /etc/puppet/modules/drdes

sudo puppet apply -e class {”drdes”:}

Skripti vaihtaa ensin aikavyöhykkeen oikeaksi, eli Europe/Helsinkiin. Tämän jälkeen näppäimistön vaihto suomalaiseen. Sitten pakettilistojen päivitys ja kolmen tärkeimmän ohjelman asennus: git, tree ja puppet. Firefox on mukana vain, koska livetikullani oleva Firefox on suht vanha.

Tämän jälkeen skripti kloonaa git repostani puppet-moduulin ja siirtää sen oikeaan kansioon, jotta se voidaan ajaa suoraan viimeisenä näkyvällä komennolla.

Moduuli

22:00

TEkemäni moduulin sisältö on seuraava:

class drdes {
file {”/usr/share/xfce4/backdrops/xubuntu-wallpaper.png”:
content=>template(”drdes/xubuntu-wallpaper.png”),
}
file {’/home/xubuntu/.bashrc’:
content=>template(”drdes/.bashrc”),
}
}

Moduuli on yksinkertainen. Se vaihtaa taustakuvan haluamakseni, vaikkakin jostain syystä joskus tuo taustakuva tuntuu oudolla tapaa pikselöityvän. En ole vielä löytänyt tähän mitään ratkaisua. Seuraavaksi se vaihtaa .bashrc haluamakseni. Cat .bashrc komennolla näkyy tuon asetustiedoston loppu:  export PS1=’\t\n\u@\w:’ . Kyseinen asetus muuttaa näkymää niin, että ensin näkyy aika, jonka jälkeen tulee rivivaihto ja käyttäjä@kansio: .

 

Muokkauksia

22:45

Muokkasin lopulta skriptiä niin, että poistin sieltä treen ja firefoxin asennukset ja siirsin ne puppet moduuliini. Firefoxia ei enää varsinaisesti asenneta, vaan varmistetaan vain, että siitä on viimeisin versio koneella. Lisäsin seuraavat rivit moduuliin:

package {’tree’:
ensure=>’installed’,
allowcdrom=>true,
}

package {’firefox’:
ensure=>’latest’,
allowcdrom=>true,
}

Testasin vielä kerran skriptin ja moduulin toimivuuden puhtaalla koneella:

Ajoin ensin: wget https://raw.githubusercontent.com/panoq/scripts/master/panoq.sh

Tämän jälkeen: bash panoq.sh

ajo

Lopputulos:

loppu

Melkein sitä mitä haluttiin, mutta edelleen taustakuva oli osaksi muuta kuin pitäisi. Saman kuvan kun vaihtoi käsin taustakuvaksi ongelma hävisi:

wallpaper

Lähteet

Tehtävänanto: http://terokarvinen.com/2017/aikataulu-linuxin-keskitetty-hallinta-3-op-vanha-ops-%e2%80%93-loppusyksy-2017-p5-puppet

Puppet moduuli: https://puppet.com/docs/puppet/5.3/lang_relationships.html#packagefileservice

Skripti: https://laurialho.wordpress.com/2017/11/09/viikko-tehtava-2/

GitHubini: https://github.com/panoq

Mainokset

Harjoitus 3

Tehtävänanto

Tehtävänanto löytyy kokonaisuudessaan sivulta:

http://terokarvinen.com/2017/aikataulu-linuxin-keskitetty-hallinta-3-op-vanha-ops-%e2%80%93-loppusyksy-2017-p5-puppet

h3.

a) Asenna useita orjia yhteen masteriin.

b) Kerää tietoa orjista: verkkokorttien MAC-numerot, virtuaalinen vai oikea… (Katso /var/lib/puppet/)

Valmistelut

~22:00

Koska en ollut tunnilla seurasin harjoitusta tehtäessä pitkälti Teron ohjeita:

PuppetMaster on Ubuntu 12.04 ja Provision Multiple Virtual Puppet Slaves with Vagrant

Näiden lisäksi seurasin Juha Pitkäsen kirjoitusta samasta harjoituksesta:

Harjoitus 3

 

Tein tehtävän koneellani, jota käytin harjoituksessa 2 ja käytin tehtävän tekemiseen livetikkua.

Aloittaessani ajoin muutaman valmistelevan komennon:

setxkbmap fi
sudo apt-get update | sudo apt-get upgrade -y
sudo apt-get install puppet puppetmaster -y

Näillä muutin vain näppäimistön suomalaiseksi, päivitin package listan sekä asensin päivitykset ja asensin puppetin ja puppetmasterin, joita tulisin tarvitsemaan myöhemmin tehtävässa. Tämän jälkeen muutin koneeni nimeksi ”mastershammer”.

sudo hostnamectl set-hostname mastershammer

Hosts-tiedoston muokkaus:
sudoedit /etc/hosts
xubuntu@xubuntu:~$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 xubuntu mastershammer

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

xubuntu@xubuntu:~$
Avahi-daemonin uudelleenkäynnistys
sudo service avahi-daemon restart

 

Vagrant

~22:20

Ensin asensin Vagrantin komennolla:
sudo apt-get -y install vagrant virtualbox

Juhan artikkelia seuraten loin Vagrantille kansion kotihakemistooni komennolla:

mkdir Vagrant

Siirryttyäni kansioon alustin vagrantin komennolla

vagrant init

Tämä loi kansioon tiedoston ”Vagrantfile”, jonka avulla luotavien virtuaalikoneiden lukumäärään ja konfiguraatioon pystyy vaikuttamaan.

Siirryin tarkastelemaan tiedostoa:

nano Vagrantfile

Poistin tiedoston sisällön ja käytin Teron luomaa Vagrantifileä, joka löytyy täältä. Muokkasin Teron tiedostosta tarvitavat tiedot. Vaihdoin herrakoneen nimen tarvittaviin kohtiin, herrakoneen IP:n ja nimesin luotavat virtuaalikoneet uudelleen ”nail01” ja ”nail02”. Loppujen lopuksi tiedosto näytti tältä:

# Multislave vagrant for Puppet
# Copyright 2017 Tero Karvinen http://TeroKarvinen.com

$tscript = <<TSCRIPT
set -o verbose
echo ”See you on http://TeroKarvinen.com&#8221;
apt-get update
apt-get -y install puppet
grep ^server /etc/puppet/puppet.conf || echo -e ”\n[agent]\nserver=mastershammer\n” |sudo tee -a /etc/puppet/puppet.conf
grep mastershammer /etc/hosts || echo -e ”\n192.168.1.243 mastershammer\n”|sudo tee -a /etc/hosts
puppet agent –enable
sudo service puppet start
sudo service puppet restart
TSCRIPT

Vagrant.configure(2) do |config|

config.vm.box = ”bento/ubuntu-16.04”
config.vm.provision ”shell”, inline: $tscript

config.vm.define ”nail01” do |nail01|
nail01.vm.hostname = ”nail01”
end

config.vm.define ”nail02” do |nail02|
nail02.vm.hostname = ”nail02″
end

end

Ajoin komennon ” vagrant up ” luomassani hakemistossa. Alkuun kaikki näytti hyvältä, kunnes:

xubuntu@xubuntu:~/Vagrant$ vagrant up
Bringing machine ’nail01’ up with ’virtualbox’ provider…
Bringing machine ’nail02’ up with ’virtualbox’ provider…
==> nail01: Box ’bento/ubuntu-16.04’ could not be found. Attempting to find and install…
nail01: Box Provider: virtualbox
nail01: Box Version: >= 0
==> nail01: Loading metadata for box ’bento/ubuntu-16.04’
nail01: URL: https://atlas.hashicorp.com/bento/ubuntu-16.04
==> nail01: Adding box ’bento/ubuntu-16.04’ (v201710.25.0) for provider: virtualbox
nail01: Downloading: https://vagrantcloud.com/bento/boxes/ubuntu-16.04/versions/201710.25.0/providers/virtualbox.box
==> nail01: Successfully added box ’bento/ubuntu-16.04’ (v201710.25.0) for ’virtualbox’!
==> nail01: Importing base box ’bento/ubuntu-16.04’…
==> nail01: Matching MAC address for NAT networking…
==> nail01: Checking if box ’bento/ubuntu-16.04’ is up to date…
==> nail01: Setting the name of the VM: Vagrant_nail01_1510778097971_8196
==> nail01: Clearing any previously set network interfaces…
==> nail01: Preparing network interfaces based on configuration…
nail01: Adapter 1: nat
==> nail01: Forwarding ports…
nail01: 22 (guest) => 2222 (host) (adapter 1)
==> nail01: Booting VM…
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: [”startvm”, ”84f79763-17c1-49c5-9bbd-74d43c2effcb”, ”–type”, ”headless”]

Stderr: VBoxManage: error: VT-x is disabled in the BIOS for all CPU modes (VERR_VMX_MSR_ALL_VMX_DISABLED)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole

xubuntu@xubuntu:~/Vagrant$

”VT-x is disabled in the BIOS” eli koneelle reboot, BIOS-asetusten muuttaminen ja yritys numero kaksi.

22:50

Kesti hetken löytää Asuksen BIOS:ista tarvittavat asetukset. VT-x löytyi Advanced näkymästä ja CPU-asetusten alta: Intel Virtualization Technology. Kun etsin mistä oikeat asetukset saisi päälle törmäsin myös VT-d asetukseen. Nopea Googletus antoi vastauksen mitä asetus koski: ”VT-d: Intel Virtualization Technology for Directed I/O”. Löysin myös kehotuksen, että tuon tulisi olla päällä, joten laitoin sen päälle. Valitettavasti kirjatessani tätä, en enää muistanut minkä alta tämä Asuksen BIOSista löytyi.

Tämän jälkeen tein uudelleen aikaisemmin tekemäni kohdat ja ajoin taas komennon:

vagrant up

Tällä kertaa kaikki sujui kuten pitikin.

Orjakoneet

Tarkistin, onko kumpikaan orjistani ottanut yhteyttä komennolla:
sudo puppet cert –list

Ei ollut, eli aika selvittää missä vika. Otin ssh yhteyden ensimmäiselle virtuaalikoneelleni komennolla:

vagrant ssh nail01

Ajoin puppet agentin testin komennolla:

sudo puppet agent — test –verbose

Sain vastaukseksi ”Exiting; no certificate found and waitforcert is disabled”.

Tarkistin oliko yhteyttä otettu herrakoneellani. Ei oltu vieläkään.

Tässä vaiheessa tajusin, etten ollut luonut uusia certejä. Tein uudet ajamalla seuraavat komennot:

sudo service puppetmaster stop
sudo rm -r /var/lib/puppet/ssl

Ja käynnistin puppetmasterin uudelleen:

sudo service puppetmaster start

SSH koneelle ja testiä. Ei vieläkään onnistunut.

~23:00

Hetken pähkäiltyäni ja Googletettuani päädyin sivulle: https://puppet.com/docs/puppet/5.3/configuration.html#dnsaltnames

Täältä löysinkin ohjeet miten edetä. Ensin ajoin komennon

sudo puppet cert generate mastershammer

Tässä kohtaa virheilmoitus olikin varsin selkeä:

Error: The certificate retrieved from the master does not match the agent’s private key.
Certificate fingerprint: 07:DB:5F:8D:9C:E8:94:7F:FB:F7:F1:5D:3D:1C:AC:63:FE:2A:51:40:49:1B:6A:CD:DB:FD:76:AF:E0:10:7B:60
To fix this, remove the certificate from both the master and the agent and then start a puppet run, which will automatically regenerate a certficate.
On the master:
puppet cert clean nail01.xx.xx.xx
On the agent:
1a. On most platforms: find /var/lib/puppet/ssl -name nail01.xx.xx.xx.pem -delete
1b. On Windows: del ”/var/lib/puppet/ssl/nail01.xx.xx.xx.pem” /f
2. puppet agent -t

Ajoin komennot ja tämän jälkeen agent testin:

sudo puppet agent –test –verbose
Info: Creating a new SSL key for nail01
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for nail01
Info: Certificate Request fingerprint (SHA256): BC:36:E5:89:08:0B:77:CB:9A:95:00:D1:88:B7:3D:9F:3C:B3:F3:3D:7C:B1:95:1B:6E:89:FA:37:C2:8C:FB:74

Kävin tekemässä tämän myös toiselle virtuaalikoneelleni.

Tämän jälkeen listasin herrakoneellani certit:

sudo puppet cert –list
”nail01” (SHA256) BC:36:E5:89:08:0B:77:CB:9A:95:00:D1:88:B7:3D:9F:3C:B3:F3:3D:7C:B1:95:1B:6E:89:FA:37:C2:8C:FB:74
”nail02” (SHA256) 7B:21:60:BE:39:70:D8:57:77:B8:4C:B0:E4:AB:EB:C7:F7:AF:5F:6D:EC:FB:7F:9F:CB:9D:EE:93:97:AE:E6:2E

Nyt kaikki näytti siltä miltä pitkin. Allekirjoitin certit komennolla:

sudo puppet cert –sign –all
Notice: Signed certificate request for nail02
Notice: Removing file Puppet::SSL::CertificateRequest nail02 at ’/var/lib/puppet/ssl/ca/requests/nail02.pem’
Notice: Signed certificate request for nail01
Notice: Removing file Puppet::SSL::CertificateRequest nail01 at ’/var/lib/puppet/ssl/ca/requests/nail01.pem’

Slave koneiden tiedot

00:20

Mainittua /var/lib/puppet/yaml/node kansion alla olevaa fileä ei koskaan muodostunut. Loin certit uudelleen, loin helloworldin, jonka sain toimimaan herrakoneella, mutta orjat eivät totelleet. Törmäsin kerta kerran jälkeen samaan virheeseen:

Error: Could not request certificate: Server hostname ’mastershammer’ did not match server certificate; expected one of mastershammer, DNS:mastershammer.local, DNS:mastershammer, DNS:puppet

00:45

Sain vihdoin orjat toimimaan! Muutin Vagrantfilen tietoja seuraaviksi:

 

# Multislave vagrant for Puppet
# Copyright 2017 Tero Karvinen http://TeroKarvinen.com

$tscript = <<TSCRIPT
set -o verbose
echo ”See you on http://TeroKarvinen.com&#8221;
apt-get update
apt-get -y install puppet
grep ^server /etc/puppet/puppet.conf || echo -e ”\n[agent]\nserver=mastershammer.xx.xx.xx\n” |sudo tee -a /etc/puppet/puppet.conf
grep mastershammer /etc/hosts || echo -e ”\n192.168.1.243 mastershammer.xx.xx.xx\n”|sudo tee -a /etc/hosts
puppet agent –enable
sudo service puppet start
sudo service puppet restart
TSCRIPT

Vagrant.configure(2) do |config|

config.vm.box = ”bento/ubuntu-16.04”
config.vm.provision ”shell”, inline: $tscript

config.vm.define ”nail01” do |nail01|
nail01.vm.hostname = ”nail01”
end

config.vm.define ”nail02” do |nail02|
nail02.vm.hostname = ”nail02”
end

end

Nail01:

sudo puppet agent –test
Info: Caching certificate for nail01
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for nail01
Warning: Unable to fetch my node definition, but the agent run will continue:
Warning: undefined method `include?’ for nil:NilClass
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for nail01
Info: Applying configuration version ’1510785797’
Notice: /Stage[main]/Hello/File[/tmp/helloModule]/ensure: defined content as ’{md5}e2a0fbdfba4d5df59a94fa5611929aad’
Info: Creating state file /var/lib/puppet/state/state.yaml
Notice: Finished catalog run in 0.01 seconds
vagrant@nail01:~$

Herralla kävin tarkastamassa noden tiedot:

/var/lib/puppet/yaml/node# cat nail01.xx.xx.xx.yaml

lsbdistid: Ubuntu
kernelmajversion: ”4.4”
interfaces: ”eth0,lo”
kernel: Linux
ipaddress_eth0: ”10.0.2.15”
macaddress_eth0: ”08:00:27:67:d9:b9”
netmask_eth0: ”255.255.255.0”
mtu_eth0: ”1500”
ipaddress_lo: ”127.0.0.1”
netmask_lo: ”255.0.0.0”
mtu_lo: ”65536”
selinux: ”false”
lsbdistrelease: ”16.04”
fqdn: nail01

virtual: kvm
is_virtual: ”true”
architecture: amd64
hardwaremodel: x86_64
operatingsystem: Ubuntu

Samanlaista dataa nail02:

parameters:
lsbdistid: Ubuntu
kernelmajversion: ”4.4”
interfaces: ”eth0,lo”
kernel: Linux
ipaddress_eth0: ”10.0.2.15”
macaddress_eth0: ”08:00:27:67:d9:b9”
netmask_eth0: ”255.255.255.0”
mtu_eth0: ”1500”
ipaddress_lo: ”127.0.0.1”
netmask_lo: ”255.0.0.0”
mtu_lo: ”65536”
selinux: ”false”
lsbdistrelease: ”16.04”
fqdn: nail02

boardmanufacturer: ”Oracle Corporation”
boardproductname: VirtualBox
boardserialnumber: ”0”
bios_vendor: ”innotek GmbH”
bios_version: VirtualBox
bios_release_date: ”12/01/2006”
manufacturer: ”innotek GmbH”
productname: VirtualBox
serialnumber: ”0”
uuid: A239592D-A464-4018-8061-96D709A06A55
type: Other
rubysitedir: /usr/local/lib/site_ruby/2.3.0
hardwareisa: x86_64

Lähteet

http://terokarvinen.com/2017/aikataulu-linuxin-keskitetty-hallinta-3-op-vanha-ops-%e2%80%93-loppusyksy-2017-p5-puppet

http://terokarvinen.com/2012/puppetmaster-on-ubuntu-12-04

http://terokarvinen.com/2017/provision-multiple-virtual-puppet-slaves-with-vagrant

https://jwpitkanen.wordpress.com/kurssit/hallinta-harjoitus-3/

https://puppet.com/docs/puppet/5.3/configuration.html#dnsaltnames

https://stackoverflow.com/questions/30637414/puppet-server-hostname-did-not-match-server-certificate

Viikkotehtävä 2

Ympäristö

Ympäristönä toimii pöytäkone, jossa ajan Xubuntu 16.04 LTS livetikulta ja toisena koneena vanha HP625 läppäri, jossa sama käyttöjärjestelmä asennettuna.

  • pöytäkone
  • CPU: Intel Skylake i5-6600K @ 3.50  GHz
  • RAM 16 GB DDR4 2400 Mhz
  • HP 625
  • CPU: AMD Athlon II P320  2.1 GHz / DualCore
  • RAM 4 GB DDR3 1333 MHz

h2.

Tehtävänanto Teron sivuilta

a) Gittiä livenä: Tee ohjeet tai skriptit, joilla saat live-USB -tikun konfiguroitua hetkessä – ohjelmat asennettua ja asetukset tehtyä.

b) Kokeile Puppetin master-slave arkkitehtuuria kahdella koneella. Liitä raporttiisi listaus avaimista (sudo puppet cert list) ja pätkä herran http-lokista (sudo tail -5 /var/log/puppet/masterhttp.log). Tee tämä alusta lähtien ja dokumentoi samalla, tunnilla aiemmin tehdyn muistelu ei riitä.

c) Lue (tästä c-kohdasta ei tarvitse raportoida)

A) Asetusskriptin teko

En ollut aivan varma mitä asetuksia halusin koneelleni valmiiksi tai miten lähtisin rakentamaan skriptiä, joten katsoin ensin Teron suositteleman linkin GitHub käyttäjä poponappi repositoryyn.

Kyseisen repon README oli sen verran hyvä ja essentialtools.sh sen verran yksiselitteinen, että päätin lainata hiukan kyseistä skriptiä ja lisätä siihen myös jotain omaa, että homma ei mennyt täysin plagioinnin puolelle. Skripti näytti lopulta tältä:

#!/bin/bash

#first run chmod +x /home/xubuntu/panoq.sh

sudo timedatectl set-timezone "Europe/Helsinki"
setxkbmap fi
sudo apt-get update
sudo apt-get install -y git tree puppet

git clone https://github.com/panoq/lkh
sudo cp -r /home/xubuntu/lkh/modules/sshd /etc/puppet/modules/sshd

sudo puppet apply -e 'class {"sshd":}'

sudo service sshd status

Kyseinen skripti asettaa ensin aikavyöhykkeen oikein, tämän jälkeen vaihtaa näppäimistön oikein ja asentaa kurssilla tarvitsemani ohjelmat. Tämän jälkeen se kloonaa git repositoryni ja kopio sieltä moduulini /etc/puppet/modules/sshd -kansioon ja ajaa kyseisen moduulin. Jotta voidaan todeta, että tuo sshd service toisaan on asentunut ja päällä kyseinen skripti ajaa vielä servicen statuksen tarkistavan komennon.

Boottasin livetikun ja testasin toimiko skriptini puhtaalla koneella:

Siirsin ensin skriptin ulkoiselta muistilta koneelle, ajoin komennon ”date” näyttääkseni helpommin, että aikavyöhyke tosiaan muuttui. Seuraavaksi ajoin komennon

run chmod +x /home/xubuntu/panoq.sh

jotta itse skriptin saisi ajettua ja tämän jälkeen ajoin itse skriptin

/home/xubuntu/panoq.sh

ekatoka

Skripti näytti toimivan!

b) Master/Slave arkkitehtuuri

Päätin tehdä helpoimman mahdollisen moduulin, jotta testaaminen olisi mahdollisimman helppoa. Aloitin lisäämällä /etc/puppet/puppet.conf tiedostoon kohdan ”Ordering=Manifest”. Seuraavaksi loin moduulin. Loin /etc/puppet/modules kansion alle kansion ”helloworld”.  Lisäin site.pp tiedoston kansioon /etc/puppet/manifests ja sinne yhden rivin ”include helloworld”.  Loin alikansiot: sudo mkdir /etc/puppet/modules/helloworld/manifests | sudo mkdir /etc/puppet/moduleshelloworld/templates ja init.pp:n helloworld/manifests alle:

class helloworld {

file { '/tmp/helloworld':
 content => "Hello Slave! I am your master!",
 }
}

Seuraavaksi asensin puppetmasterin komennolla sudo apt-get install puppetmaster .

Tämän jälkeen muutin master koneen tietoja Teron ohjeen mukaan:

sudo hostnamectl set-hostname mastershammer
sudoedit /etc/hosts -> toiselle riville xubuntun lisäksi tuo mastershammer
sudo service avahi-daemon restart

Testasin ja master kone vastaa pingiin nimellä mastershammer.local.

Seuraavaksi loin uudet certit master koneelle
sudo service puppetmaster stop
sudo rm -r /var/lib/puppet/ssl

Seuraavaksi lisäsin /etc/puppet/puppet.conf tiedostoon master koneen tiedot:

[master]
dns_alt_names = puppet, mastershammer.local

Tämän jälkeen käynnistin puppetmasterin uudestaan.

Siirryin slave koneelle. Puppet oli jo asennettuna, joten siiryin seuraavaan vaiheeseen. Lisäsin tiedostoon /etc/puppet/puppet.conf rivit:

[agent]
server = master.local

Seuraavaksi otin agentin käyttöön komennolla: sudo puppet agent – -enable ja käynnistin servicen uudestaan: sudo service puppet restart . Seuraavaksi otin yhteyttä masteriin:

sudo puppet agent – -test – -verbose

”Exiting: no certificate found and waitforcert is disabled”

Siiryin takaisin masterille ja allekirjoitin certin:

sudo puppet cert –list
sudo puppet cert –sign hp625

Sitten testasin toimivuuden orjalla:

sudo puppet agent – -test – -verbose

toiimiii

Cert list:

logitt

masterhttp.log:

logit

Lähteet:

Tehtävänanto: http://terokarvinen.com/2017/aikataulu-linuxin-keskitetty-hallinta-3-op-vanha-ops-%e2%80%93-loppusyksy-2017-p5-puppet

Skriptin malli: https://github.com/poponappi/essential-tools

Master/slave setup: http://terokarvinen.com/2012/puppetmaster-on-ubuntu-12-04
(Huom! osa ohjeesta jatkuu kommenteissa!)

Linux keskitetty hallinta – ensimmäinen viikkotehtävä

Pohjustusta

Täällä sitä taas ollaan Linuxin kesitetty hallinta -kurssilla. Viimeksi numero jäi uupumaan hutiloidusti tehtyjen viimeisten palautusten ja esitelmän puuttumisen vuoksi. Olisihan sitä voinut helpomminkin saada opintopisteitä, mutta jostain syystä pidän tästä kurssista. Tuleepa palautettua mieleen Linuxia ja kuinka se Puppet toimii.

Ympäristö

Xubuntu 16.04 LTS

  • HP 625
  • CPU: AMD Athlon II P320  2.1 GHz / DualCore
  • RAM 4 GB DDR3 SDRAM 1333 MHz

Tehtävänanto

h1.

a) Asenna ja konfiguroi jokin muu demoni kuin Apache

b) Opiskele esitiedot (yllä) (tästä b-kohdasta ei tarvitse raportoida, kysellään tunnilla).

c) Opiskele (tästä c-kohdasta ei tarvitse raportoida)

 

Valmistelut

Alkuun päivitin koneen, asensin puppetin, treen ja gitin.

sudo apt-get update | sudo apt-get upgrade -y

sudo apt-get install puppet

sudo apt-get install tree

sudo apt-get install git

Demonin asennus

Päätin asentaa suositellun demonin, eli SSH:n. Teron ohjeiden ja Minna Leppälän tavoin asensin ensin kaiken käsin, ja tarkastelin asetustiedostoa, jotta varsinaisen modulen tekeminen olisi helpompaa.

OpenSSH -serverin asennus:

sudo apt-get install openssh-server

Seuraavaksi menin katsomaan asetustiedostoa. Siirryin kansioon /etc/ssh . Avasin sudoeditillä tiedoston sshd_config. Kuten Minna, lisäsin tuon maksimi kirjautumisten määrän config-tiedostoon.

sshd_config

Modulin luonti

Seuraavaksi aloitin itse modulin tekemisen. Siirryin kansioon /etc/puppet/modules . Tein tänne kansion sshd, josta tulisi myös modulin nimi.  Tämän jälkeen siirryin luotuun kansioon ja loin sen sisälle templates kansion.

cd /etc/puppet/modules
sudo mkdir sshd
cd sshd
sudo mkdir templates

Tämän jälkeen kopioin tuon aikaisemmin tehdyn config tiedoston /etc/ssh alta tulevan modulin templates kansioon.

cd /etc/ssh
sudo cp sshd_config /etc/puppet/modules/sshd/templates

Seuraavaksi tarkastelin sshd_config-tiedostoa käyttäen Puppetin resource toimibtoa.

sudo puppet resource file /etc/puppet/modules/sshd_config

sshd_config_tiedot

Näillä tiedoilla saa config-tiedostolle oikeat oikeudet moduulia varten.

Seuraavaksi siirryin moduulin kansioon ja loin sen alle manifests-kansion init.pp-tiedostoa varten.

cd /etc/puppet/modules/sshd
sudo mkdir manifests

Seuraavaksi loin init.pp-tiedoston ja aloin luomaan moduulia. Olin ehtinyt kirjoittaa jo jonkun verran, kunnes muistin kaksi asiaa:

a) Ordering=Manifest
b) testaa aina pienin mahdollinen osa kerrallaan

muistin.png

Poistin file osan ja testasin, että pelkkä paketin asennus toimii.

sudo puppet apply -e ’class {”sshd”:}’

Sain eteeni punaista tekstiä ja tajusin yhden aaltosulkeen uupuvan. Kävin muuttamassa init.pp-tiedostoa ja testasin moduulia uudemman kerran. Ei enää punaista tekstiä!

korjattu

Seuraavaksi kävin varmistamassa, että tuo ordering=manifest asetus löytyy puppetin omasta config-tiedostosta.

sudoedit /etc/puppet/puppet.conf

asetus

Seuraavaksi lisäsin poistetun osan modulini init.pp:hen. Tämän jälkeen tein muutoksen varsinaiseen  /etc/ssh/sshd_config tiedostoon.

muutos.png

Testailin hetken aikaa, saaden punaista tekstiä. Jostain syystä notify ei toiminut. Poistin sen ja tyydyin pelkkään config teidoston muutokseen. Tämän jälkeen moduuli näytti toimivan.

edit.png

Viimeisenä lisäsin vielä package ja file osioiden lisäksi service osan moduliini.

class_sshd

Pysäytin SSH:n ja testasin toimiiko tuo lisäämäni osa.

ensure

Viimeisenä testasin, että moduuli toimii kokonaisuutena.

purge.png

Git

Hetken aikaa hapuilin Gitin käytön kanssa, mutta lopulta sain sen toimimaan. Pienen taistelun jälkeen sain kuitenkin siirrettyä modulini GitHubiin.

https://github.com/panoq/lkh

Loppumietintöjä

Koko tehtävään sain kulumaan useamman tunnin, johtuen yksinkertaisesti siitä, että vuodessa ehtii unohtaa paljon asioita. Ajattelin, että toinen kerta tätä kurssia olisi reilusti helpompi kuin ensimmäinen, mutta ainkaan vielä ei näytä siltä.

 

Lähteet

Viiden muun opiskelijan modulet

Tehtävä

Kokeile viiden muun opiskelijan modulet ja anna niistä arviot.

Ympäristöt

Acer Aspire ONE D250
Ubuntu 16.04. LTS 32-bit

Pöytäkone, i5-6600k @4,5Ghz, 16GB RAM, GTX 1070

Arvioitavat modulet sekä lähteet

Valitsin arvioitaviksi seuraavat modulet:

Samppa Kangas:
https://github.com/a1402981/myownmodule

Aki Juvonen:
https://github.com/akijuvonen/akinmodule
https://akijuvonen.wordpress.com/

Lauri Helenius:
https://github.com/P2502/chromiumsetup
https://prozac2502.wordpress.com/2016/12/13/ict4tn011-10-oma-moduuli/

Matias Elomäki:
https://github.com/macmatias/opera
https://matiaselomaki.wordpress.com/2016/12/14/oma-moduuli/

Nico Hagelberg
https://github.com/nicougit/puppet/blob/master/isotehtava.md

Muut lähteet

http://terokarvinen.com/2016/aikataulu-linuxin-keskitetty-hallinta-ict4tn011-10-loppusyksy-2016

Valmistelut

Koneelta löytyi jo Puppet, joten tehtäväksi jäi vain ladata modulet, kopioida ne oikeaan kansioon ja ajaa ne.

Sampan module

Koipoituani ne oikeaan kansioon ajoin modulen komennolla:

sudo puppet apply -e ’class {sampanmoduli:}’

screenshot-from-2017-02-06-20-17-56

Module toimi muuten kuin pitikin, Firefoxin syspref.js vaihtui, mutta koska käytössäni oli Ubuntu, eikä Xubuntu ei taustakuva vaihtunut. Tämä johtui siitä, että kyseistä directoryä ei löydy Ubuntusta, vaan taustakuvat ovat eri directoryssä. Oletan kuitenkin, että jos olisin käyttänyt Xubuntua niin module olisi toiminut täydellisesti, koska module toimi muuten hyvin.

Akin module

Ajoin modulen komennolla:

sudo puppet apply -e ’class {akinmoduli:}’

Module ei toiminut minulla ollenkaan, vaan sain ison kasan virheilmoituksia:

screenshot-from-2017-02-06-20-27-12

Ongelma oli sama kuin edellisessä modulessa. Taustakuvat ovat käyttämässäni versiossa eri directoryssä. Tämän lisäksi pakettia ”google-chrome-stable” ei löydetty, eikä se siksi asentunut.

Laurin module

Ajoin modulen komennolla:

sudo puppet apply -e ’class {chromiumsetup:}’

Sain taas kasan virheilmoituksia, mutta tällä kertaa hiukan erilaisia.

Chromium näytti asentuvan, mutta tuota kansiota missä default asetukset ovat ei löytynyt. Muutin käyttäjän alkuperäisestä omakseni, eikä toiminut silloinkaan. Testasin ja Chromium ei myöskään toimi, avautuu ja kaatuu välittömästi.

Matiaksen module

Ajoin modulen komennolla:

sudo puppet apply -e ’class {opera:}’

Yllättäen sain ison kasan virheilmoituksia:

onnistuikunmuokkasi

Koska en halunnut taas vain todeta pienien muutosten kuten init.pp:n tiedoista käyttäjän vaihdon oikeaan jälkeen todeta taas ”eihän tämä toimi koneellani” päätin muokata init.pp:tä hiukan enemmän. Poistin kokonaan nuo osat jotka tekevät pikakuvakkeen ja jätin jäljelle vain tuon osan, joka lataa Operan. Tämän avulla selvisikin syy, miksei module toiminut: 404 not found, eli linkki oli viallinen.

syy

Kaikki uusiksi

Tässä vaiheessa päätin kokeilla Xubuntu livetikulla aikaisemmin testaamiani moduleita ja vielä viidettä löytämääni modulea.

Samppa yritys 2

Kun ajoin modulen livetikulla se toimi kuten pitikin, paitsi että tuo taustakuva ei jostain syystä vaihtunut. Se kuitenkin löytyi oikeasta kansiosta ja sieltä sen sai käsin vaihdettua.

samppa1.png

Aki yritys 2

Sama juttu kuin edellisessä, vaihtamalla livetikulle module toimii paremmin. Kuitenkin edelleen muutama ongelma: vaikka taustakuva löytyy, niin se pitää käydä käsin vaihtamassa. Myös ensimmäisellä yrityksellä vaivannut virheilmoitus ”Unable to locate package google-chrome-stable” vaivaa edelleen modulen toimintaa.

akimodule.png

Lauri yritys 2

Minulla oli aluksi ongelmia saada tätä modulea toimimaan missään muodossa, kunnes huomasin missä oli vika: Init.pp:stä piti käydä muuttamassa käyttäjätunnukset ja ryhmät omikseen, jotta module toimii ja minulta puuttui asennuskomennosta ”-v” . . Module siis asennetaan komennolla:

sudo puppet apply -v -e ’class {chromiumsetup:}’

Tämänkään jälkeen en heti saanut sitä toimimaan. Kuitenkin kun käynnistin Chromiumin muutamaan kertaan uudelleen ja ajoin kyseisen modulin uudestaan, sain tekijän kuvaamat muutokset aikaan:

laurintoimii2laurintoimii.png

Matias yritys 2

Tätä modulea en saanut edelleenkään toimimaan ja sain jopa samanlaiset virheilmoitukset kuin ensimmäisellä kerralla:

matiaseitoimi.png

Nicon module

Tätä modulea olin jo pienellä menestyksellä kokeillut läppärilläni, mutta demosivu ei valitettavasti toiminut. Seurasin taas tekijän erittäin päteviä ohjeita ja kaikki sujuikin hyvin, kunnes tuttu virheilmoitus ja ohje siitä että pakettien asennuksia määritteleviin kohtiin tulisi lisätä ”allowcdrom => true” ilmestyi ruutuun. Kävin lisäämässä ja module toimi lähes kuten sen pitikin.

nicovirhe.png

Vielä tuli muutama virheilmoitus, mutta ainakin sain näkyviin jonkinlaisen infosivun Tomcatiltä:

ncontoimiimelkein.png

Lopuksi

Oli hämmentävää huomata että modulet toimivat näinkin paljon helpommin Xubuntu livetikulta. Osa niistä oli totta kai suunniteltu käytettäväksi sellaisella, mutta oletin että ne olisivat toimineet myös Ubuntu 16.04. läppärilläni. Erityismaininta Nico Hagelbergille siitä, että hänen GitHubinsa oli omasta mielestäni varsin hyvin järjestelty ja modulen toiminta ja asennus oli kuvattu erinomaisesti. Myös Lauri Heleniuksen oma postaus modulesta oli varsin pätevä ja hänelle maininta myös siitä, että hänen modulensa oli käytännössä ainoa, joka toimi juuri niin kuin lupasikin.

Oma module

Tehtävä

Tehtävänä oli luoda oma module. Päätin luoda modulen, joka asentaa VLC-mediasoittimen ja vaihtaa sen oletussoittimeksi.

Kuvaus

Module asentaa aluksi VLC-mediasoittimen. Tämän jälkeen module korvaa vanhan defaults.list tiedoston modulesta löytyvällä defaults.list tiedosotolla, jossa VLC on vaihdettu videoiden oletussoittimeksi.

Testattu Ubuntu 16.04. LTS

Vaatimukset ja testaus

Jotta module toimii, tulee koneelle asentaa uusimpien päivitysten lisäksi Puppet ja Git. Nämä onnistuvat komennoilla:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install puppet
sudp apt-get install git

Kun nämä ovat asennettu voidaan kopioida GitHubista kyseisen modulen repository: https://github.com/panoq/vlc-module.git

Kopioidun repositorystä siirretään kansio /modules/vlc kansion /etc/puppet alle.

Tämän jälkeen voidaan ajaa komento:

sudo puppet apply -e ’class {vlc:}’

Tilanne ennen:

ennen-2016-12-19-21-00-40

Tilanne jälkeen:

jalkeen-2016-12-19-21-04-37

 

 

H5 – PXE & preseed

Harjoitusympäristö

  • Koulun kaksi pöytäkonetta
  • Linux live usb Xubuntu 64amd

Aloitus

Ensin päivitin paketit ja asensin wakeonlanin. Tämän jälkeen bootattavalta koneelta katsottiin sen mac-osoite verkkobootilla. Kun mac-osoite on selvillä, testataan käynnistää kone wakeonlan komennolla

sudo apt-get update

sudo apt-get -y install wakeonlan

wakeonlan 78:ac:c0:c2:8b:b5

DHCP:n asennus masterille

Tähän tarvitaan ensin yksi komento

sudo apt-get -y install isc-dhcp-server

Siirrytään tähän kansioon cd /etc/default

Muokataan isc-dhcp-server-tiedostoa.

Sen sisällöksi tulee:

Tämän jälkeen muokataan /etc/dhcp/dhcpd.conf tiedostoa. Tähän tiedostoon otin sisällön Joona Leppälahden blogista: https://joonaleppalahti.wordpress.com/2016/11/18/palvelinten-hallinta-harjoitus-8/

Kun asetukset mielestäni näyttivät oikeilta, käynnistin dhcp-palvelun uudelleen:

sudo service isc-dhcp-server restart

TFTP-asennus

Aensin ensin tftp:n sudo apt-get -y install tftp-hpa tftpd-hpa

Sitten latasin Ubuntun netbootin, purin sen (tar -xvf netboot.tar.gz) ja kopioin tiedostot tftpboot-hakemistoon:

sudo cp -r * /var/lib/tftpboot

Muokataan syslinux.cfg tiedostoa:

cd /var/lib/tftpboot/ubuntu-installer/amd64/boot-screens

sudo nano syslinux.cfg

Sisällöksi laitoin:

Preseedin luonti jne.

Loin kansioon var/lib/tftpboot/ubuntu-installer/amd64

sudo nano preseed.cfg tiedoston.

Sisältö:

Tallentamisen jälkeen ajoin komennon wakeonlan 78:ac:c0:c2:8b:b5, mutta orjakone käynnisti ensin windowsin. Ajoin komennon uusiksi ja sen jälkeen orjakone alkoi asentumaan. Ensimmäinen asentaminen päättyi mustaan ruutuun, kokeilin asennusta uudelleen. Sama tulos.

Sain kuitenkin ssh-yhteyden kyseiselle koneelle:

Lopetin harjoituksen tähän.

Tein tämän harjoituksen parityönä Samppa Kangaksen kanssa maanantaina 5.12.2016. Palautimme kurssille tämän identtisen raportin lukuunottamatta tätä kommenttia.

Kirjallisuutta & Lähteet:

https://akijuvonen.wordpress.com/

https://joonaleppalahti.wordpress.com/2016/11/18/palvelinten-hallinta-harjoitus-8/

http://terokarvinen.com/2016/aikataulu-linuxin-keskitetty-hallinta-ict4tn011-10-loppusyksy-2016#comment-22026

https://github.com/a1402981/H5-PXE-Preseed/