Tällä kertaa tehtävinä oli mm. Apachen ja PHP:n asennus ja määritys, nimipalvelun simulointia, kotisivut käyttäjille automaattisesti sekä vapaavalintainen Package-File-Service tila omilla asetuksilla. Tehtävät tehdään ensin manuaalisesti ja sen jälkeen Salt-state -tiedostoja hyödyntäen.
Tehtävät ovat osana Tero Karvisen palvelinten hallinta -kurssia. Tehtävänannot löytyvät Teron kotisivuilta.
Käytin tehtävissä DigitalOceanista vuokrattua virtuaalipalvelinta (Ubuntu 16.04.3 x64) sekä VirtualBoxilla pyörivää Xubuntua. (Xubuntu 16.04.3 x64)
Tehtävä B
Laita käyttäjien kotisivut toimimaan Apachella.
Lähdin liikkelle manuaalisella asennuksella ensin. Tässä tehtävässä käytin apuna Tero Karvisen sivulta löytyneitä ohjeita.
Asensin Apachen
sudo apt-get install -y apache2
Testasin selaimella osoitetta 127.0.0.1, josta löytyikin Apachen oletussivu.
Jotta sain käyttäjän kotisivut näkyviin kotikansiosta tarvitsi luoda käyttäjän kotihakemistoon kansio sekä html tiedosto kotisivulle. Apachesta täytyi ottaa käyttöön käyttäjäkansiot Apachesta sekä lopulta käynnistää Apache-palvelu uudelleen.
Loin kansion käyttäjän kotihakemistoon (/home/miko/)
mkdir public_html
Loin esimerkkisivun public_html -kansioon:
echo "Testisivusto" |tee public_html/index.html
Kotikansiot käyttöön Apachesta:
sudo a2enmod userdir
Lopulta Apachen uudelleenkäynnistys:
sudo systemctl restart apache2.service
Näiden toimenpiteiden jälkeen käyttäjän kotikansiossa olevat sivut näkyivät.
Nyt kun manuaalinen asennus on hallussa, siirryin tekemään Salt-tilaa jolla saa aikaan samat toimenpiteet!
Tässä vaiheessa piti selvittää mitä tiedostoa komento ”a2enmod userdir” muokkasi.
Lähdin kaivelemaan muutoksia /etc/apache2/ hakemistosta salt-orjakoneelta:
find -printf "%T+ %p\n"|sort
”%T+” on muokkausaika
”%p” on tiedostonimi ja hakemisto
”\n” on uusi rivi
”|sort” järjestää tiedot
Viimeisimmät muutokset on tehty userdir.conf sekä userdir.load tiedostoihin.
Loin Salt-masterille oman salt-state kansion Apachelle /srv/salt/ hakemistoon:
sudo mkdir /srv/salt/apache
Lähdin luomaan salt-state tiedostoa:
sudo nano /srv/salt/apache/init.sls
State-tiedoston voisi tehdä nopeammin ja helpommin käyttämällä komentoja, mutta parempi ja luotettavampi tapa on käyttää suoraan tiedostoja. Käytin esimerkissäni jälkimmäistä tapaa.
apache2: pkg.installed /etc/apache2/mods-enabled/userdir.conf: file.symlink: - target: ../mods-available/userdir.conf /etc/apache2/mods-enabled/userdir.load: file.symlink: - target: ../mods-available/userdir.load apache2service: service.running: - name: apache2 - watch: - file: /etc/apache2/mods-enabled/userdir.conf - file: /etc/apache2/mods-enabled/userdir.load
Näillä tiedoilla pitäisi Apache asentua ja userdir.conf sekä userdir.load tiedostot tulla master-koneelta.
Ennen kuin testataan poistan slave-koneelta Apachen:
sudo apt-get purge apache2
Tämän jälkeen totesin että Apachea ei ollut enää slave-koneella testaamalla 127.0.0.1 sekä etsimällä hakemistoa /etc/apache2/
Lähdin testaamaan State-tiedostoa master-koneelta
sudo salt 'miko-Labra' state.apply apache
Raportista ilmeni että Salt teki onnistuneesti orjakoneelle 4 muutosta.
Orjakoneessa on jälleen Apache ja käyttäjän kotihakemiston sivut toimivat!
Tehtävä C
Laita PHP toimimaan käyttäjien kotisivuilla. (Huomaa, että PHP toimii oletuksena kaikkialla muualla kuin käyttäjien public_html-kotisivuilla.)
Tässä tehtävässä en käynyt läpi edellisen tehtävän toimenpiteitä (Apache asennus + käyttäjähakemistojen käyttöönotto)
Katsoin ensin miten asennettiin PHP ja määritettiin käyttäjien kotisivuille sen käyttöoikeus. Mallia vilkaisin aikaisemmasta blogipostauksestani.
Manuaalinen asennus lähtee PHP:n sekä Apachen PHP-modin asennuksesta:
sudo apt-get install -y php7.0 libapache2-mod-php7.0
PHP piti saada vielä toimimaan käyttäjien kotisivuilla:
sudoedit /etc/apache2/mods-available/php7.0.conf
Tästä tiedostosta kommentoitiin ulos viimeiset viisi riviä #-merkillä.
Loin vielä käyttäjäkansioon php-testitiedoston jolla voin todeta toimivuuden:
sudo nano /home/miko/public_html/index.php
PHP-koodi:
<?php phpinfo(); ?>
Apache piti vielä käynnistää uudelleen tässä vaiheessa
sudo systemctl restart apache2.service
Tämän jälkeen voin siirtyä 127.0.0.1/~miko verkko-osoitteeseen
Näillä näkymin PHP toimii myös käyttäjien kotisivuilla!
Salt-state tiedoston sisällöksi tarvitsin pakettiasennukset, php7.0.conf-tiedoston sekä apache2-palvelun uudelleenkäynnistyksen.
Loin /srv/salt/ kansioon tälle asennukselle oman hakemiston
sudo mkdir /srv/salt/php
Loin uuden init.sls tiedoston seuraavalla sisällöllä:
php_install: pkg.installed: - pkgs: - php7.0 - libapache2-mod-php /etc/apache2/mods-available/php7.0.conf: file.managed: - source: salt://php/php7.0.conf apache2service: service.running: - name apache2 - watch: - file: /etc/apache2/mods-available/php7.0.conf
Kopioin master-koneelta löytyvän php7.0.conf -tiedoston /srv/salt/php kansion juureen. Tämän tiedoston sisältö korvaa orjakoneiden vastaavan tiedoston.
Tässä vaiheessa poistin orjakoneelta vanhat asennukset:
sudo apt-get purge -y apache2 php7.0 libapache2-mod-php7.0
Tarkistin vielä orjakoneelta että kaikki olivat poistuneet testaamalla 127.0.0.1 sekä etsimällä niiden hakemistoja.
Tämän jälkeen testasin Salt-state tiedostoja ajamalla ensin apachen asennuksen
sudo salt 'miko-Labra' state.apply apache
Apache asentui onnistuneesti jälleen.
Tämän jälkeen ajoin juuri tehdyn Salt-state -tiedoston:
PHP asentui onnistuneesti ja toimi suoraan käyttäjän kotisivuilta!
Tehtävä D
Rakenna tila (state), joka tekee Apachelle uuden nimipohjaisen virtuaalipalvelimen (name based virtual hosting). Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla.
Virkistelin muistiani testaamalla orjakoneella ensin manuaalisesti hosts-tiedoston muokkausta
sudoedit /etc/hosts
Lisäsin tiedostoon labra.suolakaivos.com nimen osoitteelle 127.0.0.1
Näin helposti se kävikin!
Poistin jälkikäteen tehdyt muutokset hosts-tiedostoon ja lähdin tekemään Salt-state -tiedostoa.
Luon tätä varten /srv/salt/ hakemistoon uuden kansion ”hostnames”
Kopioin Master-koneelta /etc/hosts -tiedoston /srv/salt/hostnames/ kansioon.
Lisäsin kopioituun tiedostoon haluamani osoitteen ja nimen.
Master-koneella loin uuden sls-tiedoston
sudo nano /srv/salt/hostnames/init.sls
Tätä varten ei tarvitse muuta kuin ylläpitää orjakoneilta löytyvää hosts-tiedostoa, sitä varten käytin file.managed toimintoa.
/etc/hosts: file.managed: - source: salt://hostnames/hosts
Ajoin sls-tiedoston
sudo salt 'miko-Labra' state.apply hostnames
Vihreätä näyttää:
Orjakoneella testiin..
Ja nimi toimii jälleen!
Tehtävä E
Tee tila, joka laittaa esimerkkikotisivun uusille käyttäjille. Voit laittaa esimerkkikotisivu /etc/skel/:iin, niin se tulee automaattisesti ‘adduser tero’ komennolla käyttäjiä luodessa.
Lähdin manuaalisesta määrittelystä liikkeelle jälleen. Orjakoneella loin /etc/skel -hakemistoon public_html kansion johon vielä lisäsin index.html testitiedoston.
Lisäsin uuden käyttäjän
sudo adduser pekka
Siirryin 127.0.0.1/~pekka osoitteeseen ja sieltä löytyi automaattisesti /etc/skel -hakemistoon luomani testisivu.
Poistin tekemäni muutokset ja siirryin tekemään Salt-state tiedostoa.
Tässä state-tiedostossa tarvitsin uuden kansion luomista hakemistoon. Sitä varten käytin file.directory -toimintoa jonka alle lisäsin makedirs: True
Tämän lisäksi tarvitsin edellisessä tehtävässäkin käytettyä file.managed -toimintoa index.html tiedostoa varten.
Salt-state tiedoston sisältö:
/etc/skel/public_html: file.directory: - makedirs: True /etc/skel/public_html/index.html: file.managed: - source: salt://skel/index.html
Testasin Salt-statea seuraavasti:
sudo salt 'miko-Labra' state.apply skel
Kivoja värejä! Siirryin orjakoneelle tekemään uutta käyttäjää nimeltä jorma.
sudo adduser jorma
Tiedot annettua tarkistin hakemistot ja testasin 127.0.0.1/~jorma ja siellähän sivut näyttäisi olevan!
Tehtävä F
Eri asetukset. Tee Package-File-Service tilalla eri asetuksia kuin ne, mitä tehtiin tunnilla; ja eri kuin mitä teit/teet h2 muissa kohdissa. Voit muuttaa jotain toista asetusta samoista demoneista tai valita kokonaan eri demonit.
Halusin orjakoneille sshguard demonin pyörimään jotta saisin ssh-yhteys yrityksiä kuriin. Halusin lisätä myös palvelimeni hostnamen sekä ip-osoitteen whitelistille automaattisesti.
Manuaalisesti tein tämän seuraavasti orjakoneella:
sudo apt-get install -y sshguard
Ohjelmisto toimii suoraan asennettua kuten haluan, mutta whitelistille pitää lisätä itse osoitteet.
sudoedit /etc/sshguard/whitelist
Tässä on kaikki tarvitut asetukset!
Poistin tekemäni asiat ja lähdin tekemään sls-tiedostoa.
sudo apt-get purge sshguard
Loin /srv/salt/ hakemistoon uuden kansion sshguard
Tein kansioon whitelist nimisen tiedoston johon lisäsin osoitetiedot.
Tämän jälkeen lähdin tekemään sls-tiedostoa:
sudo nano init.sls
Lisäsin seuraavat rivit:
sshguard: pkg.installed /etc/sshguard/whitelist: file.managed: - source: salt://sshguard/whitelist
Sitten testaamaan..
sudo salt 'miko-Labra' state.apply sshguard
Muutokset näytti menneen läpi!
Tarkistan vielä että orjalle on saapunut whitelist..
Sieltähän se löytyi!
Lähteet
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html
Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com
hienoa työtä
TykkääLiked by 1 henkilö
Kiitos kiitos
TykkääTykkää