Let them do your bidding for you
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. |
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]
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]
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
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.
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.
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
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.running
varmisti että Apache on käynnissä.
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
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
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!
Päivitys: Lisätty kuva sshd testistä 12.12.2024
Haluan tehdä moduulin joka asentaa VPN ja ottaa se käyttöön.
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ö
Ajoin salt komennon uudestaan, tällä kertaa virheenä tuli edellisessä tehtävässä konfiguraatioon unohdunut tilafunktio file.managed
Poistin tilafunktion tiedostosta init.sls
, joka oli polussa /srv/salt/apache/
Success!
7 tilafunktiota suoritettu onnistuneesti, ja todettu idempotenssi.
Tarkistin vielä minion koneelta:
Näyttää hyvältä!
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
$ 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
[7]