H3 Palvelinten hallinta (Linux)

Tehtävät liittyvät Haaga-Helia AMK Tero Karvisen pitämään kurssiin, Palvelinten hallinta ict4tn022-3. Tehtävät löytyvät terokarvinen.comista: http://terokarvinen.com/2017/aikataulu-palvelinten-hallinta-ict4tn022-3-5-op-uusi-ops-loppusyksy-2017-p5

Koneen rauta

rauta.png

Ennen tehtävien aloittamista, tarkistin verkkoyhteyden ja ajoin Xubuntulla komentokehotteessa komennot <sudo apt-get update><setxkbmap fi>, eli päivitin paketit ja vaihdoin näppäimistön kieleksi Suomi.

Tein tehtävät 11.11.2017. Tehtävissä kesti noin 2 tuntia.

a) Asenna useita orjia yhteen masteriin. Ainakin yksi rauta- ja useampia virtuaalisia orjia.

Aloitan komennolla <sudo apt-get install -y puppetmaster vagrant virtualbox ssh>. Tästä koneesta (fyysinen kone) tulee siis masterin kone. Komento asentaa puppetmasterin, eli ohjelman jolla hallitaan orjia ja vagrant + virtualbox + ssh, jota tarvitsen virtuaalisten koneiden luontiin ja käsittelyyn.

Kun ohjelmat oli asennettu, loin “Vagrantfile” tiedoston sijaintiin “/home/xubuntu/”, komennolla <cd /home/xubuntu><sudo nano Vagrantfile> . Tiedostoon kirjoitin Tero Karvisen luoman koodinpätkän, jolla luodaan useampi virtuaalitietokone. http://terokarvinen.com/2017/multiple-virtual-computers-in-minutes-vagrant-multimachine.

” # http://TeroKarvinen.com/
Vagrant.configure(2) do |config|
config.vm.box = “bento/ubuntu-16.04”

config.vm.define “slave01” do |slave01|
slave01.vm.hostname = “slave01”
end

config.vm.define “slave02” do |slave02|
slave02.vm.hostname = “slave02”
end
end “

Tallensin tiedoston ja kirjoitin komennon <vagrant up>. Virtuaalitietokoneiden luominen käynnistyi ja se kesti noin minuutin.

Seuraavaksi muutin masterin tietokoneella hostnamea, komennolla <sudo hostnamectl set-hostname master>. Tämän jälkeen lisäsin oman ip-osoitteeni ja hostnamen “Master” <sudoedit /etc/hosts>. Ip-osoitteen saa selville komennolla <hostname -I>.

Screenshot_2017-11-11_22-29-44.png

Tallensin tiedoston ja käynnistin avahin uudestaan <sudo service avahi-daemon restart>.

Kokeilin, että hostname oli nyt “Master” ja että pystyn myös pingaamaan siihen.

Screenshot_2017-11-11_22-31-10.png

Seuraavaksi menin puppet.conf tiedostoon lisäämään dns nimen [master] alle. <sudoedit /etc/puppet/puppet.conf>.

Screenshot_2017-11-11_22-33-21.png

Seuraavaksi kirjauduin virtuaalikoneorjalle “slave01” komennolla <vagrant ssh slave01>. Kirjautumisen jälkeen latasin orjalle puppetin <sudo apt-get install -y puppet>. Sen jälkeen lisäsin masterin ip-osoitteen ja hostnamen /etc/hosts tiedostoon <sudoedit /etc/hosts> ja lisäsin puppet.conf tiedoston loppuun “[agent] server = master” pätkän, jotta orja tietää keneltä ottaa käskyjä vastaan.

Orjalla kirjotin komennon <sudo puppet agent –enable>, jonka jälkeen kirjoitin masterilla <sudo puppet cert –list> ja orjan kone näkyi listattuna.

Screenshot_2017-11-11_22-48-53.png

<sudo puppet cert –sign slave01>

Screenshot_2017-11-11_22-49-46.png

Seuraavaksi kirjoitin orjalla <sudo puppet agent -t> , jonka avulla orja saa masterilla määritellyt asetukset (puppetilla luotuja asetuksia). Loin “testi” moduulin, jotta pystyn testata saako orja todella masterilla luotuja asioita koneelleen.

<cd /etc/puppet> <sudo mkdir -p modules/helloworld/manifests/>

<sudoedit manifests/site.pp>

include testi

<cd /etc/puppet/modules/testi/manifests> <sudoedit init.pp>

Screenshot_2017-11-11_22-54-12.png

<sudo puppet apply -e ‘class{“testi”:}’>

<cat /tmp/testi>

Screenshot_2017-11-11_22-55-07.png

Ohjelma toimi masterilla. Seuraavaksi päivitän orjan <sudo puppet agent -t> ja testaan saiko orja ohjelman.

Screenshot_2017-11-11_22-57-11.png

Testi toimi myös orjalla. Seuraavaksi säädin samalla tavalla toisen orjan “slave02”.

Screenshot_2017-11-11_23-00-24.png

Myös virtuaalikoneen “slave02” orja toimi moiteettomasti.

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

Loggaan rootille <sudo -i> ja menen puppetin kansioon <cd /var/lib/puppet>

Screenshot_2017-11-11_23-10-09.png

Screenshot_2017-11-11_23-12-18.png

Slave01 tiedot:

ipaddress_lo: “127.0.0.1”
netmask_lo: “255.0.0.0”
mtu_lo: “65536”
selinux: “false”
lsbdistrelease: “16.04”
fqdn: slave01
sshdsakey: “AAAAB3NzaC1kc3MAAACBALKXFzIIVqGgOJJj6zO3OB+zsXewZCdMH2GdG3oNG4XYP2k9snAZwkzYHkc+lmp27OF/JQKXIwkQm345ukRQTWBo7Y9TIpEx478RvAlE9bUvFo563228QDxaEL4b9kgJ8QiQ/5yXSIuEOvmWoX2FYp9FuNa6xUoZ2aleUHWoDEx9AAAAFQCUhdwNvYv3j9Uupk9Y1PCCXwiavwAAAIEAmdwNoNYOvwvC5pOs/vE2WhxsFgmvJX9XDbvCxbpEKtoNKw8onvE6bhLs85z141U0CK/tyjubdjyM2BcuwG0t006+th4KUqMX6vUp/C0dX2XrQKyBK+VyEpi3GYqa44N2N+i5NHV9Uf68wKTIBWRuUCiN3UJ5pAvGWepqALVME9YAAACAdysYWyDIuyouuoY19ia0sEB2q9duJWA/nC1O9oqPncJkOpauDMqTYpNemZLtaJ5WEpc9+w4ae1+WHF097PvzuqN+foItwMh0pqC5HKG9j7u+tSdNV6dyLrIw+vkAkaLPI0sR58830cDEVQc2b9Qy1HhHOYAz3V7EfiOsXQh2Ac8=”
sshfp_dsa: |-
SSHFP 2 1 921641a4d3b771fc1890e7e16a2bac56d6dfa25a
SSHFP 2 2 f581792eee31c789616d9f87d137088618997bbde7bf66c55e6ff94682456a01
sshrsakey: “AAAAB3NzaC1yc2EAAAADAQABAAABAQDGfeFZhWNXtY8R+r2P3fpvg+91Y4OgRN7HtfqjLE+xr9XvPj+NyDWPc2XHV1GwZSZpTjZMJRdy6iztBWLrEvFEidCUlufryyAb4fQ30oz48nX3YIJuPLuXVkx+Hfo7H+AgYTtnfSfU8JUhAXx8Fb5Y8NQORrLhdH314VnWX83HYJqTPOL+QXVexwsP+FNr84jICKWTde9l7m8pGlLL/GL6+bZjq7tWN3pMtpwY7EDLLQKoR4gbGZ7U6mbkApMUf1D7bV9ekLBU+2jKo6a+wSaliJzoMXBF7qyyL606dbrFsEc1ku7V0+w0MS4YqCmN+7Q7s8GEWEJQ2bZPgD+SFFqj”
sshfp_rsa: |-
SSHFP 1 1 0226c504a6b4f4abe551bbf331342eab0d9a2752
SSHFP 1 2 6c76130cbfb9df02c7f6855591cdfb0a593a611e84dcb797bb60cababe53e153
sshecdsakey: “AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFFZ0Hm6/Zy9XIw1eCY+SCdccwI3M6hYsPcZ4bmvpGJ00WeZ0t8DIvthucGmW+je6XYkwcpPdLaZWTVdff2aUx0=”
sshfp_ecdsa: |-
SSHFP 3 1 b7a5ae71af5720677185f8c254706c0e41cd384d
SSHFP 3 2 c16aa8c157d49442e001cd7d875c046d0db6872479f361ff799563a6fd80933a
sshed25519key: “AAAAC3NzaC1lZDI1NTE5AAAAINaIxoVmJT1ezT8Tgye/pmXO2t6pRF71Z1SqNEJtgY++”
sshfp_ed25519: |-
SSHFP 4 1 33b0ce1b325e74145d86b183c14b9e8b8bea02b0
SSHFP 4 2 21dc94a734bcb09efd8c2c7799a46ed80d88d8963e3fd10eb1f3ac6712a7c714
virtual: kvm
is_virtual: “true”
architecture: amd64
hardwaremodel: x86_64
operatingsystem: Ubuntu
os: “{\x22name\x22=>\x22Ubuntu\x22, \x22family\x22=>\x22Debian\x22, \x22release\x22=>{\x22major\x22=>\x2216.04\x22, \x22full\x22=>\x2216.04\x22}, \x22lsb\x22=>{\x22distcodename\x22=>\x22xenial\x22, \x22distid\x22=>\x22Ubuntu\x22, \x22distdescription\x22=>\x22Ubuntu 16.04.3 LTS\x22, \x22distrelease\x22=>\x2216.04\x22, \x22majdistrelease\x22=>\x2216.04\x22}}”
uptime_days: “0”
puppetversion: “3.8.5”
augeasversion: “1.4.0”
memorysize: “992.28 MB”
memoryfree: “836.43 MB”
swapsize: “1024.00 MB”
swapfree: “1024.00 MB”
swapsize_mb: “1024.00”
swapfree_mb: “1024.00”
memorysize_mb: “992.28”
memoryfree_mb: “836.43”
timezone: UTC
uptime_hours: “0”
partitions: “{\x22sda1\x22=>{\x22uuid\x22=>\x22f9b9ba87-fe5d-410b-af6f-b3c90a9b88a1\x22, \x22size\x22=>\x22997376\x22, \x22mount\x22=>\x22/boot\x22, \x22filesystem\x22=>\x22ext2\x22}, \x22sda2\x22=>{\x22size\x22=>\x222\x22, \x22filesystem\x22=>\x22dos\x22}, \x22sda5\x22=>{\x22size\x22=>\x2282882560\x22, \x22filesystem\x22=>\x22LVM2_member\x22}}”
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: “390D441A-A27A-4B70-AB34-44F4C12E5211”
type: Other
rubysitedir: /usr/local/lib/site_ruby/2.3.0
hardwareisa: x86_64
path: “/home/vagrant/bin:/home/vagrant/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin”
rubyversion: “2.3.1”
operatingsystemmajrelease: “16.04”
processors: “{\x22models\x22=>[\x22Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz\x22], \x22count\x22=>1, \x22physicalcount\x22=>1}”
processor0: “Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz”
processorcount: “1”
blockdevice_sda_size: “42949672960”
blockdevice_sda_vendor: ATA
blockdevice_sda_model: “VBOX HARDDISK”
blockdevices: sda
id: root
network_eth0: “10.0.2.0”
network_lo: “127.0.0.0”
uptime: “0:23 hours”
uptime_seconds: “1426”
kernelrelease: “4.4.0-87-generic”
facterversion: “2.4.6”
gid: root
rubyplatform: x86_64-linux-gnu
macaddress: “08:00:27:67:d9:b9”
osfamily: Debian
physicalprocessorcount: “1”
hostname: slave01
operatingsystemrelease: “16.04”
ps: “ps -ef”
lsbmajdistrelease: “16.04”
lsbdistcodename: xenial
netmask: “255.255.255.0”
filesystems: “btrfs,ext2,ext3,ext4,squashfs,vfat”
lsbdistdescription: “Ubuntu 16.04.3 LTS”
ipaddress: “10.0.2.15”
system_uptime: “{\x22seconds\x22=>1426, \x22hours\x22=>0, \x22days\x22=>0, \x22uptime\x22=>\x220:23 hours\x22}”
uniqueid: “007f0101”
kernelversion: “4.4.0”
clientcert: slave01
clientversion: “3.8.5”
clientnoop: “false”
“_timestamp”: 2017-11-11 22:50:17.834136 +00:00
expiration: 2017-11-11 23:20:16.389141 +00:00
(END)

Slave02 tiedot:

ipaddress_lo: “127.0.0.1”
netmask_lo: “255.0.0.0”
mtu_lo: “65536”
selinux: “false”
lsbdistrelease: “16.04”
fqdn: slave02
sshdsakey: “AAAAB3NzaC1kc3MAAACBALKXFzIIVqGgOJJj6zO3OB+zsXewZCdMH2GdG3oNG4XYP2k9snAZwkzYHkc+lmp27OF/JQKXIwkQm345ukRQTWBo7Y9TIpEx478RvAlE9bUvFo563228QDxaEL4b9kgJ8QiQ/5yXSIuEOvmWoX2FYp9FuNa6xUoZ2aleUHWoDEx9AAAAFQCUhdwNvYv3j9Uupk9Y1PCCXwiavwAAAIEAmdwNoNYOvwvC5pOs/vE2WhxsFgmvJX9XDbvCxbpEKtoNKw8onvE6bhLs85z141U0CK/tyjubdjyM2BcuwG0t006+th4KUqMX6vUp/C0dX2XrQKyBK+VyEpi3GYqa44N2N+i5NHV9Uf68wKTIBWRuUCiN3UJ5pAvGWepqALVME9YAAACAdysYWyDIuyouuoY19ia0sEB2q9duJWA/nC1O9oqPncJkOpauDMqTYpNemZLtaJ5WEpc9+w4ae1+WHF097PvzuqN+foItwMh0pqC5HKG9j7u+tSdNV6dyLrIw+vkAkaLPI0sR58830cDEVQc2b9Qy1HhHOYAz3V7EfiOsXQh2Ac8=”
sshfp_dsa: |-
SSHFP 2 1 921641a4d3b771fc1890e7e16a2bac56d6dfa25a
SSHFP 2 2 f581792eee31c789616d9f87d137088618997bbde7bf66c55e6ff94682456a01
sshrsakey: “AAAAB3NzaC1yc2EAAAADAQABAAABAQDGfeFZhWNXtY8R+r2P3fpvg+91Y4OgRN7HtfqjLE+xr9XvPj+NyDWPc2XHV1GwZSZpTjZMJRdy6iztBWLrEvFEidCUlufryyAb4fQ30oz48nX3YIJuPLuXVkx+Hfo7H+AgYTtnfSfU8JUhAXx8Fb5Y8NQORrLhdH314VnWX83HYJqTPOL+QXVexwsP+FNr84jICKWTde9l7m8pGlLL/GL6+bZjq7tWN3pMtpwY7EDLLQKoR4gbGZ7U6mbkApMUf1D7bV9ekLBU+2jKo6a+wSaliJzoMXBF7qyyL606dbrFsEc1ku7V0+w0MS4YqCmN+7Q7s8GEWEJQ2bZPgD+SFFqj”
sshfp_rsa: |-
SSHFP 1 1 0226c504a6b4f4abe551bbf331342eab0d9a2752
SSHFP 1 2 6c76130cbfb9df02c7f6855591cdfb0a593a611e84dcb797bb60cababe53e153
sshecdsakey: “AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFFZ0Hm6/Zy9XIw1eCY+SCdccwI3M6hYsPcZ4bmvpGJ00WeZ0t8DIvthucGmW+je6XYkwcpPdLaZWTVdff2aUx0=”
sshfp_ecdsa: |-
SSHFP 3 1 b7a5ae71af5720677185f8c254706c0e41cd384d
SSHFP 3 2 c16aa8c157d49442e001cd7d875c046d0db6872479f361ff799563a6fd80933a
sshed25519key: “AAAAC3NzaC1lZDI1NTE5AAAAINaIxoVmJT1ezT8Tgye/pmXO2t6pRF71Z1SqNEJtgY++”
sshfp_ed25519: |-
SSHFP 4 1 33b0ce1b325e74145d86b183c14b9e8b8bea02b0
SSHFP 4 2 21dc94a734bcb09efd8c2c7799a46ed80d88d8963e3fd10eb1f3ac6712a7c714
virtual: kvm
is_virtual: “true”
architecture: amd64
hardwaremodel: x86_64
operatingsystem: Ubuntu
os: “{\x22name\x22=>\x22Ubuntu\x22, \x22family\x22=>\x22Debian\x22, \x22release\x22=>{\x22major\x22=>\x2216.04\x22, \x22full\x22=>\x2216.04\x22}, \x22lsb\x22=>{\x22distcodename\x22=>\x22xenial\x22, \x22distid\x22=>\x22Ubuntu\x22, \x22distdescription\x22=>\x22Ubuntu 16.04.3 LTS\x22, \x22distrelease\x22=>\x2216.04\x22, \x22majdistrelease\x22=>\x2216.04\x22}}”
uptime_days: “0”
puppetversion: “3.8.5”
augeasversion: “1.4.0”
memorysize: “992.28 MB”
memoryfree: “834.57 MB”
swapsize: “1024.00 MB”
swapfree: “1024.00 MB”
swapsize_mb: “1024.00”
swapfree_mb: “1024.00”
memorysize_mb: “992.28”
memoryfree_mb: “834.57”
timezone: UTC
uptime_hours: “0”
partitions: “{\x22sda1\x22=>{\x22uuid\x22=>\x22f9b9ba87-fe5d-410b-af6f-b3c90a9b88a1\x22, \x22size\x22=>\x22997376\x22, \x22mount\x22=>\x22/boot\x22, \x22filesystem\x22=>\x22ext2\x22}, \x22sda2\x22=>{\x22size\x22=>\x222\x22, \x22filesystem\x22=>\x22dos\x22}, \x22sda5\x22=>{\x22size\x22=>\x2282882560\x22, \x22filesystem\x22=>\x22LVM2_member\x22}}”
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: EF83FD31-A182-4AA4-9F40-F71C7D26B31D
type: Other
rubysitedir: /usr/local/lib/site_ruby/2.3.0
hardwareisa: x86_64
path: “/home/vagrant/bin:/home/vagrant/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin”
rubyversion: “2.3.1”
operatingsystemmajrelease: “16.04”
processors: “{\x22models\x22=>[\x22Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz\x22], \x22count\x22=>1, \x22physicalcount\x22=>1}”
processor0: “Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz”
processorcount: “1”
blockdevice_sda_size: “42949672960”
blockdevice_sda_vendor: ATA
blockdevice_sda_model: “VBOX HARDDISK”
blockdevices: sda
id: root
network_eth0: “10.0.2.0”
network_lo: “127.0.0.0”
uptime: “0:32 hours”
uptime_seconds: “1962”
kernelrelease: “4.4.0-87-generic”
facterversion: “2.4.6”
gid: root
rubyplatform: x86_64-linux-gnu
macaddress: “08:00:27:67:d9:b9”
osfamily: Debian
physicalprocessorcount: “1”
hostname: slave02
operatingsystemrelease: “16.04”
ps: “ps -ef”
lsbmajdistrelease: “16.04”
lsbdistcodename: xenial
netmask: “255.255.255.0”
filesystems: “btrfs,ext2,ext3,ext4,squashfs,vfat”
lsbdistdescription: “Ubuntu 16.04.3 LTS”
ipaddress: “10.0.2.15”
system_uptime: “{\x22seconds\x22=>1962, \x22hours\x22=>0, \x22days\x22=>0, \x22uptime\x22=>\x220:32 hours\x22}”
uniqueid: “007f0101”
kernelversion: “4.4.0”
clientcert: slave02
clientversion: “3.8.5”
clientnoop: “false”
“_timestamp”: 2017-11-11 22:59:47.125138 +00:00
expiration: 2017-11-11 23:29:46.544767 +00:00
(END)

c) OrjaSkripti: Tee skripti, joka muuttaa koneen Puppet-orjaksi tietylle masterille. Voit katsoa mallia Tatun tai Eemelin ratkaisuista.

Ohjeet scriptin luomiseen löysin Eemeli Aaltoselta (github user:poponappi) ja Tero Karviselta : https://github.com/poponappi/vagrant-puppet/blob/master/Vagrantfile ja http://terokarvinen.com/2015/install-ubuntu-virtual-machine-in-minutes-with-vagrant.

 

$tscript = <<TSCRIPT
apt update
apt install -y puppet
echo “tähän koneen ip osoite ja masterin hostname esim. master” |sudo tee –append /etc/hosts
echo “[agent]”|sudo tee –append /etc/puppet/puppet.conf
echo “server = tähän hostname”|sudo tee –append /etc/puppet/puppet.conf
puppet agent –enable
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 “slave01” do |slave01|
slave01.vm.hostname = “slave01”
end

LÄHTEET:

http://terokarvinen.com/2017/aikataulu-palvelinten-hallinta-ict4tn022-3-5-op-uusi-ops-loppusyksy-2017-p5 – Tero Karvinen, Palvelinten hallinta (Linux) -kurssi, tehtävät ja ohjeita.

http://terokarvinen.com/2017/multiple-virtual-computers-in-minutes-vagrant-multimachine – Tero Karvinen, kuinka luoda vagrantilla useita virtuaalisia koneita yhdellä komennolla.

http://terokarvinen.com/2012/puppetmaster-on-ubuntu-12-04 – Tero Karvinen, miten asentaa ja konfiguroida masteria ja orjaa. Puppetmaster + puppet käyttö, master-slave.

 

 

 

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

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

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

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

Facebook photo

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

Connecting to %s