Seminár z OSS: alternatívne zadanie

Seminár z OSS: alternatívne zadanie pre tých, ktorí nestihli alebo nedokázali obhájiť regulárne zadanie.

Zadanie je potrebné zaslať mailom do piatka 15. 2. 2012 do 11:00.

Zadanie bude treba obhájiť osobne, predpokladaný termín je 15. 2. 2012 11:00.

Vypracované zadanie musí spĺňať všetky požiadavky. Hodnotenie bude závisieť od prístupu k realizácii a spôsobu implementácie.

Zadanie musí byť vypracované samostatne, akékoľvek náznaky plagiátorstva sa bude hodnotiť automatickým hodnotením FX. V prípade, že využijete zdrojový kód / rady z blogov, uveďte v komentári konkrétny zdroj, z ktorého pochádza inšpirácia.

Text zadania

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

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

Počet adresárov webaplikácií 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ždej webaplikácie, resp. do vybraných aplikácií:

Príklad (skopírovanie web.xml do každej webaplikácie, do podadresára WEB-INF):

masscp web.xml -t WEB-INF

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

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 aplikácií):

masscp *.xml -t WEB-INF

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

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

Mazanie súborov

Vymaže súbor či adresár z vybranej aplikácie, či aplikácií; voliteľne zo všetkých:

Príklad (vymazanie web.xml z každej webaplikácie):

massrm WEB-INF/web.xml

Príklad (vymazanie web.xml z vybraných aplikácií ):

massrm WEB-INF/web.xml -A dragon1,dragon5

Zaveďte tiež podporu pre hromadné mazanie podľa masky, resp. pre mazanie celých neprázdnych adresárov.

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

Jednotlivé aplikácie 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álna vzorová webaplikácia. Názov jej aplikačného adresára končí na -template. 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álna vzorová webaplikácia obsahuje v adresári súbory s definíciami hodnôt premenných, ktoré sa dosadia za premenné v šablónových premenných.

Príklad pre /opt/dragon-template 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ónovej aplikácie 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

3 thoughts on “Seminár z OSS: alternatívne zadanie

Pridaj komentár

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