Seminár k operačným systémom: záverečné zadania

Spoločné vlastnosti

  • Termín odovzdania je začiatkom februára 2017. Termín bude upresnený.
  • Vypracujte obe zadania.
  • Zadanie spokojne vzájomne konzultujte. Vypracovanie však musí byť samostatné a jednoznačné.
  • Plagiátorstvo a identický kód je trestaný okamžitým hodnotením FX.
  • Ak využijete kusy kódu alebo rady z internetu, ste povinní uviesť do zdrojového kódu odkaz na zdroj (URL blogu, odkaz na StackOverflow a pod.) Chýbajúci zdroj je považovaný za plagiátorstvo.
  • Zadanie bude obhájené individuálne a ústne v termín uvedený vyššie.
  • Zadanie musí implementovať celú požadovanú funkcionalitu. Vynechanie ktoréhokoľvek bodu má za následok zamietnutie zadania. Hodnotenie sa odvíja od spôsobu implementácie zadania a od odpovedí na kontrolné otázky zamerané na pochopenie vypracovania.

PowerShell: Správa balíčkov

Vytvorte jednoduchý balíčkovací správca, teda nástroj, ktorý uľahčí sťahovanie a inštaláciu softvéru do operačného systému.

Balíčkovací správca musí obsahovať nasledovné vlastnosti:

  • získať zoznam dostupných balíčkov zo servera
  • inštalácia balíčka podľa mena

Architektúra

Balíčkovací správca pozostáva zo serverovskej a klientskej časti. Serverovská časť reprezentuje vzdialené úložisko (repozitár) dostupných balíčkov. Klientska strana predstavuje koncový počítač, na ktorý bude inštalovaný softvér.

 Balíčky

Metadáta balíčka predstavuje jednoduchý súbor s nasledovným obsahom:

  • kódové označenie balíčka, bez diakritiky. Príklad: total-commander alebo mysql
  • celý názov programu. Príklad: Total Commander alebo MySQL
  • URL adresa inštalačného súboru, napr. http://tcmd900.s3.amazonaws.com/tcmd900x32.exe
  • textový popis balíčka obsahujúci viacvetný popis balíčka

Serverovská časť

Serverovskú časť implementujte ľubovoľným, čo najjednoduchším spôsobom. Server má len dve úlohy:

  • poskytnúť zoznam dostupných balíčkov
  • vrátiť metadáta balíčka na základe kódového označenia

Serverovská časť môže byť statická, nežiada sa pridávanie balíčkov na server. Server môže pokojne zverejňovať balíčky cez HTTP, kde metadáta balíčka budú vo formáte CSV alebo XML alebo JSON uložené napevno na serveri student.ics.upjs.sk vo vašom domovskom adresári. Zvoľte formát, ktorý sa bude dať ľahko spracovávať v klientskej časti. Implementácia servera sa nebude hodnotiť.

Klientska časť

Implementujte sadu skriptov v PowerShelli, ktorá dokáže:

  1. zobraziť zoznam balíčkov na serveri. Vypisujte kódové označenia balíčka a ich celé názvy.

    pm.ps1 list
    
    total-commander "A two-pane file manager similar to Total Commander"
    mysql               "A MySQL server"
    http                "An Apache HTTP server"
    
  2. zistiť informácie o konkrétnom balíčku na základe jeho kódového označenia

    pm.ps1 info total-commander
    
    Total Commander (total-commander)
    ---------------------------------
    A two-pane file manager similar to Total Commander
    
    Download from http://tcmd900.s3.amazonaws.com/tcmd900x32.exe
    
  3. nainštalovať konkrétny balíček na základe jeho kódového označenia. Skript stiahne inštalačný súbor z URL určenej v metadátach balíčka a spustí ho. Samotný proces inštalácie, ktorá je obvykle grafická, ponechajte na používateľa a neriešte ho.

    pm.p1 install total-commander
    
    Downloading from http://tcmd900.s3.amazonaws.com/tcmd900x32.exe
    Running setup from tcmd900x32.exe
    

Shell scription: správa inštalácií

V adresári súborového systému sa nachádza n podadresárov, ktoré zodpovedajú n nasadeným službám (tzv. adresáre deploymentov).

Jednotlivé adresáre deploymentov majú v zásade identickú štruktúru a môžu obsahovať ľubovoľné množstvo súborov a podadresárov.

Počet adresárov deploymentov môže byť ľubovoľný — nie je vylúčené nasadenie cca. 20 inštancií.

Príklad adresárovej štruktúry:

+ /opt
    + dragon1
        + WEB-INF
            + lib
            + classes
            web.xml
    + dragon2
        + WEB-INF
            + lib
            + classes
            web.xml
    + dragon3
        + WEB-INF
            + lib
            + classes
            web.xml

Vytvorte sadu skriptov, ktorá bude predstavovať administrátorovu pomoc pri hromadnej správe súborov.

Nadradený adresár môže byť ľubovoľný. Projektové káže používať /opt, ale nie je vylúčené umiestnenie aj v inom adresári.

Rozkopírovanie súborov

Rozkopírovanie jedného či viacerých súborov do každého deploymentu, resp. do vybraných aplikácií:

Príklad (skopírovanie web.xml do každého deploymentu, do podadresára WEB-INF):

masscp web.xml -t WEB-INF

Príklad (skopírovanie web.xml do dvoch určených deploymentov):

masscp web.xml -t WEB-INF -A dragon1,dragon5

Príklad (hromadné skopírovanie všetkých XML súborov spĺňajúcich masku do všetkých deploymentov):

masscp *.xml -t WEB-INF

Príklad (hromadné skopírovanie všetkých XML súborov do dvoch určených deploymentov):

masscp *.xml -t WEB-INF -A dragon1,dragon5

Manažment konfiguračných šablón

Jednotlivé deploymenty v sebe nesú konfiguračné súbory .xml, .properties, .json, .yaml. Sú prakticky identické, líšia sa niektorými špecifickými hodnotami.

Príklad pre /opt/dragon1/WEB-INF/classes/db.json:

{ "hostname" : "dragon1.science.upjs.sk" }

Príklad pre /opt/dragon2/WEB-INF/classes/db.json:

{ "hostname" : "dragon2.science.upjs.sk" }  

Na tento účel je ustanovený špeciálny vzorový adresár deploymentu. Má názov končiaci sa na -template a obsahuje len šablónové súbory obsahujúce premenné v tvare ${...}, ktoré sa neskôr nahradia skutočnými hodnotami.

Súbor /opt/dragon-template/WEB-INF/classes/db.json:

{ "hostname" : "${db.host.name}" }

Tento súbor obsahuje jednu premennú ${db.host.name}.

Nahrádzanie obsahov premenných

Špeciálny vzorový adresár deploymentu obsahuje v adresári súbory s definíciami hodnôt premenných, ktoré sa dosadia za premenné v šablónových premenných.

Ako príklad si predstavme šabĺónový adresár deploymentu dragon-template v adresári /opt/dragon-template, ktorý obsahuje tri súbory:

  • /opt/dragon-template/dragon1.variables
  • /opt/dragon-template/dragon2.variables
  • /opt/dragon-template/dragon5.variables

Súbor dragon1.variables vyzerá nasledovne:

db.host.name=dragon1.science.upjs.sk
default.user=root

Iný súbor dragon2.variables vyzerá nasledovne:

db.host.name=dragon5.science.upjs.sk
default.user=novotnyr

Skripty

Vytvorte skript, ktorý skopíruje súbory zo šablónového adresára deploymentu do vybranej reálnej aplikácie, pričom vyhodnotí obsahy premenných:

templatecp -A dragon1,dragon2

Vyššie uvedený príkaz skopíruje všetky šablónové súbory do príslušných aplikácií dragon1, dragon2 a vyhodnotí obsahy premenných na základe špecifikácií v príslušných .variables súboroch.

V prípade súboru /opt/dragon-template/WEB-INF/classes/db.json sa nahradí obsah premennej db.host.name hodnotou:

  • dragon1.science.upjs.sk pre aplikáciu dragon1
  • dragon2.science.upjs.sk pre aplikáciu dragon2

Nasledovný príkaz skopíruje všetky šablónové súbory do vybraných aplikácií:

templatecp -A dragon1,dragon2

Nasledovný príkaz skopíruje všetky šablónové súbory do všetkých aplikácií:

templatecp

Nasledovný príkaz skopíruje jeden šablónový súbor do všetkých aplikácií:

templatecp WEB-INF/classes/db.json

Nasledovný príkaz skopíruje jeden šablónový súbor do všetkých aplikácií:

templatecp WEB-INF/classes/db.json -A dragon1,dragon2   

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *