Skip to content

Commit

Permalink
Add admin tasks lab structure
Browse files Browse the repository at this point in the history
Add skeleton contents and introductory section.

Co-authored-by: Razvan Deaconescu <[email protected]>
Signed-off-by: Razvan Deaconescu <[email protected]>
Signed-off-by: Sergiu Weisz <[email protected]>
  • Loading branch information
Sergiu121 and razvand committed Sep 4, 2023
1 parent e20f28e commit 22fa9d9
Show file tree
Hide file tree
Showing 9 changed files with 332 additions and 0 deletions.
29 changes: 29 additions & 0 deletions chapters/task-admin/cron.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
Programarea rulării acțiunilor
==============================

This is a test message

Un workstation, ca oricare alt calculator, necesită mentenanță, cum ar fi crearea de copii de rezervă pentru fișierele importante, sau ștergerea anumitor fișiere jurnal care devin prea mari.
Toate aceste acțiuni sunt acțiuni fixe, repetitive, care nu necesită atenția utilizatorului.
Din acest motiv, putem spune că automatizăm aceste acțiuni astfel încât acestea să ruleze programat la un anumit interval.

Rularea amânată a unei aplicații
--------------------------------

Le vom arăta cum să folosească at ca să programeze o acțiune care poate să
ruleze la un anumit timp o singură dată (care va rula chiar și după un shutdown)

Rularea programată a unei aplicații
-----------------------------------

Le vom arăta ce face cron și le vom explica despre fișierele din /etc/cron.{daily, monthly, hourly, weekly}.

Formatarea acțiunilor amânabile
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Pentru formatare vom folosi fișierele /etc/cron.d/

Realizarea automată a copiilor de rezervă
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Îi vom pune să își facă copii de rezervă fișierelor de configurare din /etc într-un director partajat prin Dropbox.
42 changes: 42 additions & 0 deletions chapters/task-admin/monitor.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
Monitorizarea sistemului
========================

Odată ce am început să rulă servicii pe sistem, vrem să vedem în ce parametri rulează, dacă se comportă cum ne-am aștepta.
Din aceste motive noi monitorizăm serviciile folosind diverse metode, în linie de comandă sau grafice.

Monitorizarea sistemului folosind programe în linia de comandă
--------------------------------------------------------------

Pentru început vom vorbi despre metode simple de monitorizarea sistemului, în cazul în care avem vrem să verificăm atribute de rulare cum ar fi cât de încărcat este serverul în momentul curent.

Monitorizarea aplicațiilor în mod interactiv
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Aici voi face referire la capitolul lui RD despre procese și voi prezenta mai multe despre htop, cum ar fi sortările după atribute.

Monitorizarea folosind onelinere
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Cel mai important de prezentat aici este `uptime`, care afișează media de încărcare sistemului de la distanță.

Voi prezenta `df` și `free`.

Folosirea Grafana
-----------------

Monitorizarea folosind Grafana, sau alte aplicații care prezintă grafice, este faptul că acestea îți dau o imagine de ansamblu a sistemului pe o perioadă îndelungată de timp, astfel poți să studiezi evenimente care s-au întâmplat în trecut.

Un alt avantaj al folosirii Grafana în mod particular este că acesta oferă soluții nu numai pentru monitorizarea sistemului, dar și pentru monitorizarea aplicațiilor care rulează pe sistem.
De exemplu, pentru serverul de Minecraft ne poate arăta numărul de jucători curenți în paralel cu gradul de folosire al rețelei, viteza de scriere pe disk și temperatura procesorului, lucru care ne poate ajuta să diagnosticăm probleme de performanță ale sistemului.

Instalarea unui exporter pentru sistem
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Vizualizarea graficelor
^^^^^^^^^^^^^^^^^^^^^^^

Importarea graficelor
"""""""""""""""""""""

Crearea de grafice proprii
""""""""""""""""""""""""""
61 changes: 61 additions & 0 deletions chapters/task-admin/remote.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
Conectarea la workstation
=========================

Prima problemă cu care ne vom confrunta este conectarea la stație, deoarece, în majoritatea cazurilor, nu vom lucra în aceeași rețea cu sistemul la distanță și stația nu va avea o adresă IP publică, astfel încât să ne putem conecta direct la sistem folosind un protocol de comunicare la distanță, cum ar fi SSH fără să facem pași extra.

Câteva soluții de conectare la sistem pe care le vom aborda sunt:
* VPN
* tunel SSH
* DDNS

<insert demo despre adrese private>

Conectarea prin VPN
-------------------

Prima soluție pentru conectarea la o stație din exterior o reprezintă serviciile de tip VPN.
Acestea conectează două stații care în mod fizic nu sunt conectate la aceeași rețea <TODO ref capitol rețea>

Pentru această soluție avem două moduri de organizare: folosind un server public pe care îl setăm noi drept server de VPN, sau folosirea unui serviciu public de VPN cum ar fi Hamachi sau ZeroTier.

Am folosit ca exemplu serviciile Hamachi sau ZeroTier, deoarece acestea pot fi
folosite fără să fie cumpărate și sunt ușor de configurat.

<insert matrice/link cu avantaje și dezavantaje servicii>

Folosirea serviciului Hamachi
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Pentru început, recomandăm folosirea serviciului Hamachi, deoarece acesta nu presupune înregistrarea unui cont pentru folosirea aplicației, dar Hamachi vine cu dezavantajul că putem să conectăm mai puține stații între ele și viteza conexiunii este mai mică decât dacă am folosii unele servicii plătite, cum ar fi OpenVPN, sau altele.

Instalarea Hamachi
""""""""""""""""""

Vom urmări instrucțiunile de aici:
https://support.logmeininc.com/central/help/how-to-install-the-client-to-a-local-computer-central-t-hamachi-add-attached-local

Crearea unei rețele private
"""""""""""""""""""""""""""

.. code-block::
root@workstation:~$ sudo hamachi create nume-prenume 12345667890
Conectarea la o rețea
"""""""""""""""""""""

.. code-block::
student@uso:~$ sudo hamachi join nume-prenume 12345667890
Folosirea unui VPN privat
^^^^^^^^^^^^^^^^^^^^^^^^^

Le vom da un reminder despre ce înseamnă un VPN privat, hostat de ei și îi vom trimite să vadă instrucțiunile de la laboratorul de networking pentru a își face setupul.

Conectarea folosind un tunel SSH
--------------------------------

Le vom lăsa instrucțiuni despre cum să facă un tunel printr-un server.
Problema aici e că nu știm dacă toți au acces la un server terț prin care să facă ssh.
Le putem arăta un demo didactic, iar la facultate pot să folosească fep, dar ceva practic pentru toți nu există.
47 changes: 47 additions & 0 deletions chapters/task-admin/services-config.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
Configurarea și administrarea serviciilor
=========================================

Scopul serviciilor este să ruleze în continuu și să primească cereri de la aplicații client, cum ar fi un client `ssh` și să răspundă la aceste cereri.
Serviciile sunt aplicații care rulează în continuu pe stație, spre deosebire de comenzi, cum ar fi `find` sau `ls` care rulează cât timp se execută comanda.
Deoarece ne dorim să avem majoritatea timpului conectivitate la mașină, sau ne dorim să avem acces la paginile web folosite, serverele care execută comenzi primite de la clienți rulează fără să se oprească.

Vrem să pornim diversele servicii din sistem care sunt instalate pe propria stație pentru a ne conecta la sistem, pentru a găzdui site-uri web și altele.
Avem nevoie de o interfață unică, cu o sintaxă minimală, care ne poate permite să gestionăm serviciile pe sistem, cum le pornim, oprim și cum putem să generăm noi propriile servicii.

Comanda folosită pentru gestionarea serviciilor este `systemctl`.
Aceasta se regăsește pe majoritatea distribuțiilor moderne de Linux.

Lucrul cu serviciile în Linux
-----------------------------

Inițial ne vom uita la servicii predefinite în Linux.
Vom preciza cum se instalează serviciile predefinite.

Vom verifica starea de funcționare a serviciului SSH, deoarece știu și au auzit deja de el.

Verificarea stării unui serviciu
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Oprirea unui serviciu
^^^^^^^^^^^^^^^^^^^^^

Îi punem să oprească serviciul SSH și testează dacă mai merge SSH-ul

Pornirea unui serviciu
^^^^^^^^^^^^^^^^^^^^^^

Îi punem să pornească serviciul SSH și testează dacă merge SSH-ul.

Repornirea unui serviciu
^^^^^^^^^^^^^^^^^^^^^^^^

Îi pune să schimbe `PermitRootLogin` din fișierul de configurare și îi punem să oprească și să îl repornească, pentru a vedea că opțiunea și-a făcut efectul

Configurarea unui serviciu
^^^^^^^^^^^^^^^^^^^^^^^^^^

Definirea unui serviciu personalizat
------------------------------------

Îi vom pune să își facă singuri un serviciu care face proxy ssh într-un container în care rulează o pagină web care ascultă doar pe localhost.
Vor putea să acceseze acest proxy din browser.
58 changes: 58 additions & 0 deletions chapters/task-admin/services-install.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
Instalarea aplicațiilor (serviciilor) folosind Docker
=====================================================

Scopul acestui capitol este să îi introducem pe studenți în instalarea, folosirea containerelor și în instalarea serviciilor folosind containerele.

Instalarea serviciilor nu este o operație ușoară.
Acestea depind de aplicații și biblioteci care uneori nu sunt disponibile, sau nu există versiunile necesare pentru distribuția noastră.
O altă problemă vine de la faptul că serviciile nu sunt de tipul "plug-and-play", adică nu oferă o configurație simplă care să permită rularea serviciului imediat după instalarea aplicației.

Docker vine ca o soluție pentru această problemă, deoarece acesta ne oferă servicii pre-împachetate cu dependențele pe care le are serviciul respectiv și cu configurările necesare pentru rularea serviciului.
Un alt avantaj al folosirii Docker este că mediul oferit de Docker este unul izolat și efemer, adică o aplicație care rulează în Docker nu are acces în mod obișnuit la restul sistemului, iar orice modificare asupra sistemului de fișiere din Docker nu se va reflecta asupra sistemului.

Folosirea Docker
----------------

În această subsecțiune studenții vor învăța cum să folosească Docker ca să pornească un container, cum să descarce un container, cum să se conecteze la un container.
Nu punem accentul pe crearea containerelor ci pe folosirea lor.

Gestionarea containerelor
^^^^^^^^^^^^^^^^^^^^^^^^^

În această sub-subsecțiune vom prezenta cum să descarce și cum să pornească un container care oferă o pagină web simplă, ca apoi să oprească containerul.

Conectarea la un container
^^^^^^^^^^^^^^^^^^^^^^^^^^

În această sub-subsecțiune vor învăța cum să se conecteze la containerul de la secțiunea anterioară și vor modifica pagina web afișată.

Instalarea serviciilor folosind Docker
--------------------------------------

Cum am prezentat mai devreme, un avantaj al folosirii containerelor este faptul că putem să descărcăm containere care pot rula servicii.
Aceste servicii nu vor mai fi lansate și gestionate de aplicația systemd care rulează pe stația de lucru, deoarece acestea vor rula în cadrul unui container care va gestiona rularea serviciului.
Noi trebuie doar să ne asigurăm ca rulăm containerul folosind opțiunile potrivite.

Identificarea containerelor pe Dockerhub
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Precum aplicațiile obișnuite, și containerele Docker pot fi descărcate dintr-un repository central.
Repository-ul central pentru containere este Dockerhub.
Noi vom folosi site-ul Dockerhub pentru a căuta containere împreună cu instrucțiuni de folosire ale acestora.

Instalarea unui server de minecraft folosind containere
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Își vor instala un server de Minecraft pe PC, pe care îl vor testa folosind TLauncher (nu știu cât de legal e asta, TBD).

Instalarea Grafana folosind containere
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Își vor instala un server de grafana și baza de date pentru acesta.

Extra: Instalarea containerelor personalizate
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Studenții vor descărca un Dockerfile și vor face build acestuia în loc să descarce direct containerul despre net.

Le vom arăta cum să modifice Dockerfile-ul ca să instaleze diverse aplicații.
32 changes: 32 additions & 0 deletions chapters/task-admin/storage.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
Gestionarea spațiului de stocare partajat
=========================================

O componentă importantă a mediului de lucru este spațiul de stocare.
Cu toate că noi vom rula aplicații pe serverul de la distanță, noi avem nevoie de acces la spațiul de stocare al acestuia, deoarece vrem ca într-un final să urmărim rezultatul procesării și eventual să îl analizăm folosind diferite utilitate grafice, cum ar fi aplicații de monitorizare, aplicații de generare de grafice.
O altă nevoie pe care o avem, dacă suntem programatori este editarea codului la distanță, deoarece majoritatea programatorilor folosesc IDE-uri în mediu grafic, care nu pot rula mereu eficient de la distanță.
Soluția la această nevoie este să partajăm spațiul de stocare între serverul de la distanță și laptopul sau stația locală de pe care lucrăm.

Stocare partajată folosind SSHFS
--------------------------------

Le vom face tutorial despre cum să monteze un sistem de fișiere folosind SSHFS și le vom explica că acest mod de lucru nu duce la duplicarea fișierelor.

Stocare partajată folosind aplicații online
-------------------------------------------

SSHFS nu este o soluție bună pentru a face backup fișierelor, deoarece existând o singură replică, ai șters un fișier și au dispărut toate replicile.Pe lângă asta, dacă ai Internet slab, ai acces greu la fișiere (le vrei și local). Și, pe lângă asta, trebuie să ai SSH configurat, care poate necesita tunel etc.

O alternativă pentru acest serviciu sunt soluții cum ar fi GoogleDrive, Dropbox, ownCloud sau OneDrive, care for stoca o replică a fișierului pe toate calculatoarele autentificate de pe un anumit cont.
Avantajul aici este că aceste sisteme oferă suport pentru controlul versiunilor pentru a șterge modificarea anterioară. Cu dezavantajul că trebuie configurate. Și cu dezavantajul că acum informația este duplicată: dublu spațiu ocupat și pot apărea conflicte la modificări.

Stocarea partajată folosind Dropbox
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Dropbox este o soluție care se folosește de un server în Internet care stochează fișierele noastre, ca apoi acestea să fie replicate pe fiecare calculator client.

Îi vom pune să instaleze Dropbox pentru a sincroniza fișierele de pe workstation și mașina locală.

Extra: Stocarea partajată folosind un server privat
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Îi vom pune să instaleze un container cu ownCloud și să îl configureze astfel încât să îl folosească ca o alternativă la Dropbox.
24 changes: 24 additions & 0 deletions chapters/task-admin/usage.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
Folosirea stației la distanță
=============================

Folosirea tmux
--------------

Atunci când ne conectăm la un calculator prin SSH și rulăm comenzi, acestea vor rula în foreground.

Dacă avem o aplicație care rulează mult timp, cum ar fi un find, și coexiunea SSH se întrerupe, se va întrerupe și execuția comenzii find.
Pentru a rezolva această problemă, vom folosi aplicația tmux.

Aceasta ne pornește o sesiune de shell care este independentă de terminalul în care rulează, astfel, putem să ne conectăm și să ne deconectăm de la ea. (nu știu cum o să fac un demo rezonabil cu tmux, dar vedem)

Crearea unei sesiuni tmux
^^^^^^^^^^^^^^^^^^^^^^^^^

Detașarea de la o sesiune tmux
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Reatașarea la o sesiune tmux
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Scenarii de folosire a sistemului la distanță
---------------------------------------------
25 changes: 25 additions & 0 deletions chapters/task-admin/workstation.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
Folosirea unui workstation remote
=================================

Ca dezvoltatori software sau administratori de sisteme, avem nevoie de putere de calcul și spațiu de stocare pentru a ne realiza obiectivele.
Și ne este util să pun accesa sistemele oricând, oricum.

Un avantaj la folosirea unei stații de lucru (*workstation*) la distanță (*remote*) este faptul că este mereu și ușor accesibilă.
Stația nu trebuie să fie oprită, suspendată sau repornită;
dacă ne deplasăm în alt loc, stația va rămâne în continuare accesibilă.
De oriunde am accesa stația, va fi disponibilă în modul "Pickup and Play".

În lista de acțiuni pe care le avem de realizat în calitate de profesioniști IT se găsesc: compilarea programelor, antrenarea modelelor de învățare automată (*machine learning*), testarea la limită (*stress testing*) a aplicațiilor, simularea infrastructurilor complexe folosind mașini virtuale, rularea de servere complexe pentru anumite aplicații.
Toate aceste acțiuni necesită putere calcul mare: procesoare și memorie disponibile.

În mod obișnuit, sistemele care oferă multă putere de calcul nu vin în pachete compacte (precum un notebook), ci acestea sunt sub formă de calculatoare de timp stații de lucru (*workstation*), servere, sau laptopuri grele.

În același timp, nu este un lucru la îndemână pentru toți să lucreze pe astfel de sisteme din considerente de generare de căldură, consum de curent, spațiu la locul de muncă, lipsă de mobilitate a sistemelor.
Astfel, dacă vrem să lucrăm la o problemă care necesită multă putere de calcul, avem nevoie să fim în apropierea unui sistem care ne oferă acestă putere.
Acest lucru nu este mereu posibil, din motive precum faptul că nu ai acces la locul de muncă sau că lucrezi într-un mediu la distanță.

Disponibilitatea unei puteri de calcul mari este încă un avantaj pentru accesul la o stație de lucru la distanță.
O altă abordare pentru a folosi un workstation este să obținem o mașină virtuală într-un cloud, cum ar fi `Amazon Web Services <https://aws.amazon.com/>`_ sau `Microsoft Azure <https://azure.microsoft.com/>`_.

În acest capitol prezentăm situația lucrului pe o stație la distanță.
Cum putem să ne adaptăm modul de lucru pentru a folosi sisteme la care nu avem acces fizic și cum putem să monitorizăm și să folosim cât mai bine aceste sisteme.
14 changes: 14 additions & 0 deletions index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,20 @@ USO lab book
chapters/improve-cli/improve-shell.rst
chapters/improve-cli/term-multiplexing.rst

.. toctree::
:numbered:
:maxdepth: 3
:caption: Planificarea sarcinilor administrative

chapters/task-admin/workstation.rst
chapters/task-admin/remote.rst
chapters/task-admin/usage.rst
chapters/task-admin/storage.rst
chapters/task-admin/services-config.rst
chapters/task-admin/services-install.rst
chapters/task-admin/monitor.rst
chapters/task-admin/cron.rst


Indices and tables
==================
Expand Down

0 comments on commit 22fa9d9

Please sign in to comment.