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

Mainokset

Vastaa

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

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

Muodostetaan yhteyttä palveluun %s