Daemon

Let them do your bidding for you

Pkg-file-service

Palvelinten hallinta ICI001AS3A-3010 - Syksy 2024

päivä aihe
2024-11-14 w46 Thu Pkg-file-service eli demonien hallinta. Käsin tehdyn konfiguraation automatisointi. Aikajanan käyttö muutosten tunnistamisessa. Omien modulien aloitus.

Laitteisto

h3 Demoni Tehtävä

Tein tehtävät Ke 20.11 klo 10 - 13.55

Päivitykset ke 20.11, palautuksen jälkeen klo 14:30 - 15:30

klo 20 - 20:30

[1]

x) Lue ja tiivistä Pkg-File-Service – Control Daemons with Salt – Change SSH Server Port

SSH, Secure SHell. Turvallinen tapa ottaa yhteyttä koneisiin. Tässä artikkelissa käydään läpi Masterin SSHd konfiguraatiota ja miten SSHd:tä voi hyödyntää Master-minion arkkitehtuurissa. [2]

a) Apache easy mode. Asenna Apache, korvaa sen testisivu ja varmista, että demoni käynnistyy

Apachen asennus ja sivun tarjoilu manuaalisesti. Käytän viime viikon raporttia Apachen manuaalisesta asennuksesta ja käynnistyksestä.

$ apt-get update
$ apt-get install apache2

Tarkistin aluksi että Apachen sivu toimii ja näkyy

Näyttökuva 2024-11-12 kello 0 07 09

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 

Näyttökuva 2024-11-12 kello 0 19 42

Etusivu index.html sisältö:

Näyttökuva 2024-11-12 kello 0 28 07

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

kuva

Varmistetaan vielä että etusivua pystyy muokkaamaan ilman sudoa chown

Näyttökuva 2024-11-12 kello 0 39 07

Vaihdoin kansion uudeksi omistajaksi käyttäjän leonardo, näin käyttäjä pystyy muokkaamaan ilman sudoa.

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.

Automatisoitu Apachen asennus ja sivun tarjoilu.

Tehtävää jatketaan edellisen viikon tehtävien jälkeen, samoilla asetuksilla ja konfiguraatioilla. Ainoastaan ajoin vagrant destroy joka tuhosi edellisen viikon master-minion serverit. Käynnistin ne uudestaan vagrant up komennolla, HUOM! tästä syystä asetustiedoistoissa olevat polut ja nimet ovat erilaisia kuin manuaalisen Apache easy mode asennuksessa.

Tarkistin että uudessa minion koneessa ei ole Apachea.

apacheNOTinMin

Tässä osassa noudatin opettajan Apache User Homepages Automatically – Salt Package-File-Service Example ohjeita. [3]

Sivulla on kaksi ohjetta miten kirjoittaa init.sls tiedostoon, ensimmäinen on simppeli ja nopea, toinen on hieman pidempi mutta luotettavempi tapa.

Ensiksi tein tiedosto init.sls polkuun /srv/salt/apache/, sisältöön laitoin:

apache2:
 pkg.installed
/var/www/html/index.html:
 file.managed:
   - source: salt://apache/default-index.html
/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

Tarkoituksena myös vaihtaa Apachen oletussivu. Tämä tapahtuu tilafunktiolla file.managed. Siihen voidaan kirjoittaa HTML koodia:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Testi</title>
</head>
<body>
    <h1>Testataan että toimii</h1>
</body>
</html>

Master koneelta komento:

$ sudo salt '*' state.apply apache

apacheinstalled.png

apacheSiteUpdate

userDir_apacheDaemon

Success! Ensin pkg.installed latasi ja oletuksena käynnisti samalla Apachen, jonka jälkeen file.managed muutti Apachen oletussivua, uuden sisällön olin kirjoittanut polkuun /srv/salt/apache/ ja nimesin tiedoston ohjeiden mukaisesti default-index.html.

Tilafunktio file.symlink oli uusi minulle. Wikipedian sivuilla symlink tai symbolic link: “In computing, a symbolic link (also symlink or soft link) is a file whose purpose is to point to a file or directory (called the “target”) by specifying a path thereto.” [4]

Perehdyn tilafunktioon enemmän tehtävien jälkeen.

Viimeisenä service.runningvarmisti että Apache on käynnissä.

b) SSHouto. Lisää uusi portti, jossa SSHd kuuntelee

Salt asennuksen mukana tulee tarvittava SSH.

Ohjeet tehtävään löytyvät opettajan sivulta Pkg-File-Service – Control Daemons with Salt – Change SSH Server Port. [5]

Loin sshd.sls tiedoston polkuun /srv/salt/sshd.sls, tiedoston sisältö:

openssh-server:
  pkg.installed
/etc/ssh/sshd_config:
 file.managed:
   - source: salt://sshd_config
sshd:
 service.running:
   - watch:
     - file: /etc/ssh/sshd_config

pkg.installed funktio asentaa SSH:n, service.running varmistaa että se on käynnissä ja toiminnassa.

Seuraavaksi, lähdin muokkaamaan sshd_config konfiguraatiotiedostoa, jonka sijainti oli /etc/ssh/sshd_config.

Tehtävänannossa opettajan vinkki “Esimerkkidokumenteissa olevat demonien asetustiedostot tuskin toimivat juuri omassa järjestelmässä”. [1]

Muokkasin tiedostoa, lisäämällä portin 2727, ja ottamalla kommentit pois useammasta rivistä, jotta se olisi samanlainen kuin opettajalla. konfiguraatiotiedostoni näytti tältä:

Port 22
Port 2727

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

AcceptEnv LANG LC_*
Subsystem       sftp    /usr/lib/openssh/sftp-server

UseDNS no
GSSAPIAuthentication no

Tämän jälkeen ajoin:

$ sudo salt '*' state.apply sshd

sshd_failed

Mistähän kiikastaa?

Ensiksi tarkistin että tiedoston sisällössä ei ole mitään häikkää, kaikki näytti olevan OK. Kuitenkin Salt kertoo ettei löytänyt tiedostoa.

Tarkistin oliko tiedoston olemassa.

ls -l /srv/salt/sshd_config

nosshd_config

Tässä vaiheessa huomasin, että konfiguraatio tiedosto jota muokkasin ei ollut Saltin polulla.

salt://sshd_config etsii polulta /srv/salt...., jossa tehtiin konfiguraatiotiedosto. Konfiguraatio tiedosto jota muokkasin oli polulla /etc/salt....

Kertausta, /etc/-kansion alta löytyy kaikki järjestelmän asetukset. Jotta olisin voinut käyttää omaa moduulia, minun tuli kopioida tiedosto oikeaan kansioon. [6]

$ sudo cp /etc/ssh/sshd_config /srv/salt/sshd_config

ja ajetaan uusiksi

$ sudo salt '*' state.apply sshd

Success!

SSH_success

SSH_succes1

Päivitys: Lisätty kuva sshd testistä 12.12.2024

sshdtesting

c) Oma moduli. Valitse aihe omalle modulille

Haluan tehdä moduulin joka asentaa VPN ja ottaa se käyttöön.

d) VirtualHost. Asenna Apache tarjoilemaan weppisivua

Päätin jatkaa samoilla asetuksilla, ja lisätä uudet konfiguraatiot edellisten päälle.

Hieman hienosäätöä:

Käyn käyttäjälle userin/init.sls- tiedostonm ja lisäsin tilafunktiot user.present file.directory create-index

Komento jolla salt ajetaan:

$ sudo salt '*' state.apply

Ensimmäisellä juoksulla oli ongelmia user.present tilafunktion kanssa. Unohdin kirjata ylös tästä virheestä, mutta ongelma oli syntaksissa. Vaihdoin sen yksinkertaisesti:

    leonardo:
      user.present

Tämä yksinkertaisempi syntaksi toimi loistavati.

Toisella juoksulla Salt onnistui tekemään kaikki paitsi:

       ID: create-index
Function: file.managed
    Name: /home/leonardo/public_html/index.html
  Result: False
 Comment: Source file salt://apache/index.html not found
 Started: 11:07:54.885771
Duration: 10.489 ms
 Changes:

Tämän funktion piti tehdä uusi index.html tiedosto, joka olisi Apachen uusi etusivu. Edellisessä tehtävässä, tiedosto johon vaihdoin Apachen etusivun oli nimeltään default-index.html. Vaihdoin sen lyhyempään muotoon kuten konfiguraatiossa index.html, ja sen sisältö

indexSisalto

Ajoin salt komennon uudestaan, tällä kertaa virheenä tuli edellisessä tehtävässä konfiguraatioon unohdunut tilafunktio file.managed

unohtunutTila

Poistin tilafunktion tiedostosta init.sls, joka oli polussa /srv/salt/apache/

Success!

7 tilafunktiota suoritettu onnistuneesti, ja todettu idempotenssi.

virtualHostsuccess

Tarkistin vielä minion koneelta:

minioni

oikeudet

Näyttää hyvältä!

g) Vapaaehtoinen, haastava: PostgreSQL. Asenna PostgreSQL-tietokannanhallintajärjestelmä.

Manuaalinen asennus:

$ sudo apt-get -y install postgresql
$ sudo -u postgres createdb $(whoami)
$ sudo -u postgres createuser $(whoami)

$ psql

SQL

=> CREATE TABLE students (id SERIAL PRIMARY KEY, name VARCHAR(200));
=> INSERT INTO students(name) VALUES ('student_name');
=> \d
=> \d students

manualPostgre.png

$ sudo apt purge postgresql

Automaattinen asennus:

Tein uuden tiedoston PostgreSQL:lle. /srv/salt/postgres/init.sls

postgresql:
  pkg.installed

sudo salt '*' state.apply postgres

Tehtävä viimeistelty 12.12.2024

postgreinstall.png

postgreInstall&User

postgresqlDB

[7]

Lähteet

  1. https://terokarvinen.com/palvelinten-hallinta/#h3-demoni
  2. https://terokarvinen.com/2018/pkg-file-service-control-daemons-with-salt-change-ssh-server-port/
  3. https://terokarvinen.com/2018/apache-user-homepages-automatically-salt-package-file-service-example/
  4. https://en.wikipedia.org/wiki/Symbolic_link
  5. https://terokarvinen.com/2018/pkg-file-service-control-daemons-with-salt-change-ssh-server-port/
  6. https://terokarvinen.com/2020/command-line-basics-revisited/?fromSearch=command%20line%20basics%20revisited
  7. https://docs.saltproject.io
    • https://docs.saltproject.io/en/latest/ref/states/all/salt.states.postgres_user.html
    • https://docs.saltproject.io/en/latest/ref/states/all/salt.states.postgres_database.html