Package-file-service

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.

Tehtävänanto

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ä

apacheuserdir

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

saltkomento1

saltkomento2

saltkomento3

saltkomento4

uusikotisivu

uusikotisivu2

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

nethack1

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:

nethack2

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

nethacksalt

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

find

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.

saltdebug

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.

Linkkejä