h7 Oma moduli

Tehtävän lähde: http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/

Mumble palvelin yhdellä salt tilalla.

Mumble is a free, open source, low latency, high quality voice chat application.

Vaihe 1. Testataan ensin ohjelmaa.

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y mumble-server
sudo apt-get install -y mumble

Käydään läpi dokumentaatiota: https://wiki.mumble.info/wiki/Main_Page

Oletus asetukset löytyy: /etc/mumble-server.ini
En tee niihin vielä muutoksia, testataan palvelimen ajoa oletusasetuksilla.

Tällä komennolla VoiP -palvelin nousee pystyyn ja samalla käydään muutama asetus läpi.

sudo dpkg-reconfigure mumble-server

Komennolla syntyy myös:
/var/log/mumble-server
/var/lib/mumble-server
/var/run/mumble-server

This image has an empty alt attribute; its file name is image-50.png
Superuser salasanaa ei tarvitse, mikäli et halua jakaa oikeuksia käyttäjille. Superuser salasanan voi myös vaihtaa käynnistämättä palvelinta uudelleen.
Palvelin on pystyssä

Testataan mumble clientilla.

Virtual Machine:

Toimii paikallisesti, mutta ei näy internettiin

Vaihe 2. Virtual Box kiinteä julkinen IP-osoite

Lueskeltuani hetken foorumeita ja lopulta päädyttyäni lukemaan Virtual Boxin manuaalia. Totesin parhaaksi ratkaisuksi tehdä port foward ratkaisun NAT:lla.

Eli avataan Host koneelta portti, joka ohjataan virtualboxin VM:n porttiin.

En saanut NAT / Port Foward menetelmällä palvelinta näkymään internettiin.

Päädyin bridged adapter ratkaisuun. Sen saa kytkettyä virtual box managerista, koneen asetuksista.

Seuraavaksi murmurille reitti nettiin.

Päivitys: HUOM. AVAA PORTTEJA REITITTIMEESI OMALLA VASTUULLA
ja suojaa VM:si palomuurilla mikäli teet sen näkyväksi internetille.

Reitittimen asetukset.
Murmur käyttää oletuksena porttia 64738

VM:n Host koneella näyttää tältä. Palvelin näkyy nyt julkisen IP:n takana (myös paikallisesti).

Host:

Mikäli toisella laitteella haluaa liittyä samasta verkosta, pitää käyttää sisäverkon IP-osoitetta, 192. alkuinen tässä tapauksessa.

Jotta voidaan olla varmoja yhteyden toimivuudesta, testaan liittyä palvelimelle toisesta verkosta.

Testasin yhteyttä kannettavalla, jolle otin verkkoyhteyden puhelimen hotspot toiminnolla. Puhelin pois wifi:stä tietty.

Kannettavalta:

Palvelimen saa näkyviin julkiseen listaan mikäli teet Sertifikaatin

Kannettavalta:

Lisäämällä hostin julkisen IP:n suosikkeihin, palvelin löytyy ja yhteys toimii.

Vaihe 3. Murmur asetukset

/etc/mumble-server.ini

Asetuksia on useita ja ne ovat hyvin kommentoitu, suosittelen käymään läpi. Lisää tietoa Mumblen sivuilta

Olisi kiva saada palvelimelle kanavia lisää, mutta en löydä dokumentoinnista niistä erityisempää mainintaa. Testaan tehdä ne murmur superuserilla.

sudo dpkg-reconfigure mumble-server.service

Asetin salasanan.

Kirjautumalla SuperUser tunnuksella tulee salasana kenttä näkyviin
Kanavia saa lisätty hiiren oikealla -> Add
Kanava -> Edit pääsee mm. tekemään oikeudet palvelimelle rekisteröidyille käyttäjille

Vaihe 4. Tehdään tila salt-masterilla ja testataan jakoa

Tein minion koneen vagrantilla. Ubuntu 14.04

Yhdistetty Masteriin
Test OK
pkg.installed tila onnistuu

Katsotaan mitä tiedostoja on muuttunut kun testasimme Mumblea.

cd /etc/
sudo cp mumble-server.ini /srv/salt/mumble-server/
sudo cp default/mumble-server /srv/salt/mumble-server/

Testataan

File.managed toimii

Katsotaan onko palvelin käynnistynyt

Näyttää olevan.

Tehdään vielä tila, joka valvoo että palvelin on pystyssä

Vaihe 5. Testataan toimiiko palvelin

Palvelimen asetukset eivät tulleet näistä tiedostoista kuten arvelinkin. Ne tallentuvat tietokantaan luultavasti? Testataan sen kopioimista.

Toimii!

Eli nyt on salt tila joka asentaa mumble-palvelimen asetuksineen. Laittamalla virtuaalikoneen “bridged adapter” tilaan, sekä tekemällä reitittimeen asetukset virtuaalikoneen mumble-palvelinta varten, saa siitä näkyvän internettiin.

ADDITIONAL INFORMATION

This document can be copied or edited following GNU General Public License (version 2 or newer). http://www.gnu.org/licenses/gpl.html

Lähteet:
https://www.virtualbox.org/manual/
https://wiki.mumble.info/wiki/Main_Page
https://whatismyipaddress.com/
https://docs.saltstack.com/en/latest/
http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/

h6

Tehtävän lähde: http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/#h6

a) Asenna jokin toinen Linux-levityspaketti orjaksi Saltille. CentOS on hyvä vaihtoehto. Voit esimerkiksi asentaa CentOS:n VirtualBoxiin ja tehdä koneiden välille virtuaaliverkon. Jos käytät Vagrantia, ‘cent.vm.box = “centos/7″‘ on kätevä.

Laiska kun olen… Aloitin tutustumalla Vagrant -ohjelmaan. En tiedä ohjelmasta paljoakaan, mutta heidän etusivulla päämainoslauseena on juuri haluamani vastaus “Development Environments Made Easy”. Jatkan ohjelmaan tutustumista sivuilla ja käyn läpi “Getting started” dokumentaation.

Vagrant toimii cmd:n kautta Windowsilla.

Jes! Se löytääkin minulle tutun virtualboxin automaattisesti

Nyt olen tutustunut hiukan ohjelmaan. Aloitetaan tehtävä.

Hain täältä sopivan koneen tähä tarkoitukseen: https://app.vagrantup.com/boxes/search?utf8=%E2%9C%93&sort=downloads&provider=&q=centos7

Tein centos7 nimisen kansion ja ajoin sinne cmd:llä

vagrant init generic/centos7
katsoin vielä vagrantfile:stä tuliko nimi oikein
“hyrsk hyrsk”, nyt voin koneen asentelu klikkailun ajan tilalla tehdä kahvit
Kone ilmestyy “vagrant up” komennon jälkeen automaattisesti virtualboxiin

Worth it.

Edited: Kun asensin Vagrantin Windowsille, virtualbox ei suostunut enään käynnistymään.
Käynnistin koneen uudestaan eikä toiminut silläkään, joten ajoin repair toiminnon virtualboxiin hakemalla “Add or remove programs” -> “virtualbox” -> “modify” -> “repair”. Tämän jälkeen virtualbox toimi.

Seuraavaksi liitän centos7:n salt masteriin tuttuun tapaan.

b) Kerää grains.items avulla tiedot orjista, joissa on eri levityspaketti.

master$ sudo salt 'centos7.localdomain' grains.items

c) Tee päivän viesti (motd), jossa koneen tyyppi tulee grains osfinger -muuttujasta. Kokeile, että saat eri levityspaketeilla eri tuloksen. Voit hyödyntää aiemmin tekemääsi motd:ia.

Tässä aijemmin tekemäni.

Muokkasin muutamaa grainsia.

Ajoin tilan kahdesti ja ihmettelin näkymää:

Ilmeisesti tilan ajo onnistui. Mutta jäin ihmettelemään uutta näkymää, mikä johtunee eri käyttöjärjestelmästä
Edited: Johtuukin saltin eri versioista

En vielä tutkinut miten saan SSH:n vagrantilla koneen asennuksen yhteydessä reitteineen koneelle. Joten kirjaudun paikallisesti. Vagrantfile:ssa taisi olla default SSH asetukset olemassa, mutta kommentoitu # merkillä pois ja en ottanut niitä vielä tässä asennuksessa käyttöön.

Testasin paikallisesti.

‘OS’ grainsin voikin tämän perusteella poistaa motd tiedostosta
Lisäksi grain locale_info antaa ruman tulosteen

d) Tee tila, joka tekee RedHat-perheellä (esim. CentOS) tiedoston /tmp/redhat ja Debian-perheellä (esim Ubuntu) tiedoston /tmp/debian. Voit käyttää mitä vain eri perheiden levityspaketteja.

Tein tilan soveltaen ohjetta täältä: http://terokarvinen.com/2018/configure-windows-and-linux-with-salt-jinja-if-else-and-grains

tmp4os.sls
tmp4os.txt
Tila ensimmäisen kerran ajettuna. Ajan vielä toiste. Vaikuttaa saltin mukaan toimivan.
Onnistui

d) Tee tila, joka asentaa ja konfiguroi Apachen kahteen erilaiseen järjestelmään, esim. CentOS ja Ubuntu. Paketin nimi on CentOS:ssa “httpd”. Käytä Salt-koodin generointia muoteilla.

master$ sudo apt-get install apache2
Niinjoo, nginx on asennettuna ja päällä myös
master$ sudo systemctl disable nginx.service  #toimiskohan ihan vaan näin
master$ sudo systemctl enable apache2@
Vaikuttas toimivan, varmaan voisi tilaan tehdä varmistuksen että nginx on poissa päältä kun apachea laitetaan pystyyn
kopio edellisestä tehtävästä, vaihdettu nimet ja nyt tillalla asennetaan

Testataan ensin tätä. Ajan tilan kahdesti.

Toimii

To do:
sulje nginx prosessi samalla tilalla,
muokkaa index.html ja/tai asetuksia
käynnistä apache
poista apache molemmilta koneilta ja testaa

h5

Tehtävän lähde http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/

a)Hello templates! Tee muotilla esimerkkitiedosto, jossa on muuttujien (esim grains) arvoja.

Tein heimaailma.txt ja heimaailma.sls

master$ sudoedit heimaailma.txt
master$ sudoedit heimaailma.sls

Testataan

tila ajettu kahdesti
tältä näyttää minionilla

Seuraavaksi etsin muita hyödyllisiä grains

master$ sudo salt saltorja grains.items

Valitsin seuraavat:
os
os_family
lsb_distrib_release
ipv4
cpu_model
cpuarch
biosversion
biosreleasedate
locale_info
saltversion

Minionilla
Masterilla ensimmmäistä kertaa ajettuna

b)Message of the Day. Sisäänkirjautuessa näytetään päivän viesti. Lisää päivän viestiin tietoa ympäristöstä käyttäen muotteja. Sopiva tiedosto on /etc/motd.

Käytän edellisessä tehtävässä tekemiäni tiedostoja.
Tein tiedoston “motd” johon laitoin “heimaailma.txt” sisällön.

Ja tein tiedoston motd.sls, jossa viitataan “/etc/motd” file.managed tilalla

c)Bash. Tee bashiin asetuksia Saltilla. Ensin käsin, vasta toimivaa automatisoidaan. Muista testata lopputulos käyttäjän näkökulmasta.

Aloitin etsimällä tietoa googlesta “ubuntu customize bash”, päädyin tänne https://vitux.com/how-to-customize-ubuntu-bash-prompt/

Selvisi että bash hakee asetukset täältä:

~/.bashrc

Avasin tiedoston nanolla ja tutkin mitä se sisältää.

Ennenkuin teen muutoksia, teen kopion alkuperäisestä

Halusin löytää täsmällisempää tietoa Bashistä, joten päädyin lukemaan täältä: https://wiki.archlinux.org/index.php/Bash/Prompt_customization

Bashillä on 4 erilaista kehotetta (prompt).

PS1 on pääkehote, joka näkyy ennen jokaista komentoa
PS2 on toissijainenkehote, joka näkyy kun komento tarvitsee lisä syötteen

PS3 ja PS4 en keskity tässä harjoituksessa.

Säilön ensin PS1 muuttujan oletus asetukset toiseen muuttujaan nimeltä “DEFAULT”

master$ DEFAULT=$PS1

Testailen ja koitan löytää itselleni mieluisan PS1 kehotteen, ennen kuin teen muita muutoksia.

Kaksi muutosta tämän hetkiseen terminal istuntoon, ja palautus takaisin oletusasetuksiin
Testailua ja lopulta onnistuin lisäämään mitä halusin

Käytin näitä komentoja:

master$ echo $PS1
master$ PS1="\e[35m\t [\e]0;\u@\h: \w\a]${debian_chroot:+($debian_chroot)}[\033[01;32m]\u@\h[\033[00m]:[\033[01;34m]\w[\033[00m]\$"
värillä ja ilman

Tallensin muutokset, suljin terminaalin ja avasin uudestaa nähdäkseni toimiiko muutokseni

whoops
korjasin sijainnin
lopputulos

Nyt vain jakelu saltilla toimimaan.

En löytänyt tai keksinyt miten saadaan muokattua tiedostoja jotka ovat /home/ takana, muuta kuin saltissa spesifoimalla sen.

Tilan ajo onnistui näin. Ja testasin toiminnan myös minionilla.

d) Nginx. Tee nginx-weppipalvelimeen asetuksia Saltilla. Voit esimerkiksi tehdä uuden site:n, niin että etusivu vaihtuu. Kun nginx on todennäköisesti sinulle uusi palvelin, tässä tehtävässä on siis ensin laaja osuus valita sopiva asetus nginx:lle ja saada se toimimaan käsin. Vasta toimivaa, käsin kokeiltua kannattaa automatisoida. Muista lopputuloksen testaus käyttäjän näkökulmasta.

Päivitys: En tehnyt tätä tehtävää kurssin aikataulussa.

h4

Tehtävän lähde: http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/

b)

…seilaillessani internetin informaatiovirrassa päädyin selvittämään ja testaamaan seuraavia:
– Kaksi minulle uutta tilaa
– file.direcotry
– file.replace
– Kahta muiden tekemää modulia
Steam (https://github.com/rabits/salt-stack-modules/tree/master/steam)
Awsome (https://github.com/rabits/salt-stack-modules/tree/master/awesome)
– Kahta muiden tekemää formulaa
Timezone (https://www.linode.com/docs/applications/configuration-management/use-and-modify-official-saltstack-formulas)

file.directory

Seurasin ohjeita täältä: https://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html#salt.states.file.directory

Tällä voi tehdä kansioita minioneille ja vaihtaa kansioiden oikeudet

file.replace

Seurasin ohjeita täältä: https://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html#salt.states.file.replace

Tein ensin testitiedoston minionille, jota voin myöhemmin muokata file.replace:lla

Masterilla:

Hyvin toimii

Varsin kätevä.

Steam

Aloitin hakemalla repon gitistä, ennen sitä kuitenkin tutkin mitä repo pitää sisällään ja millaisia sls-tiedostoja olen ajamassa.

Päivitys: Opin että yksittäisen polun saa ainakin “fork” toiminnolla Githubista

master$ sudo git clone -b master https://github.com/rabits/salt-stack-modules/

Hain koko repon, en onnistunut hakemaan vain steam hakemistoa.

So far so good
Pitää tehdä korjauksia sls pakettiin

Poistin sls-tiedostosta “include: – x86” ja “require: cmd arch”, koska salt on ainakin aijemmin tunnistanut debian paketit ilman erikoismainintoja

Muuten onnistui, mutta jostain syystä itse paketti ei asentunut

Testaan käynnistää steamin minionilla

minion$ steam
Steam löytyy koneelta kuitenkin ja käynnistyi ladattuaan päivitykset

En tiedä miksi steam.pkg epäonnistuu. Sen voisi vikaselvittää tekemällä paketin itse alusta loppuun ja testaamalla vaiheittain.

Awsome

Koska rabitsin salt-stack-modules on jo koneella, testaan ajaa sls-tiedoston suoraan

Paketit asentui OK, mutta tiedostot ei löydy.

Korjaan lisäämällä oikean hakemiston. Ja nyt tilan ajo onnistui kokonaisuudessaan.

Onnistui

Hetken selvittelyn jälkeen on todettava, että en osaa käyttää kyseistä ohjelmaa. Ajattelin että tehtävän oheella opin käyttämään tätä, mutta se jäänee nyt myöhemmäksi.

Timezone Formula

Seurasin ohjeita täältä:

https://www.linode.com/docs/applications/configuration-management/use-and-modify-official-saltstack-formulas/

h3

Tehtävän lähde: http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/#h3-versionhallinta

a)

https://github.com/Raibbe/supersoaker2000

d)

$ git log

Loki muutoksista. ID, Tekijä, Aika, Muutos.

$ git diff

Nähdään muutokset joita ei olla vielä lähetetty

$ git blame harj3.md

Tekijän ID, nickname, aika, rivi, muutos

e)

Lisäsin rivin “Test 3 – tyhmä muutos” harj3.md-tiedostoon

$ git reset --hard

Komento pitää polun tallessa, mutta tuhoa kaikki paikalliset muutokset

f)

Testataan yleishyödyllinen libreofficen paketin teko ja jakelu saltilla.

master$ sudo salt saltoja cmd.run whoami #testataan yhteys

saltin alle hakemisto
vaihde 1, testataan paketin asennus

Seuraavaksi testaan asentuuko paketti nätisti kun ohjelmaa ei ole ollenkaan koneella

master$ sudo salt saltorja cmd.run 'sudo apt-get remove --purge -y libreoffice'
master$ sudo salt saltorja cmd.run 'sudo apt clean'
master$ sudo salt saltorja cmd.run 'sudo apt-get autoremove -y'
master$ sudo salt saltorja cmd.run 'libreoffice'

Nyt ohjelma on poistettu. Seuraavaksi testaan vielä paketin asennuksen ja sen käynnistyksen itse minionilla.

master$ sudo salt saltorja state.apply libreoffice/libreoffice

Vaikuttaa toimivan
ohjelma toimii ja käynnistyy nätisti minionilla

Libreofficen päivitys toimii ja paketin asennus toimii hyvin saltilla.

d)

Testaan versionhallinnan avulla varmuuskopion tekoa srv/salt hakemistosta. Käytän tähän gittiä (Git).

master$ sudo git init #Uusi repository
master$ sudo git add . #current directory lisätään juuri tehtyyn repositoryyn
master$ sudo git commit #Tallennetaan muutokset repositoryyn ja annetaan kuvaus lähetyksestä
master$ git log #Nähdään loki lähetyksistä

git palauteen perusteella kaikki on siirretty talteen

En kuitenkaan vielä luota ohjelmaan tai omaan osaamiseeni sen suhteen, niin teen backupin myös “home” alle.

Seuraavaksi testaan poistaa /srv/salt/ ja palautan ne git:llä.

Nyt huomaan, että olisin voinut tehdä Git repositoryn fiksummasta polusta, ettei tarvitsisi tehdä uutta salt kansiota

Nonii ja nyt tajusin että edellä käyttämäni komennot ovat vain paikalliseen versionhallintaan. Kansiot eivät koskaan mihinkään pilveen mennytkään. 😀
Palautan tiedostot omasta backupista takaisin lähtötilanteeseen ja testataan uudestaan, kun nyt ymmärrän miten Git toimii.

Lähtötilanteessa taas

Tein repositoryn https://github.com/Raibbe/slspaketittest.git

master$ sudo git init
master$ sudo git add .
master$ sudo git commit #kommentilla "My first commit"
master$ sudo git remote add origin https://github.com/Raibbe/slspaketittest.git
master$ sudo git push -u origin master

Nyt backup on tehty githubiin. Testaan palautusta, poistan ensin kansion /srv/salt/

master$ sudo git init
master$ sudo git clone https://github.com/Raibbe/slspakettitest.git

Sain paketit palautettua. Piti siirtää ne vielä oikeaan kansioon, koska clone toi koko kansion “slspakettitest”. Siirsin tiedostot sen sisältä omalle paikalleen /srv/salt/ alle ja kaikki toimii.

Tehtävää tehdessä opin perus Git komennot ja komennot joita ei tarvitse/kannata käyttää, samalla myös opin tiedosto rakenteet joita Git käyttää. Ajan säästämiseksi en voinut selvittelyjä tähän raporttiin lisätä.

Lähteet:
http://terokarvinen.com/2016/publish-your-project-with-github
https://stackoverflow.com/questions/2530060/in-plain-english-what-does-git-reset-do
https://help.github.com/

h2

Tehtävän lähde: http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/

a)

Testaan UFW:n (uncomplicated firewall) asetuksia.

master$ sudo apt-get update
master$ sudo apt-get install ufw
master$ service ufw status

Tee “default policies” palomuurille.

master$ sudo ufw default deny incoming
master$ sudo ufw default allow outgoing
master$ sudo ufw enable

Hetkinen, salt tarvitsee keskustelukanavansa. Googlasin “linux firewall salt” ja päästään: https://docs.saltstack.com/en/master/topics/tutorials/firewall.html
Tarvitaan siis portit 4505 ja 4506 auki.

master$ sudo ufw allow 4505
master$ sudo ufw allow 4506

Seuraavaksi mieti, mitä olet tekemässä. Olet asentamassa ja kytkemässä palomuurin päälle, etänä

Tee ensin testikone ja liitä se saltilla.

Testikone on siis “saltminion02”, tehdään ufw testit sillä.
Edellisen tehtävän kertausta

Seuraavaksi etsitään mistä löytyy tiedosto, joka sisältää porttisäännöt.
Aloin käymään tiedostoja läpi /etc/ufw/ alta.

Luettuani hetken dokumentaatiota ufw:stä (koska .rules tiedostoja on useampi, piti selvittää niiden logiikka), totesin parhaaksi tehdä porttiasetukset user.rules tiedostoon.


Tein init.sls tiedoston, mistä minion hakee päivitykset omaan tiedostoonsa ja “- watch” jolla palvelu käynnistyy uudestaan, mikäli sen alla oleviin tiedostoihin siihen tulee muutoksia.

Jotta saadaan kaikki testattua, ajattelin kokeilla SSH-yhteyttä palomuurin läpi.

Asensin jo valmiiksi tehdyn/konffatun SSH-paketin saltminion02:lle ja testasin yhteyttä. Tiedustelin IP:n käyttämällä grains.items.
Yhteys toimii.

Seuraavaksi testataan toimiiko ufw paketti.

Sanoo “:” puuttuuvan, ja sehän puutuukin /etc/ufw/user.rules perästä ja file.managed perästä.
Lukuisia virheitä koodissa. Korjaan.
Hetken selvittelyn jälkeen ja polkujen vaihtoja testaillessa viimein keksin miksi salt ei löydä tiedostoa.
Lisäsin read-oikeudet muille ja tiedosto viimein löytyy saltilla.
Tulee virhe, watch:… tiedosto ei löydy. Poistin watch: perästä user6.rules ja paketti toimii. (Aika loppuu kesken, joten selvittely jää myöhemmäksi)

Pääsemme tällä ratkaisulla testaamaan toimiiko paketti kuten halusin.

Paketti kulkee

Mutta toimiiko ratkaisu käytännössä. Ei vielä. Selvitettäväksi jää miten ufw:n saa aktivoitua saltin kautta asennuksen yhteydessä, sisältäen tarvittavat säännöt.

TO DO:
-Keksi miten ufw enabloidaan minionille etänä saltilla (Opiskele salt pillars/formula)
-Selvitä miksi salt -watch ei löydä user6.rules tiedostoa /etc/ufw/ alta
-Ota managed.filellä haltuun kaikki .rules tiedostot /etc/ufw/ alta

b)

Tunnilla Terolta saamamme scripti on:

master$ find -printf '%T+ %p\n'|sort|tail

%T = Milloin tiedostoa on viimeksi muokattu
%p = Tiedoston nimi
%n = uusi rivi

Tästä huomaakin, että pari muutosta ufw:ssä tekee muutokset kaikkiin .rules tiedostoihin, ja lisäksi /default/ufw tiedostoon.

c)

Lähteet:
http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-18-04
https://docs.saltstack.com/en/master/topics/tutorials/firewall.html

h1

Työympäristönä käytän Oracle VM VirtualBox 6.1, jolle asensin kaksi virtuualikonetta Xubuntu 18.04.4 64-bit

Liitin koneet toisiinsa “Bridged Adapter” toimintoa hyödyntäen.

a)

Saltmaster:

$ sudo apt-get update
$ sudo apt-get -y install salt-master

Orja:

$ sudo apt-get update
$ sudo apt-get -y install salt-minion
$ sudoedit /etc/salt/minion   #muokkasin masterin osoitteen ja ID:n
$ sudo systemctl restart salt-minion.service   #service resetillä muutokset voimaan

Saltmaster:

$ hostname -I   #katsoin IP:n orjaa varten
Orja yhdistetty

b)

“Funktio on idempotentti, jos sillä suoritettava operaatio tuottaa saman tuloksen riippumatta siitä, suoritetaanko se vain yhden vai useamman kerran.” (https://fi.wikipedia.org/wiki/Idempotenssi)

Tehdään masterilla ohjeet orjille:

$ sudo mkdir -p /srv/salt/ #ohjeet luetaan täältä $ sudoedit /srv/salt/heimaailma.sls #.sls = salt state file

.sls kirjoitetaan YAML-kielellä:

/tmp/heimaailma.txt: file.managed: - source: salt://heimaailma.txt

Tehdään .txt tiedosto:

$sudoedit /srv/salt/heimaailma.sls

Hei maailma!

Laitetaan tila voimaan orjalle masterilta:

$ sudo salt '*' state.apply heimaailma

Tila muutos onnistui

d)

Master:

$ sudo salt '*' grains.items

“Salt comes with an interface to derive information about the underlying system. This is called the grains interface, because it presents salt with grains of information. Grains are collected for the operating system, domain name, IP address, kernel, OS type, memory, and many other system properties.” (https://docs.saltstack.com/en/latest/topics/grains/)

Esimerkki

Graineja voi myös asettaa masterilta: /etc/salt/grains yleisesti tai minion ID:n mukaan.

e)

Hyödyllisiä tiloja:
pkg.installed = Tarkistaa onko .pkg asennettu, jos ei, asentaa
file.managed = Tarkistaa tiedoston tilan, jos muutoksia, päivittää ja jos puuttuu lataa sen
service.running = Tarkistaa/käynnistää prosessin
file.symlink = Symbolic Link
user.present = Lisää/tarkistaa käyttäjän, jos puuttuu
group.present = Lisää/tarkistaa käyttäjäryhmän, jos puuttuu

Aikaisemmin opimme, että file.managed komennolla voidaan syöttää tiedostoja orjille.

Tein masterilla /srv/salt polkuun:

$ sudoedit installed.sls vim: pkg.installed $ sudo salt '*' state.apply

Asennus onnistui

Lähteet:
http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/
http://terokarvinen.com/2018/salt-quickstart-salt-stack-master-and-slave-on-ubuntu-linux
http://terokarvinen.com/2018/salt-states-i-want-my-computers-like-this

Pilvi labrat

Palauta tähän kuvaruutukaappaus, josta näkyy Windows 2016 palvelimeesi otettu etätyöpöytäyhteydellä CMD-kehotteessa annettu “ipconfig /all” -komento tulostuksineen.  

Lisää tähän myös kuvaruutukaappaus etäyhteydeltä, jossa näkyy AD-palvelimeen liitetty Windows 10 työasema, AD-managerin user and computers -osiosta.

Palauta kohdan kaksi kuvan lisäksi toinen kuva, josta näkyy myös asennettu Linux-DebianBuster10xrdp mallista sekä tuohon koneeseen on asennettu annetun ohjeen mukaisesti docker, docker-compose sekä graafinen Portainer-konttienhallintaohjelmisto. 

^ Tää on kätevä.

MariaDB Basics

Relational database management system (RDBMS)

sudo mysql -u root -p
sudo systemctl status mariadb

Basic database commands

create database
list databases
shows selected database
select
delete

Exercise

create test database
new user account and password (virtual environment)
this user has only 1 database
create table with data and id as primarykey
add rows to test
Working!

Sources:
https://computingforgeeks.com/install-mariadb-10-on-ubuntu-18-04-and-centos-7/

Setup a local only SMTP Email Server

“The hosts file performs a name to IP address mapping and was main method used on early computer networks for name resolution before DNS was developed”

sudo nano /etc/hosts <- Some programs will not accept email using just “@localhost

sudo nano /etc/hosts <- Add . com
127.0.0.1. localhost.com

Install postfix

“Postfix is a popular open-source Mail Transfer Agent (MTA) that can be used to route and deliver email on a Linux system. It is estimated that around 25% of public mail servers on the internet run Postfix.”

sudo apt install postfix

Local only
Default name

Catch-all address

“A catchall email alias is an email address that is specified to receive all messages that are addressed to an incorrect email address for a domain name. “

Look for or create sudo nano /etc/postfix/virtual

Add/enable virtual_alias_maps

Open or install Thunderbird (“email client/reader”, Free and open-source software)

1. Cancel 1st window
2. Settings (top right) > Preferences > Account settings
3. Add other account
4. Unix Mailspool > Next
5. Email address: your-username@localhost > Next
6. Finish > Restart Thunderbird

Mail spool file

“A mail spool is a file that stores the mail header (i.e. sender’s address, time of delivery, etc.) and message body of every email for a particular account.”

Thunderbird creates Mail spool file when receiving first mail.
Send mail to test@localhost.com and if you receive mail everything should be working fine.

We can also send mail with Terminal

After downloading mailutils sending mail trough terminal works!

Last words

This project taught me some basic but very useful information about email service components. Usage of hosts file, catch all address and mail spool file will be useful lessons.

ADDITIONAL INFORMATION

This document can be copied or edited following GNU General Public License (version 2 or newer). http://www.gnu.org/licenses/gpl.html

Sources:
https://gist.github.com/raelgc/6031274
https://en.wikipedia.org/wiki/Mozilla_Thunderbird
http://kb.simplywebhosting.com/idx/9/089/article/
https://www.doteasy.com/domain-email-and-website-hosting-articles/catch-all-alias-good-idea-or-not
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-on-ubuntu-18-04
https://www.youtube.com/watch?v=a4S6FU5RdR0