Tehtävä 6 – VPS – asennus 

Oppitunnilla käytin aikaisemmin asentamani ubuntu MS Azure palvelussa. Päätin sitten kuitenkin käyttämään GitHub Education Pack etua, eli asentaa Digital Ocean VPS konetta. Olen rekisteröinyt Digital Ocean sivuilla rekisteröitymään. Kirjoitin Promo Codes kohtaan saamani GitHub Education Pack:ista Digital Ocean promo-tunnuksen. Tuli ilmoitus että tililläni nyt on 50€ käyttövaara mikä on voimassa 12 kuukauden ajan tästä päivästä lähtien.

Olen luonnut halvin mahdollinen Droplet, joka maksaa 5€ kk.

1 core / 512 MB Memory / 20 GB Disk / FRA1 – Ubuntu 16.04.1 x64

(Tärkeä: Ohjeet toimivat Ubuntu 14.04 versiossa, muissa paketeissa daemonien nimet ja syntaksi ovat vähän erillaiset.  )

Asensin monta eri konetta millä kokeilin eri vaihtoehtoja. Täällä toimii ns. minuuttiveloitus, eli palvelua laskutetaan vain käynissä olevien koneiden ajasta. Minun tapauksessa 5€/kk eli 0,007€/h. Samalla pystyn käyttämään vain 10 konetta. On mahdollisuus asettaa konelle Private networking, IPv6, Backups mitkä ovat lisäpalveluita ja maksavat lisää. Esimerkiksi varmuuskopionti nostaa koneen hinnan 20%.

Sitten muutamassa sekunnissa virtualikone oli valmis. Kokeilin kirjautua Console-ikkunan kautta.  Kirjauduin root tunnuksilla ja annoin salasanaksi sähköpostille saapunut salasanalla, minkä järjestelmä käski heti vaihtamaan.

Digital Ocean VPS pääsee käyttämään myös Console:n kautta, jos tarvitse tehdä joku pieni tehtävä tai muutos koneessa. Tämä on kätevä ominaisuus mikä monilla puuttuu. Esimerkiksi Microsoft Azure:ssa ja monilla muilla VPS palvelun tarjoajilla on mahdollista päästää koneisiin vain SSH-yhteyden kautta.

created

Laitoin konsoli ikkunan kiinni. Kirjauduin sisään SSH – Putty:lla

Laitoin palomuuri päälle:

ufw allow 22/tcp

ufw enable

Kysyttiin olenko varma? muuten SSH yhteys katkea.

Olen luonut uuden käyttäjän sekä lisännyt sen ryhmiin.

adduser alex
adduser alex sudo
adduser alex adm

Kirjauduin uudelleen uudella käyttäjällä ja lukitsin root tunnuksen

sudo usermod –lock root

Kokeilin kirjautua root:illa toisessa Putty ikkunassa:

login as: root
root@138.68.92.167’s password:
Access denied
root@138.68.92.167’s password:

ROOT on lukittu.

Asensin Apache

apt-get update

apt-get install apache2

avasin portti TCP 80 web palvelimelle

ufw allow 80/tcp

Minulla on ollut muutama halpa domain nimiä just testikäyttöä varten. Niin menin muutamaan DNS asetuksia GoDaddy.Com sivuille.

 

dns

Kokeilin muodostaa yhteyttä  ping:illä

ping

Ping toiminut. Sitten kokeilin domainin toiminta web-selaimessa. Avautui Apache:n sivu.

Yritin kirjautua Putty:lla käyttämällä domainia IP- osoitteen sijaan.

Kun olen asentanut LAMP voi lukea tehtävässä 5 “LAMP asennus”

Kun olen luonut kansion käytäjälle ja yritin käynistää apache2 pyydettiin vahvistusta. 

sudo a2enmod userdir
service apache2 restart

mkdir public_html

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart ‘apache2.service’.
Authenticating as: ,,, (alex)
Password:
==== AUTHENTICATION COMPLETE ===

sudo apt-get update
sudo apt-get install php5
sudo apt-get install phpmyadmin

Valitsin molemmat serverit käynistämään phpmyadmin

Tuli viesti haluanko päivittää SQL tietokannan:

Valitsin Yes ja annoin käyttäjätunnuksen ja salasanan

Sitten tarkistin tietokannan.
mysql -u root -p
mysql>
quit

Tehtävässä oli vielä yksi osio. Pitää laitaa monta DNS-nimeä samaan IP-osoitteeseen. Apache Name Based Virtual Hosting. Jatkan tästä nyt. Päätin ensin ottaa Snapshot, ettei tapahdu kitään korjamatonta. On vielä hyvää tilaisuus kokeila Snapshotin ottamista. Se maksaa 0,05 € per 1GB per kuukausi.

snapshot

Minun koneen snapshot on 1,7 GB kokoinen. Yhteensä se tekee muutamaa sentti per kuukausi. Snapshotista olen luonnut uuden koneen.

snapshot-kone

Sähköpostitse sain root tunnuksen salasanan, kun vaidoin sen kokeilin kirjautua minun käyttäjätunnuksella. Se onnistui ja käyttäjän juurikansiossa oli samat tiedostot kun vanhassa koneessa. Jatkan muokkataa vanhaa konetta.

 

 

https://jvaris.wordpress.com/2014/03/03/linux-server-task-5-apache-name-based-virtual-hosting/

 

Jatkan tehtävässä 6 asennetulle VPS:lle

Kokeilin asentaa WordPress oppitunnilla. Sain sen toimimaan, mutta luokassa asensin sen Labra-koneelle enkä ehtinyt ottaa kaikkea talteen. Nyt asennan sen VPS:lle mikä asensin edellisessä tehtävässä. Tämän jälkeen minulla on toimiva WordPress omalla VPS:lla ja mitä on arvokkampi kokemus sen asentamisesta.

Mitä on tehty edellisessa tehtävässä:

  • Asensin Digital Ocean VPS
  • Asensin sinne LAMP
  • Liitin sinne domain nimen:

Jatkan MYSQL-osiosta:

Luodaan taulu, luodan käyttäjä, annetaan käyttäjälle oikeus käyttämään taulua:(suosittelen käyttämään eri nimet ja salasana kun tässä. ainakin minä itse tein niin)

mysql -u root -p
CREATE DATABASE wordpress;
CREATE USER wordpressuser@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost;
FLUSH PRIVILEGES;
exit

Käyttäjän home-kansioon ladataan wordpress.org sivustolta viimeisen version  tar-tiedosto

wget http://wordpress.org/latest.tar.gz

Puretaan se ja kopioidan konfiguration tiedosto ja avatan se nano:lla

tar xzvf latest.tar.gz

 

Puretussa tiedostossa oli wordpress niminen kansio. Ladataan vielä plugin

sudo apt-get install php5-gd

 sudo apt-get install libssh2-php

(TÄRKEÄ: Tämä toimii Ubuntu 14.04:ssa muissa paketeissa plugin voi olla eriniminen.)

Siirrytään kansioon joka oli purettu latamasta tiedostosta

cd wordpress

Kopioidaan konfiguraatiot samplesta varsinaiseen konfiguraatio-tiedostoon ja muokataan ne nanolla

cp wp-config-sample.php wp-config.php 
nano wp-config.php

Kirjoitin näihin kentiin samat tiedot mitä laitoin luomani MySQL-tietokantaan:

(muista laita valitsemasi nimet ja salasana)

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

kopioidaan wordpress tiedostot web-palvelimen kansion /var/www/html/

sudo rsync -avP ~/wordpress/ /var/www/html/

cd /var/www/html/

Nyt pitää vielä antaa oikeuksia muokkamiseen

sudo chown -R user:www-data *

(user on sinun oma käyttäjän nimi mille oikeudet annetaan)

Luodaan kansio laadattaville materiaalille mitä halutaan julkaistaa sivuilla esim. kuvat, videot ym. ja muokkataan sen oikeudet.

mkdir /var/www/html/wp-content/uploads

sudo chown -R :www-data /var/www/html/wp-content/uploads

Nyt kun kokeilee korjoittaa selaimessa  koneen IP mille asennuksen tehdään tulee WordPress:in web-käyttöliittymä. Pitää vain kirjoittaa sivuston nimen, käyttäjänimen salasanan ja Asennus on valmis.

Minun oma asennus on  nähtävissä gomummi.com

wordpress-web-configuration

successful

Lähteet:

matto.guru

https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-on-ubuntu-14-04

http://terokarvinen.com/2016/aikataulu-linux-palvelimena-ict4tn003-22-ja-23-alkusyksy-2016

Tehtävä 5 – PXE & Preseed:

sudo setxkbmap fi

sudo apt-get update

sudo apt-get install arpwatch

sudo apt-get install wakeonlan

78:ac:c0:c1:08:56

xubuntu@xubuntu:~$ tail -F /var/log/syslog
Nov 28 13:43:25 xubuntu arpwatch: execl: /usr/lib/sendmail: No such file or directory
Nov 28 13:43:25 xubuntu arpwatch: reaper: pid 4061, exit status 1
Nov 28 13:43:25 xubuntu arpwatch: execl: /usr/lib/sendmail: No such file or directory
Nov 28 13:43:25 xubuntu arpwatch: reaper: pid 4062, exit status 1
Nov 28 13:45:13 xubuntu arpwatch: new station 172.28.172.137 78:ac:c0:c1:09:a6 eno1
Nov 28 13:45:13 xubuntu arpwatch: execl: /usr/lib/sendmail: No such file or directory
Nov 28 13:45:13 xubuntu arpwatch: reaper: pid 4065, exit status 1
Nov 28 13:45:34 xubuntu arpwatch: new station 172.28.9.61 2c:44:fd:85:91:90 eno1
Nov 28 13:45:34 xubuntu arpwatch: execl: /usr/lib/sendmail: No such file or directory
Nov 28 13:45:34 xubuntu arpwatch: reaper: pid 4066, exit status 1
Nov 28 13:48:18 xubuntu arpwatch: new station 169.254.74.204 78:ac:c0:c1:04:a5 eno1
Nov 28 13:48:18 xubuntu arpwatch: new station 172.28.172.242 78:ac:c0:c1:08:56 eno1
Nov 28 13:48:18 xubuntu arpwatch: execl: /usr/lib/sendmail: No such file or directory
Nov 28 13:48:18 xubuntu arpwatch: reaper: pid 4074, exit status 1
Nov 28 13:48:23 xubuntu arpwatch: execl: /usr/lib/sendmail: No such file or directory
Nov 28 13:48:23 xubuntu arpwatch: reaper: pid 4073, exit status 1

Kokeilin käynnistää:
xubuntu@xubuntu:~$ wakeonlan 78:ac:c0:c1:08:56
Sending magic packet to 255.255.255.255:9 with 78:ac:c0:c1:08:56
xubuntu@xubuntu:~$

Magic paketti lähti broadcast lähetyksenä

Muokan tiedosto:

sudo nano /etc/default/isc-dhcp-server

INTERFACES =”eno1″

Kopion talteen original tiedoston.

$ sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcp.conf.orig

Muokkaan tiedostoa:

sudoedit /etc/dhcp/dhcpd.conf
ddns-update-style none;

#option domain-name “example.org”;
#option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;
log-facility local7;

authoritative; # BE CAREFUL

next-server 172.28.172.131; # TFTP server ip address
filename “pxelinux.0”; # name of bootloader image

subnet 172.28.0.0 netmask 255.255.0.0 {
host alex {
hardware ethernet 78:ac:c0:c1:08:56;
fixed-address 172.28.11.11;
option subnet-mask 255.255.0.0;
option routers 172.28.1.254;
option domain-name-servers 8.8.8.8, 172.28.1.67, 172.28.1.69;
option domain-name “tielab.haaga-helia.fi”;
}
}

$ service isc-dhcp-server restart

$ wakeonlan 78:ac:c0:c1:08:56

Orjakoneella ruduulle tuli DHCP:n serverini määrämä IP-osoite: 172.28.11.11

Latasin tästä netboot tarballin:

http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/installer-amd64/current/images/netboot/netboot.tar.gz

Purkasin sen ja kopioin /var/lib/tftpboot/ kansioon.

$ sudo cp -r * /var/lib/tftpboot/

Muokkasin tiedosto:

sudoedit /var/lib/tftpboot/ubuntu-installer/amd64/boot-screens/syslinux.cfg

# D-I config version 2.0
# search path for the c32 support libraries (libcom32, libutil etc.)
path ubuntu-installer/amd64/boot-screens/
include ubuntu-installer/amd64/boot-screens/menu.cfg
default ubuntu-installer/amd64/boot-screens/vesamenu.c32

label alex
kernel ubuntu-installer/amd64/linux
append initrd=ubuntu-installer/amd64/initrd.gz auto=true auto url=tftp://172.28.172.131/ubuntu-installer/amd64/proseed.cfg locale=en_US.UTF-8$

prompt 1
timeout 5
default alex

Sitten lähetin taikapaketin:

wakeonlan 78:ac:c0:c1:08:56

Orjakoneella alkoi asennus, mutta se pysähtynyt kohtaan:

Download debconf preconfiguration file

Yritän korjata se vielä.

Lähteet:

http://terokarvinen.com/2016/aikataulu-palvelinten-hallinta-ict4tn022-1-5-op-uusi-ops-loppusyksy-2016#comment-22004

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

Tehtäväksi anto:

Tee tavallisia työpöydän asetuksia puppet moduleiksi. Laita ne versionhallintaan. Konfiguroi tyhjä kone, vaikkapa juuri bootattu live-USB, lataamalla puppet-asetukset versionhallinnasta.

Teen tehtävän kotiläppärillä USB Live Xubuntu 16.04 LTS (64-bit)

Aloitan Firefox asetuksista. Firefox joutuu käynnistämään ja sulkemaan, niin päätin kirjoittaa kommentit tänne Chrome:n kautta. Asennan Google Chrome.

Lataan 64-bit Chrome
$wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
Asennan ladatun paketin pakottamalla asentamaan riippuvuudet.
$sudo dpkg -i --force-depends google-chrome-stable_current_amd64.deb

Tuli virheilmoitus:

dpkg: google-chrome-stable: dependency problems, but configuring anyway as you requested:
google-chrome-stable depends on libappindicator1; however:
Package libappindicator1 is not installed.

Pakotan silti asentamaan:

$sudo apt-get install -f

Asennus valmis.

Muokan Firefox konfiguraatiota:

$sudoedit /etc/firefox/syspref.js

Lisän sinne rivi:

lockPref(‘browser.startup.homepage’, “http://gomummi.com”);

Kun käynnistän Firefox se aukea just täällä sivulla.

Sitten siirryn varsinaiseen tehtävän

Minun puppet module:

user@hp:~$ cd /etc/puppet/modules

user@hp:/etc/puppet/modules$ ls

user@hp:/etc/puppet/modules$ sudo mkdir firefox

user@hp:/etc/puppet/modules$ cd firefox

user@hp:/etc/puppet/modules/firefox$ sudo mkdir manifests

user@hp:/etc/puppet/modules/firefox$ cd manifests/

user:/etc/puppet/modules/firefox/manifests$ sudoedit init.pp

 

 

 

Teen kopion Firefox:in konfiguration tiedostoa moduliin ja muokkan sen:

$ sudo cp -f /etc/firefox/syspref.js /etc/puppet/modules/firefox/syspref.js

$ sudoedit /etc/puppet/modules/firefox/syspref.js

 

 

 

 

 

$ sudo puppet apply -e ‘class{firefox:}’

Error: Could not find template ‘firefox/syspref.js’ at /etc/puppet/modules/firefox/manifests/init.pp:3 on node hp.home

Error: Could not find template ‘firefox/syspref.js’ at /etc/puppet/modules/firefox/manifests/init.pp:3 on node hp.home

Verheilmoituksesta sain seville että puppet ei löydä template:ia. Luon oma templates kansio ja vien sinne syspref.js tiedoston.

user@hp:/etc/puppet/modules/firefox$ ls

manifests syspref.js

user@hp:/etc/puppet/modules/firefox$ sudo mkdir templates

user@hp:/etc/puppet/modules/firefox$ sudo cp -f syspref.js templates/syspref.js

user@hp:/etc/puppet/modules/firefox/templates$ sudo puppet apply -e ‘class{firefox:}’

Notice: Compiled catalog for hp.home in environment production in 0.26 seconds

Notice: /Stage[main]/Firefox/File[/etc/firefox/syspref.js]/content: content changed ‘{md5}94904e3bebbde58b343fddb4d9be6acc’ to ‘{md5}ae7b6316698c28c8df62997e9824b98b’

Notice: Finished catalog run in 0.09 seconds

Nyt voin poistaa vanhan syspref.js tiedoston väärästä paikasta:

user@hp:/etc/puppet/modules/firefox/templates$ cd ..

user@hp:/etc/puppet/modules/firefox$ ls

manifests syspref.js templates

user@hp:/etc/puppet/modules/firefox$ sudo rm -rf syspref.js

user@hp:/etc/puppet/modules/firefox$ ls

manifests templates

user@hp:/etc/puppet/modules/firefox$ sudo puppet apply -e ‘class{firefox:}’

Notice: Compiled catalog for hp.home in environment production in 0.24 seconds

Notice: Finished catalog run in 0.04 seconds

user@hp:/etc/puppet/modules/firefox$

Module toimii moitettomasti.

Asennan Git ja laitan sinne käyttäjän tiedot ja aika viive 1 tunti:

$ git config –global user.email “xelsinki@hotmail.com”

$ git config –global user.name “Aleksandr Pantsesnyi”

$ git config –global credential.helper “cache –timeout=3600”

Menin GitHub.com:iin, kirjauduin omaan tiliin ja loin uuden repositorin firefox. Painamalla Clone Repository sain URL:iin. https://github.com/xelsinki/firefox.git . Luon kotihakemistoon kansion git ja kloonan sinne repository GitHub.com:ista

user@hp:/etc/puppet/modules/firefox$ cd ~

user@hp:~$ mkdir git

user@hp:~$ cd git

user@hp:~/git$ git clone https://github.com/xelsinki/firefox.git

Cloning into ‘firefox’…

remote: Counting objects: 3, done.

remote: Compressing objects: 100% (2/2), done.

remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0

Unpacking objects: 100% (3/3), done.

Checking connectivity… done.

Kopioin modulini git repositoriin:

user@hp:~/git/firefox$ cp -r /etc/puppet/modules/firefox .

Huomasin että kopioin koko kansion. File Managerissa copy/paste:malla laitoin manifests ja templates kansiot oikean paikaan ja poistin tyhjän kansion. Nyt se näyttää tällaiselta.

user@hp:~/git$ tree

.

└── firefox

├── LICENSE

├── manifests

│   └── init.pp

└── templates

└── syspref.js

3 directories, 3 files

Kansiosta firefox lisään muutoksia repositoriin ja kirjoitan kommentin:

user@hp:~/git/firefox$ git add .

user@hp:~/git/firefox$ git commit

[master 07e5dd5] This is firefox puppet module for configurating a start page in firefox browser

2 files changed, 12 insertions(+)

create mode 100644 manifests/init.pp

create mode 100644 templates/syspref.js

user@hp:~/git/firefox$

Tarkistan git:

user@hp:~/git/firefox$ git log

teh-3

Lähteet:

Opettajamme ohjeet: http://terokarvinen.com/2016/publish-your-project-with-github

Git – the simple guide: http://rogerdudler.github.io/git-guide/

Markdown basic syntax: https://guides.github.com/features/mastering-markdown/#syntax

 

 

 

Tehtäväksi anto:

Säädä orjia verkon yli puppetmasterin avulla (master-slave pull arkkitehtuuri. Jos et pääse käyttämään kahta konetta, voit asentaa herran ja orjan samalle koneelle)

Vapaaehtoinen bonus: tee moduuli, jossa käytät muuttujia muotissa (facter variables, template).

Vapaaehtoinen kilpailu: kuka ohjaa suurinta määrää orjia puppetilla?

Olen päättynyt tehdä tämän tehtävän VitualBox VM:llä. Viime tunnilla opettajamme suositteli käyttämään Xubuntu 16.04 (Xenial) distroa. Latasin sen .ISO:na ja asensin VirtualBox koneseen.

VirtualBox:illa oli pieni ongelma. Se ei antanut asentaa muuta, kun 32-bittisia systeemiä. Piti mennä BIOS:seen ja ottaa käyttöön ”Virtualsization Support”. Sen jälkeen VirtualBox antoi asentaa 64-bit Xubuntu 16.04.1 LTS. Asennettua otin Snapshot puhtaalta koneelta, niin seuraavan tehtävän voi tehdä asentamatta koko järjestelmää uudestaan.

Päivitin paketteja:

$sudo apt-get update

$sudo apt-get install puppet -y

Tuli virheilmoitus. Suosituksessa oli taas päivittää paketteja.

$sudo apt-get update

Nyt ei tullut mitään virhettä, niin käynnistin Puppet asennuksen komennolla:

$sudo apt-get install puppet -y

Puppet vaatii kaikkien juurikansioiden käyttöoikeuksia ja auki olevaa porttia 8140. Pitää muuttaa DNS asetukset tai voi muokata /etc/hosts tiedoston sisältöä.

Käytin opettajamme ohjeita koneen nimen vaihtoon Ubuntu 16.04 LTS:

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

$ sudo hostnamectl set-hostname master
$ sudoedit /etc/hosts
$ sudo service avahi-daemon restart

/etc/hosts tiedostossa korjasin nimet toisella rivillä

hosts

Kokeilin ottaa yhteyttä pingillä:

$ping master.local

Ping toimii. Käyn katsomassa nykyiset sertifikaatit

$cd /var/lib/puppet/ssl/  && ls

Permission denied. Otan sudo käyttäjäoikeudet että ei tarvitse joka kerta kirjoittaa sudo ennen komentoa.

$sudo -s

Siitä edellinen komento näyttää puppetin ssl tietoja. Löysin public_keys kansiossa xubuntu.hom.pem nimistä avainta. Ilmeisesti tiedosto oli generoitu puppetin asennusvaiheessa, kun siinä on koneen vanha nimi xubuntu. Avaimia pitää generoida uudestaan.

$service puppetmaster stop

$rm -r /var/lib/puppet/ssl

$sudoedit /etc/puppet/puppet.conf

Muokkasin sen tämän näköiseksi. Koska käytän samaa konetta sekä masterina että slave:ina lisään vielä [agent] kenttän

puppet-conf

Lisäksi slave koneeseen olisi tarkoitus, mutta minä luon tiedoston tähän:

$sudoedit /etc/default/puppet

START=yes

$service puppet restart

Kirjoitan manifest ja module ensin.

$cd /etc/puppet

$mkdir  -p /manifests  modules/aleksandrit/manifests/

$sudoedit manifests/site.pp

include aleksandrit

$sudoedit /etc/puppet/modules/aleksandrit/manifests/init.pp

init.pp.PNG

komennolla tree pääsen katsomaan tuloksen.

tree.PNG

Seuraavaksi pitää hoittaa sertifikaatin ja tässä tuli ylitsepääsemätön tila.

$puppet cert list -all

cert

Yritin allekirjoittaa sertifikaatin monella eri tavalla.

$ puppet cert –sign master.local

ja jopa näin:

$ puppet cert –sign -all

cert-all

Sitten kävin katsomassa lokeja.

$cat /var/log/puppet/masterhttp.log

Kun käynistän manifestin näin:

$puppet apply -e ‘class {“aleksandrit”:}’

niin se suorittaa sen, eli virhe ei ole tässä. (poistin tiedoston /tmp/Mastertest)

master.home onnistuin hyväksymään, mutta se ei auta kunn asetuksissa on master.local, sitten vielä master.home ei näy jopa pingillä niin siitä ei ole apua.

korjaus.PNG

Kokeilin taas poista koko /var/lib/puppet/ssl ja hakea sertifikaatia master.local…. Ei auta. 🙁

Kokeilen tulla huomenna kouluun aikaisin aamulla ja tehdä kahdella koneella.  Oppitunnilla meillä oli ongelmia just tässä kohdassa, siellä allekirjoitimme sertifikaatin käyttämällä eri FQDN:ää kun master.local. Kotikoneella en saa tehtyä näin.

Heräsin aamulla klo 5.30 täynnä toivoa että saan sen tehtävän valmiksi ennen tunnin alkua klo 8.15

Käynistin kaksi läppäriä tikuilta Xubuntu 16.04.01 LTS. Laitoin molemmat samaan WiFi verkkoon. Tein samat asennukset kun ylhällä mainitsin, paitsi se mitä oli slave koneeseen asennettava asensin slave:ille, mitä master tuli master:ille.

Edistyin yksi vaihe lisä mutta ei kuitenkaan loppuun asti. Sian sertifikaatin allekirjoitettua hyväksymällä sen:

$sudo puppet cert –sign slave.pp.htv.fi

cert2

screenshot_2016-11-09_05-09-20

Tunnilla sain selville missä oli virhe. Seuraavana päivänä käynnistin h5005 Labran vierekkäiset tietokoneet USB-Live Xubuntu 16.04 LTS:llä ja aloitin alusta asti uudestaan. Jossan sertifikaatin hyväksyntä vaiheessa taas jäin jumiin.

Puppetmaster tehtävän manifesti:

master$sudoedit /etc/puppet/modules/aleksandrit/manifests/init.pp

class aleksandrit {
file {‘/tmp/mastertest’:
content => “PLEASE VISIT: http://gomummi.com \n”
}
}

Päätin käyttää tree daemonia selvitäkseen mitä on /var/lib/puppet/ssl kansiossa:ssa

tree

Unohdin käynnistää puppetmaster master koneella, siinä oli se virhe…

Käynistin slave koneella puppet agent ja sertifikaatin pyyntö saapunut masterille

slave$sudo puppet agent –enable

tree2

käynistin uudelleen puppet slave koneella ennen sertifikaatin hyväksymistä ja sen jälkeen.

result-new.png

Kansioon /tmp ilmestyi mastertest tiedosto.

MISSION SUCCESSFULLY COMPLETED!!!

Tehtäväksi anto: Tee moduuli, joka käyttää vähintään kahta erityyppistä resurssia (esim package ja file).

Bonus: tee moduuli jollekin käyttämällesi ohjelmalle.

Linkki palautetaan Moodleen, lisäksi kannattaa laittaa linkki kommentiksi tälle sivulle.

Aloitan tekemään tehtävää luomalla Digital Ocean Dropletin Ubuntu 14.04.5  millä tulen tarkistamaan Puppet moduuleita. Oikean syntaksin tiedostoja löytyy kuitenkin tästä:  https://github.com/xelsinki/puppet Otan yhteyttä koneeseen Putty:lla.

Kirjauduin koneeseen. Jatkan vielä root tunnuksilla asennukset ja Puppet moduuleiden tarkistuksen. (Jos käyttää muu, kun root tunnuksen jotkut komennot pitää aloittaa sudo:lla) Alkuun päivitän paketteja komennolla:

apt-get update

Asennan puppet komennolla:

apt-get install puppet

Asennuksen lopussa tuli ilmoitus:

* Starting puppet agent [ OK ]

Asennus on valmis, puppet on käynnistetty. Teen tiedoston tekstillä Hello Tero! komennolla:

puppet apply -e ‘file { “/tmp/helloPuppet”: content => “Hello Tero!\n” }’

Tuli virheilmoitus joka koskee FQDN ja ilmoitus että tiedosto on luotu.

 

wirhe

Googlamalla sain selville, että puppet vaati kokonaista domain nimeä. Tämä ei mitenkään vaikuta tehtävän etenemiseen, niin päätin jatkaa. Tarkistan kuitenkin samaa VirtualBox VM:llä.

Toisella koneella se toimii. Sama komento VirtualBox:iin asennetulla Xubuntulla antaa seuraavan vastauksen:

FQDN.PNG

Kävin tarkistamassa sitä komennolla:

cat /tmp/helloPuppet

Ruudulle ilmestyi teksti Hello Tero! ja rivi vaihtunut uuteen.

Muokataan vähän. Poistan /n rivinvaihto:

puppet apply -e ‘file { “/tmp/helloPuppet”: content => “Hello Tero!” }’

Muokkaus.PNG

Content changed. Ja uusi tarkistussumma. Rivi ei ole vaihdettu.

Siirrytään moduuleihin. Luon kansioon /etc/puppet/modules/ uusi kansio ja tiedosto init.pp

mkdir /etc/puppet/modules/puppetka/manifests/

cd /etc/puppet/modules/puppetka/manifests/

nano init.pp

Ja kirjoitan tiedostoon:

class puppetka {
        file { ‘/tmp/helloModule’:
            content => “This is a PUPPET!!!\n”
        }
}

Tallensin tiedoston ja käynnistän sen komennolla:

puppet apply  -e ‘class {“puppetka”:}’

Tuli ilmoitus, että tiedosto on luotu. Tarkistin sen cat:illä

valmis-1

Manifestit luodaan tiettyyn kansioon /etc/puppet/modules/class/manifests/init.pp , jossa class on manifestin nimi.

Luettua yhtä venäjänkielistä sivua sain selville, että pystyy vielä tekemään näin. Luomaan manifest suoraan tiedostoon.

nano /tmp/helloworld.pp

file { '/tmp/helloworld':
  ensure => present,
  content => 'Hello, world!',
  mode => 0644,
  owner => 'alex',
  }

Ja käynnistää sen komennolla:

puppet apply helloworld.pp

rus

Tämä oli taas tehty Virtual Box VM:llä. Ei tule ilmoitusta FQDN:stä vaan näyttää ubuntu.pp.htv.fi eli näyttää koko domainnimen: ubuntu.{minun kotiNetti – kaapeli DNA} Eli tuo virheilmoitus FQDN:stä koskee DigitalOcean VPS:än nimipalvelua.

Jatkan Digital Ocean VPS:llä.. Teen apache2 asennus-manifestin.

manifest/apache.pp sisältää:

apache-pp

Tässä näy miten olen luonnut sen ja käynnistänyt.

Module.PNG

Tuli virheilmoitus. Kokeilin mennä web-selaimella VPS:n ip-osoitteseen. Apache oli päällä. Ilmeisesti tätä parempi tehdä just EI-Venäläisen tapaan mukaan. Mutta kokeilen sen huomenna aamulla.

Sain sitten selville, että Tero opettaa meidät tekemään “crossdistributiivisesti” eli niin että asiat toimivat käyttöjärjestelmästä riippumatta. Ja niin että kaikki manifestit ovat omassa paikassa eikä tarvitse joka kertaa mainita polkua manifestiin.

Aamusta asensin VMwaren Workstation 12 (Haaga-Helia:n opiskelijana sain ilmaisen lisenssin vuodeksi), asensin sinne Xubuntu 14.04.3 ja otin heti snapshotin. Jatkossa on helpompi tarvittaessa aloittaa ihan puhtaalta pöydältä.  Sitten luin muutamaa julkaisua Puppetista ja vilkaisin dokumentaatiota.

Resurssit: https://docs.puppet.com/puppet/3/reference/lang_resources.html

Syntax: https://docs.puppet.com/puppet/3/reference/lang_resources.html#syntax

Resurssien tyypit: https://docs.puppet.com/puppet/latest/reference/type.html

Package atribuutit: https://docs.puppet.com/puppet/latest/reference/type.html#package-attributes

Riippuvuudet: https://docs.puppet.com/puppet/3/reference/lang_relationships.html

Pysyn olemaan kopioiva apina, ellei aloitan lukea kunnon dokumentaatiota. Siinä selitetään jokaisen polun ja pilkun.

Minun uusi puppet manifest sshd:

class sshd {

    package { ‘openssh-server’:
            ensure => “installed”,
       }

    file { ‘/etc/ssh/sshd_config’:
        content => template(“sshd/sshd_config”),
        require => Package[“openssh-server”],
        notify => Service[“ssh”],
    }

    service { ‘ssh’:
            ensure    => running,
            enable    => true,
            
            require => Package[“openssh-server”],
        hasstatus => ‘false’,
        status =>”/etc/init.d/ssh status|grep running”,
        
    }
}

Heti se ei toiminut, vaan vaatinut että luodaan templates/sshd_config   kun tähän koodissa väitetään. Sitten koodi alkanut toimimaan ilman virheilmoitusta. Kun laitoin koodi-tiedoston GitHub:iin https://github.com/xelsinki/puppet/blob/master/init.pp , niin väreistä huomasin puutuvat lainausmerkit yhdestä paikasta. Korjasin koodin ja ajanut sen uudelleen.

This website for my publications and posts. I’m not trying to sell anything to anyone. I’m not saying that I’m always right, and I do not promise forever keep and not to change my publications. So enjoy reading. And I’ll be glad if someone will like it.

You can copy and quote freely and better if often. Copyleft @ GoMummi.Com

Linux palvelimena

Tehtävä 7 – WordPress – asennus VPS:lle

Jatkan tehtävässä 6 asennetulle VPS:lle

Kokeilin asentaa WordPress oppitunnilla. Sain sen toimimaan, mutta luokassa asensin sen Labra-koneelle enkä ehtinyt ottaa kaikkea talteen. Nyt asennan sen VPS:lle mikä asensin edellisessä tehtävässä. Tämän jälkeen minulla on toimiva WordPress omalla VPS:lla ja mitä on arvokkampi kokemus sen asentamisesta.

Mitä on tehty edellisessa tehtävässä:

  • Asensin Digital Ocean VPS
  • Asensin sinne LAMP
  • Liitin sinne domain nimen

Jatkan MYSQL-osiosta:

Luodaan taulu, luodan käyttäjä, annetaan käyttäjälle oikeus käyttämään taulua:

(suosittelen käyttämään eri nimet ja salasana kun tässä. ainakin cheap nfl jerseys minä itse tein niin)

mysql -u root -p
CREATE DATABASE wordpress;
CREATE USER wordpressuser@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost;
FLUSH PRIVILEGES;
exit

cd ~

Ladataan wordpressin sivulta viimeinen tar ball:
wget http://wordpress.org/latest.tar.gz

Puretaan se ja kopioidan konfiguration tiedosto ja avatan se nano:lla
tar xzvf latest.tar.gz
sudo apt-get install php-gd
#sudo apt-get install libssh2-php - minulla eriniminen daemon
cd ~/wordpress
cp wp-config-sample.php wp-config.php nano wp-config.php

Kirjoitin näihin kentiin se mitä kirjoitetiin luomani tietokantaan:

(muista laita valitsemasi nimet ja salasana)

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

sudo rsync -avP ~/wordpress/ /var/www/html/

cd /var/www/html/

(user on sinun oma käyttäjän nimi)

sudo chown -R user:www-data *

vaihtoehtoinen tapa:
mkdir /var/www/html/wp-content/uploads sudo chown -R :www-data /var/www/html/wp-content/uploads