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áciudragon1
dragon2.science.upjs.sk
pre aplikáciudragon2
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
uff uff
ufffuff
Pekne zadanie :)
pri masscp je parameter -t povinny ?
Áno, lebo inak sa nevie, kam sa má súbor nakopírovať.