Echo from the edge of the cyberworld
Palvelinten hallinta ICI001AS3A-3010 - Syksy 2024
päivä | aihe |
---|---|
2024-10-31 w44 Thu | Verkon yli. Herra-orja -arkkitehtuuri verkon yli. Orjan tavoittaminen tuntemattomasta osoitteesta, NAT ja tulimuurin takaa. Harjoitusympäristöjen rakentaminen Vagrantilla. Vianselvitys verkkoyhteydessä. |
Olin perehtynyt viikon aiheisiin muutaman päivän ennen tehtävien tekoa. Aloitin tehtävien tekemisen Ma 11.11 klo 14:00 ja olin valmis Ti 12.11 0:30, pidin satunnaisesti taukoa ja jatkoin. Pitkät taukovälit klo 16-18 ja 19:30-22:00
key: value
parejakey: value
jossa arvon kohtalla voi olla numero, teksti tai boolean arvokey:
parin kanssa voi olla lista arvoja, jossa jokainen arvo on eroteltu 1. uudella rivillä 2. väliviivalla 3. kahdella välilyönnilläkey:value
pareja voi olla useampia, niinkuin ohjelmoinnin dictionarissaVagrant on asennettuna isäntäkoneeseen.
Vagrantin voi asentaa Macille (intel) seuraavilla komennoilla
$ brew tap hashicorp/tap
$ brew install hashicorp/tap/hashicorp-vagrant
Tai sen voi asentaa sivulta https://developer.hashicorp.com/vagrant/install [3]
Tein uuden kansion vagrantStart
, ja siirryin kansioon. Tämän jälkeen aloitin Vagrantin komennolla
$ vagrant init hashicorp/bionic64
$ vagrant up
Toimii, ja vagrant käynnisti Virtualboxissa uuden virtuaalikoneen vagrantStart_default_...
[4]
Vagrantin käynnistys teki uuden tiedoston Vagrantfile
, tähän tiedostoon tein konfiguraatiot
Vagrant.configure("2") do |config|
config.vm.define "server1" do |server1|
server1.vm.box = "hashicorp/bionic64"
server1.vm.network "private_network", ip: "192.168.56.4"
end
config.vm.define "server2" do |server2|
server2.vm.box = "hashicorp/bionic64"
server2.vm.network "private_network", ip: "192.168.56.5"
end
end
config.vm.define “server1” ja config.vm.define “server2” määrittelevät kaksi virtuaalikonetta nimeltä server1
ja server2
Seuraavaksi käynnistin Vagrantin.
$ vagrant up
Varmistin että koneet pingaavat toisiaan, tein vuorotellen kirjautumalla ensiksi server1
ja sitten server2
$ vagrant ssh server1
$ vagrant ssh server2
Pingaus server1
koneesta
Pingaus server2
koneesta
Käynnistin ensimmäisen vagrant koneen server1
, johon asennan salt-master.
$ vagrant ssh server1
$ sudo apt-get update
$ sudo apt-get install salt-master
Tarkistin salt-masterin statuksen
Tämä jälkeen siirryin toiseen vagrant koneeseen server2
, tähän asensin salt-minionin ja samalla muokkasin /etc/salt/minion -tiedostoa, lisäämällä masterin osoitteen.
$ vagrant ssh server2
$ sudo apt-get update
$ sudo apt-get install salt-minion
$ sudoedit /etc/salt/minion
Tarkistin vielä että minion
on aktiivinen
Siirryin vielä takaisin server1
jossa on salt-master, jossa hyväksyin salt-minion avaimen.
sudo salt-key -A
komennolla tarkistin avainpyynnöt, ja hyväksyin sen.
Kokeilin vielä pingaa minionia, mutta sain viestin että masteri ei vastaa. Kävin tarkistamassa konfiguraatiot /minion
tiedostosta, että on oikea master osoite, ja että palomuurit 4505 ja 4506/tcp ovat auki.
salt-minion
salt-master
Tässä vaiheessa huomasin että enhän pääse itse enää kumpaakaan koneeseen. Vain portit 4505 ja 4506 portit jäivät auki, eikä portti 22/tcp ollut auki, josta itse pääsisin sisään.
Tuhosin nykyisen vagrantin ja loin uudestaan
$ vagrant destroy -f
$ vagrant up
Aloitin tehtävän uudestaan, ja tarkistin että asetukset ja yhteydet ovat oikein.
Vagrantfile:
Tarkistin että salt-master
hyväksytyt avaimet ja palomuurin:
/etc/salt/minion
konfiguraatio:
Tällä kertaa kokeilin lisätä kokeilin komentoa sudo salt '*' test.ping
Master voi komentaa minionia. Se näkyi komennolla sudo salt '*' cmd.run 'whoami'
Tämä näytti toimivan. Ihmettelin kuitenkin miksi pingi ei lähde komennolla sudo salt 'server2' test.ping
VagrantFile tietokoneen nimi oli vagrant
Ohjeet: Run Salt Command Locally
Aloitin tekemällä kansion
$ sudo mkdir -p /srv/salt/hello
$ sudoedit /srv/salt/hello/init.sls
/srv/salt/hello/init.sls
/tmp/iaas:
file.managed
Kuvassa näkyy, että masterin kone ohjaa minionin tekemään kansion /tmp
kansioon iaas
tiedoston. Tässä kävi myös ilmi idempotenssi. Kävin tarkistamassa minionistä että tiedosto on luotu oikeaan paikkaan. Seuraavassa kuvassa näkyy iaas
tiedosto on toisena listalla.
[1]
Tässä sls-tiedostossa käytin useampaa tilafunktiota.
Tulos:
jatkuu…
Kuvassa näkyy file.managed
funktio vihreänä, eli se oli jo olemassa.
Seuraavaksi Vagrant asensi apache2
-weppipalvelimen onnistuneesti, tässä kesti vähän pidempään kuin aikaisemmissa ajoissa. Duration: 35376.96 ms
service.running
-funktio ei onnistunut. Syynä oli että, Vagrant ei tunnistanut nimeä apache2_service
. Tarkoituksena oli erottaa pkg.installed
ja service.running
tilafunktioiden nimet.
Viimeisenä Vagrant teki käyttäjän ‘leonardo’ tilafunktiolla user.present
Kävin tarkistamassa Karvinen 2023: Salt Vagrant - automatically provision one master and two slaves, YAML syntaksia, ja korjasin init.sls
tiedostoa [1]
Korjattu syntaksi:
apache2_service:
service.running:
- name: apache2
Tällä kertaa kaikki näytti vihreätä. Apachen lataaminen myös käynnistää palvelimen, joten se oli jo päällä joten Vagrant todisti sen idempotenssin.
Kävin tarkistamassa vielä minion koneelta että Vagrant todella teki kaiken:
Tässä tehtävässä tarkoituksena oli automatisoida yhdestä tiedostosta vähintään kahden tilan / modulin ajaminen.
Karvinen 2023: Salt Vagrant - automatically provision one master and two slaves [1] Tästä löytyi varsin helpot ohjeet tähän.
hello
kansio oli jo luotu edellisessä tehtävässä, ja loin uuden kansion moikka
ja lisäsin siihen init.sls
tiedoston. Seuraavaksi tein /srv/salt
kansioon top.sls
tiedoston. Kuvassa näkyy tiedostojen sisällöt:
Tämän jälkeen pystyin ajamaan lyhyemmän komennon sudo salt '*' state.apply
.
Vagrant näköjään tunnistaa top.sls
, ja että sieltä löytyy ajettavat tilafunktiot. Huomasin tämän koska, aluksi top.sls
tiedosto oli väärin sijoitettu polkuun /srv/salt/top/top.sls
, josta sain virheviestin
Tehtävä tehty automatisoituna seuraavan viikon palautuksessa
Tarkistin aluksi että Apachen sivu toimii ja näkyy
curl localhost
komento tulosti Apachen kotisivun, curl -I localhost
komento tulosti lyhyemmän ytimekkään vastauksen.
Kaikki näytti olevan OK! Voin aloittaa tekemällä kansion käyttäjän hakemistoon:
$ sudo mkdir -p /home/leonardo/public_html/examplevagrant.com
Apache sivujen konfiguraatio:
$ sudoedit /etc/apache2/sites-available/examplevagrant.com.conf
Etusivu index.html
sisältö:
Otin Apachen oletussivun pois käytöstä ja otin omat sivut käyttöön komennoilla:
$ sudo a2dissite 000-default.conf
$ sudo a2ensite examplevagrant.com.conf
Jonka jälkeen Apache täytyy käynnistää uudelleen komennolla:
$ sudo systemctl restart apache2
Varmistetaan vielä että etusivua pystyy muokkaamaan ilman sudoa chown
Vaihdoin kansion uudeksi omistajaksi käyttäjän leonardo
, näin käyttäjä pystyy muokkaamaan ilman sudoa.
PÄIVITYS 14.11.2024. Tehtävää on jatkettu, Apache piti asentaa ja konfiguroida automaattisesti master-minion tekniikalla. Tämä tuli esille rinnakkaisarvioinnissa.
Poistin käyttäjän ja käyttäjän hakemiston:
$ sudo deluser leonardo
$ sudo rm -rf /home/leonardo
Poistin Apache latauksen ja konfiguraatiot:
$ sudo apt purge apache2
$ sudo apt autoremove apache2
$ $ sudo rm -rf /etc/apache2/sites-available/
Nyt voidaan aloittaa alusta Master koneelta
Tehtävä oli haastava, joten kävin etsimässä esimerkkejä edellisiltä toteutuksilta.
Löysin nimimerkillä Vapalo:n .sls tiedoston. [6]
Luin hänen koodia ja muokkasin sitä niin että, olisin itsekkin voinut käyttää.
userdir
‘This module allows user-specific directories to be accessed using the http://example.com/~user/ syntax.’ Lähde [7]removedefault
tässä muutetaan Apachen index.html
oletussivua, lisätään teksti “Harjoitellaan palvelinhallintaa!”/home/leonardo/public_html
tässä kohdassa, tehdään public_html
kansio käyttäjän hakemistoon, vaihdetaan se käyttäjän omistukseen sekä muutetaan oikeuksia.Ajoin ensin käskyt yksitellen, varmistin että jokainen toimii. Sen jälkeen ajoin komennot samaan aikaan jonka tuloksena:
Eli, 1. käyttäjä on luotu, 2. Apache asennettu, 3. Apache on käynnissä (varmistus), 4. Käyttäjä pystyy muokkaamaan omassa hakemistossa olevia tiedostoja URL:n avulla, 5. Apachen oletus .html sivu on muokattu, 6. Käyttäjän hakemistoon on luotu kansio, jossa käyttäjä voi muokkaa sivuja.
Tehtävä alkoi käydä erittäin haastavaksi, sillä käyttäjän piti pystyä muokkaamaan sivuja omasta hakemistostaan ilman sudoa, sekä .conf tiedosto piti vaihtaa omaan konfiguraatioon ja aktivoida se.
Tehtävää päivitetään lisää tulevaisuudessa.