Package-file-service - Palvelinten hallinta viikkotehtävä 2
TLDR
Tehtävässä asensin onnistuneesti apache2 web palvelimen, sekä muutin sen asetuksia master-slave arkkitehtuurin avulla. Tein saman myös komentokehoitteessa käytettävän Nethack nimisen pelin kanssa. Käytin find komentoa löytääkseni viimeisen tunnin aikana muutettuja tiedostoja, sekä suodatin tuloksia.
Demonin asetukset - Tehtävä A
Ensimmäisenä tehtävänä oli asentaa, sekä säätää asetukset jostakin demonista package-file-service rakenteella. Tehtävänannosta poiketen tunnilla käytiin ssh:n asennus sekä ssh:n asetusten muuttaminen läpi. Kotiläksyä varten asensin siis Apache2, muutin apachen oletussivua, sekä laitoin käyttäjien kotihakemistosta muokattavan kotisivun toimintaan.
Käytin edellisessä tehtävässä luotua paikallista salt kokoonpanoa tehtävän tekemiseen.
Apachen asennus sekä asetusten säätö käsin
Apachen asennuksessa, sekä kotihakemiston kotisivujen käyttöönotossa seurasin omia ohjeitani, jotka löytyvät täältä
Automatisointi saltin avulla
Aloitin luomalla uuden kansion: /srv/salt/apache
ja sinne sisään init.sls
tiedoston. init.sls
tiedostossa tulee määritellä saltille mitä paketteja
tarvitsee asentaa, sekä mitä kansioita tai tiedostoja tulee luoda. Tämän tiedoston kautta voi myös ajaa komentoja ja käynnistää demonia manuaalisesti uudestaan.
Saltin voi myös laittaa tarkkailemaan jotain tiettyä tiedostoa ja kun se muuttuu, salt käynnistää demonin uudelleen. Päätin laittaa saltin tarkkailemaan käyttäjän
kotihakemiston public_html kansiossa olevaa index.html tiedostoa ja käynnistämään apachen uudelleen sen muuttuessa.
# init.sls tiedoston sisältö
apache2:
pkg.installed
userdir:
cmd.run:
- name: a2enmod userdir
- require:
- pkg: apache2
restart:
cmd.run:
- name: systemctl restart apache2
- require:
- pkg: apache2
removedefault:
cmd.run:
- name: echo "Empty page" > /var/www/html/index.html
- require:
- pkg: apache2
/home/toni/public_html:
file.directory:
- name: /home/toni/public_html
- user: toni
- group: toni
- file_mode: 755
/home/toni/public_html/index.html:
file.managed:
- source: salt://apache/index.html
- user: toni
- group: toni
- file_mode: 644
apache2.service:
service.running:
- watch:
- file: /home/toni/public_html/index.html
#/srv/salt/apache/index.html sisältö:
uusitesti
Tämän konfiguraation avulla salt asentaa apache2 webbipalvelimen hallittavaan järjestelmään, laittaa käyttäjäkohtaisen kotisivu modin päälle a2enmod userdir
komennolla,
Pyyhkii apachen asettaman oletussivun ja korvaa sen “Empty page” tekstillä, käynnistää apache2 uudelleen, luo käyttäjän kotihakemistoon public_html kansion ja sen sisään
esimerkkitiedostosta valmiin testisivun käyttäjän kotisivuksi.
cmd.run
komennon avulla salt voi ajaa hallittavan järjestelmän komentorivillä komentoja. Koska salt ajaa komennot hallittavien järjestelmissä root käyttäjänä, ei tarvitse
kirjoittaa sudo sanaa systemctl restart apache2
komennon eteen. Sama pätee myös a2enmod userdir
komentoon
Kansiota, sekä index.html tiedostoa luodessa on tärkeää määritellä mille käyttäjälle ja ryhmälle tiedosto sekä kansio kuuluu. Mikäli näitä ei määrittele, luodut kansiot sekä tiedostot kuuluvat root käyttäjälle. File_mode kohdassa määritellään tiedoston luku, kirjoitus sekä suorittamisoikeudet käyttäjälle, ryhmälle sekä muille. Lisätietoa tiedostojen oikeuksista voi katsoa esimerkiksi täältä.
Ennen salt komennon ajamista poistin apache2 kokonaisuudessaan, sekä poistin käyttäjän kotihakemistosta public_html kansion sisältöineen.
Ajettu komento oli siis:
$ sudo salt '*' state.apply apache
Komento suoritettiin onnistuneesti. Apachen oletussivu on vaihtunut ja käyttäjän kotihakemistosta muokattavan kotisivun sisältö on isäntäkoneen /srv/salt/apache/index.html tiedoston mukainen.
Asenna uusi ohjelma + muokkaa asetuksia + testaa - Tehtävä B
Tehtävänä oli asentaa sekä konfiguroida uusi ohjelma, jota ei ole tunnilla käsitelty. Jälleen ensin asentaen käsin ja sitten saltin avulla.
Ohjelmaksi valitsin nethack-console ohjelman. Idean sain Teron Command Line Basics Revisited julkaisusta.
$ sudo apt-get -y install nethack-console
Nethackin asennuksen jälkeen käynnistin pelin $ nethack
komennolla ja testasin toimivuuden
Hyvin toimii!
Command line basics julkaisun mukaan peliä on muakavampi pelata, mikäli on ottanut numeronäppäimistön käyttöön.
$ echo "OPTIONS=number_pad:1">$HOME/.nethackrc
Tämän jälkeen kun pelin käynnisti, ei aikaisemmat h,j,k,l näppäimet toimineet liikkumiseen. Sen sijaan käytössä oli näppäimistön numeronäppäimistö seuraavanlaisessa muodossa:
Asennus siis toimii käsin. Seuraavaksi luodaan salt tila, jolla asennus sekä asetuksen luominen automatisoidaan. Ensin täyty poistaa nethack sekä kopioida toimiva asetustiedosto saltia varten.
$ sudo apt-get purge nethack-console
$ sudo mkdir /srv/salt/nethack
$ sudo mv .nethackrc /srv/salt/nethack
$ echo "OPTIONS=number_pad:1">$HOME/.nethackrc
Saltilla automatisoitu asennus
Seuraan tässä samaa kaavaa kuin apachen asentamisessa. Luon tilan, joka tarkistaa nethack-console paketin asennuksen tilan, sekä laittaa käyttäjän kotihakemistoon .nethackrc tiedoston jonka sisällä on “OPTIONS=number_pad:1” rivi.
#/srv/salt/nethack/init.sls sisältö
nethack-console:
pkg.installed
/home/toni/.nethackrc:
file.managed:
- source: salt://nethack/.nethackrc
- user: toni
- group: toni
- file_mode: 644 #Tämä jälleen, jotta tiedosto on käyttäjän omistuksessa sekä muokattavissa
Komennon ajo onnistui virheittä ja testasin nethackin toimivuuden. Samalta näytti kuin ennen poistoa ja saltin ajoa.
Muuttuneiden tiedostojen etsiminen
Tiedostoja pystyy tarkistelemaan find
komennon avulla.
$ find / -mmin +60|grep nethack|less
Tällä komennolla find etsii kaikkialta koneesta edellisen 60min aikana muuttuneita tiedostoja. Grep näyttää vain rivit joilla lukee nethack ja less komento tekee tuloksesta helpommin luettavan
Aja jokin tila paikallisesti - Tehtävä C
Kolmantena vuorossa oli komennon ajaminen paikallisesti ilman master-slave arkkitehtuuria.
$ sudo salt-call --local state.apply nethack -l debug
Tämä komento ajaa paikalliselle koneelle aikaisemmin luomani nethack tilan ja näyttää debug tietoja sen ajon aikana.
Debug tekstistä en saanut oikein yhtään tolkkua, mutta kuvakaappauksessa näkyy, kuinka salt ilmoittaa käyttäjän kotihakemistossa olevan .nethackrc tiedoston olevan jo oikeassa tilassa.