Manpremo

From ICO wiki

REFERAAT ON VEEL POOLELI JA TÄIENEB JOOKSVALT!!!!

Manpremo on kaughaldus süsteem, mis on loodud selleks, et süsteemi administraatorid saaksid keskselt hallata paljusid arvuteid kiirelt ja mugavalt. Seda rakendust arendab Eesti firma Povi Software OÜ. Manpremo on vabavaraline ja avatud lähtekoodiga. Tarkvara loomisel on põhiliselt kasutatud Pythonit. Serveri poole loomiseks on kasutatud lahtise lähtekoodiga võrguraamistikku nimega Django. Kliendi pool on kirjutatud Pythonis. Manpremo projekt on hetkel veel varajases arengu staadiumis, kuid on kasutatav Linux põhiste süsteemide administreerimisel.

Praegune Manpremo stabiilne versioon on 0.2.

Põhilised omadused

  • Veebi põhine kasutajaliides laseb arvuteid hallata olenemata asukohast spetsiaalset tarkvara paigaldamata. Liides töötab korralikult kõikide peamiste veebilehitsejatega.
  • Jõuline kasutajaõiguste kontroll annab täieliku kontrolli selle üle, mida kasutajad teha saavad. Näiteks võib neil keelata muude käskude jooksutamise peale nende, mis süsteemi administraator on lubanud, anda ligipääs ainult teatud arvutitele ja palju muud.
  • Mitme operatsiooni süsteemi tugi laseb hallata Linuxi, Windowsi ja Mac OS X põhiseid arvutied ühe süsteemiga. Käskluseid võib teisendada operatsiooni süsteemide vahel, lastes administraatoril kasutada samu käsklusi kõikides erinevates süsteemides.
  • Lihtne kasutada nii administraatorite kui ka kasutajate poolel. Administraator võib telegeerida ülesandeid kasutajatele ilma, et nemad peaks õppima keerulisi käsklusi kirjutama.
  • Turvaline platvorm tagab selle, et kliendi ja serveri vahelist suhtlust ei saa pealt kuulata ega muuta.

Vajalikud mõisted, teadmised ja tarkvara

Selleks, et järgnevat oleks võimalik järgida seletan lahti mõned mõisted ja panen kirja vajalikud teadmised ja tarkvara.

Mõisted (lähtudes käesoleva referaadi teemast)

  • Server on arvuti, kuhu on paigaldatud Manpremo server.
  • Klient on arvuti, kuhu on paigaldatud Manpremo kliendi poolne tarkvara.
  • Development server on Manpremo server, mis on eelkõige mõeldud testimiseks ja arendamiseks.
  • Production server on Manpremo server, mis on mõeldud töös oleva arvutivõrgu haldamiseks. See server kasutab serveri ja klientide vahelise ühenduse turvamiseks SSL krüpteerimist.

Teadmised/Tarkvara

Mina kasutasin server paigaldamiseks Ubuntu 10.10 Maverick versiooni. Manpremo loojad ise on testinud paigaldamist Debian Squeeze peal. Nende sõnul peaks paigaldamine õnnestuma Ubuntu ja sarnaste operatsioonisüsteemide peal.

Selleks, et paigaldada Manpremo peab olemas olema järgnev:

  • Django - Serveri veebiliides
  • Gettext - Serveri veebiliides
  • stunnel (valikuline) - Turvalisus
  • Mercurial - Manpremo koodi saamiseks
  • Python - Manpremo on kirjutatud Pythonis

Kõide vajaminevate pakettide paigaldamiseks võib kasutada järgnevat käsurea käsklust:

sudo apt-get install python-django gettext stunnel4 mercurial python-tz

Manpremo serverite paigaldamine

Järgnevalt käin läbi erinevate Manpremo serverite paigladamise. Mina kasutasin serverite paigaldamisel operatsioonisüsteemi Ubuntu 10.10. Kõik juhised ja käsud lähtuvad antud operatsioonisüsteemist. Vigade tekkimise korral kontrollida, et kõik ülesse loetud paketid on korralikult arvutisse paigaldatud. Enne kui paigaldama hakata, tuleks läbi mõelda kumba versiooni soovitakse kasutada. Development serveri peale ei õnnestu ilma suuremate jamadeta paigaldada production serverit seega tuleks enne ära otsustada.

Manpremo Development Serveri paigaldamine

Töö alustamiseks avada Terminal. (Applications > Accessories > Terminal).

Kõige viimase Manpremo versiooni kloonimine:

hg clone http://manpremo.org/hg/manpremo/

Manpremo kataloogi sisenemine ja viimase versiooni valimine:

cd manpremo/
hg up default

Andmebaasi intialiseerimine:

cd pyserver/
./manage.py syncdb
./manage.py createcachetable cache_manpremo_ccs

Serveri käivitamine:

./manage.py runserver

Kui server käivitus (konsooli ekraanile ilmub kinnitus teade), on serveri veebillides kätte saadav aadressilt 127.0.0.1:8000.

Production serveri paigaldamine

Töö alustamiseks avada Terminal. (Applications > Accessories > Terminal).

Kõige viimase Manpremo versiooni kloonimine ja selle paigutamine /srv/manpremo kataloogi:

hg clone http://manpremo.org/hg/manpremo/
cd manpremo/
hg up stable-0.2
cd
sudo mv manpremo /srv/

Manpremo andmebaasi jaoks vajalike pakettide paigaldamine:

sudo apt-get install postgresql python-psycopg2

(Vaikimisi kasutatakse PostgreSQL andmebaasi. Django dokumentatsioon annab ülevaate võimalikest alternatiividest.)

Andmebaasi ja kasutaja loomine:

sudo -u postgres psql
CREATE DATABASE manpremo;
CREATE USER manpremo; //Või sisesta omal valikul mõni kasutajatunnus.
ALTER USER manpremo WITH ENCRYPTED PASSWORD 'notsecure'; //Või sisesta omal valikul mõni parool.
GRANT ALL PRIVILEGES ON DATABASE manpremo TO manpremo;
\q

Andmebaasi seadistamine:

sudo gedit /srv/manpremo/pyserver/settings.py

(Mina kasutasin gedit tööriista. Võib asendada ka muude alternatiividega nagu näiteks nano.)

Avanenud aknas otsida järgnevad väljad ja muuta ringi vasvalt juhisele:

DATABASE_ENGINE = 'postgresql_psycopg2'
DATABASE_NAME = 'manpremo'
DATABASE_USER = 'manpremo' //Kui valisite enne mingi muu kasutajatunnuse, sisestada see siia.
DATABASE_PASSWORD = 'notsecure' //Kui valisite enne mingi muu parooli, sisestada see siia.
DATABASE_HOST = 'localhost' # Use TCP socket, not local UNIX domain socket
DATABASE_PORT = 
CACHE_BACKEND = 'db://cache_manpremo_ccs'

Andmebaasi initiliseerimine:

cd /srv/manpremo/pyserver
./manage.py syncdb //Käsu jooksutamisel lastakse luua "super" kasutaja, kui seda veel ei ole.
./manage.py createcachetable cache_manpremo_ccs

Süsteemi kasutaja loomine andmebaasi jaoks:

sudo useradd manpremo
sudo mkdir -p /srv/manpremo/pyserver/data
sudo chown manpremo:manpremo -R /srv/manpremo/pyserver/data

Apache veebiserveri jaoks vajalike pakettide paigaldamine:

sudo apt-get install apache2-mpm-prefork libapache2-mod-python libapache2-mod-wsgi

Serveri jaoks võtmete loomine:

sudo mkdir /etc/apache2/ssl
sudo openssl req -new -x509 -nodes -out /etc/apache2/ssl/manpremo.crt -keyout /etc/apache2/ssl/manpremo.key //Käsu jooksutamisel küsitakse sertifikaadi loomiseks erinevat informatsiooni.
                                                                                                            //Väljale CN(Common Name) sisestada serveri IP aadress või URL.
sudo chmod 600 -R /etc/apache2/ssl
sudo chown root:root -R /etc/apache2/ssl

Apache seadistus faili loomine:

sudo touch /etc/apache2/sites-enabled/manpremo
sudo gedit /etc/apache2/sites-enabled/manpremo

Avanenud aknasse kopeerida järgnev tekst ja see salvestada:

WSGIRestrictStdout Off
<VirtualHost *:80>
        # Redirect from HTTP to HTTPS:
        RewriteEngine On
        RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        WSGIScriptAlias / /srv/manpremo/pyserver/manpremo.wsgi
        WSGIDaemonProcess manpremo user=manpremo group=manpremo
        WSGIProcessGroup manpremo
        Alias /media "/srv/manpremo/pyserver/media
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/manpremo.crt
        SSLCertificateKeyFile /etc/apache2/ssl/manpremo.key
</VirtualHost>

SSL-i aktiveerimine ja moodulite ülekirjutamine:

sudo a2enmod ssl rewrite

Apache veebiserveri restart:

sudo apache2ctl restart

Kui kõik sammud said õigesti ja edukalt läbitud, peaks saama aadressilt https://localhost/ siseneda Manpremo veebiliidesesse käsu ./manage.py syncdb ajal sisestatud kasutajatunnustega. Kui sellel aadressil pärast sertifikaadi laadimist kuvatakse Internal Server Error 500, sisestada terminali järgmine käsk ja uurida viimaseid ridu vea põhjuse leidmiseks:

gedit /var/log/apache2/error.log

Manpremo klientide paigaldamine ja registreerimine

Järgnevalt käin läbi Manpremo klientide paigladamise ja registreerimise. Hetkel on võimalik kasutada Linuxi ja Windowsi operatsioonisüsteeme klientideks.

Linuxi kliendi paigaldamine kasutades Mercuriali

Mercuriali ja Pythoni paigaldamine:

sudo apt-get install mercurial tortoisehg python-setuptools

Manpremo koodi allalaadimine:

hg clone http://manpremo.org/hg/manpremo/
cd manpremo

Setup.py skripti kasutamine paigaldamiseks:

sudo ./setup.py install

Linuxi kliendi paigaldamine Debiani paketti ehitades

Mercuriali, Debiani tööriistade ja Pythoni paigaldamine:

sudo apt-get install mercurial tortoisehg python-setuptools devscripts debhelper

Manpremo koodi allalaadimine:

hg clone http://manpremo.org/hg/manpremo/
cd manpremo

Kliendi paketti ehitamine:

sudo ./build-clientpkg.sh

Kui eelmine skript lõpetas töö edukalt. Jooksutada seda korra uuesti. Kui teisel korral on kõik korras:

cd .. && cd /srv/manpremo/ba

Kontrollida, kas selles kaustas asub (ls -l) fail nimega manpremo-client_0.2~<mingi number>_all.deb. Kui asub siis:

sudo dpkg -i manpremo-client_0.2~<mingi number>_all.deb

Pärast seda teha arvutile restart. Käsurealt käsklusega:

sudo reboot

Kui kõik läks edukalt, peaksid olema tekkinud järgmised kaustad ja failid:

/etc/manpremo
/etc/manpremo/certs
/etc/manpremo/manpremo.conf
/etc/manpremo/certs/servers.crt

Linuxi kliendi registreerimine

Kui kliendi osa sai eduaklt paigaldatud, saab kliendi nüüd registreerida, et see oleks näha Manpremo veebiliideses.

Sertifikaat

Serveri sertifikaadi hankimine külastades Manpremo serveri veebiliidest aadressil https://localhost
Firefox: Add Exception... > Get Certificate > View > Details > Export > Save to file.
IE: Continue to this website > Right click > Properties > Certificates > Details > Copy to file
Chrome: Vajuta aadressi ribal asuvale hoiatusmärgile > Certificate Information -> Details Tab -> Copy to file

Kopeeri loodud faili sisu ja lisa see faili /etc/manpremo/certs/servers.crt

Registreerimine

Registreerimise võtme saamise kohta lugeda Registration Keys lõigu alt.

Production serverisse kliendi registreerimine:

sudo manpremo-register --registration-key REGISTREERIMISE_VÕTI --client-name KLIENDI_NIMI --server manpremo.com --port 443

Development serverisse kliendi registreerimine ilma ssl-ita:

sudo manpremo-register --registration-key REGISTREERIMISE_VÕTI --client-name KLIENDI_NIMI --server localhost --port 8000 --insecure

Selleks, et kindel olla, et klient kasutab turvamata versiooni, lisa

insecure = true

faili /etc/manpremo/manpremo.conf

Kui ei soovi lisada kliendile kindlat nime, võib ära jätta --client-name KLIENDI_NIMI osa. Siis kasutatakse registreerimisel arvuti nime.

Kui kliendi juures näidatakse teadet "client has never been seen" võib see tähendada, et Manpremo daemon ei tööta. Kliendi arvutis sisestada järgmine käsklus:

sudo manpremo-daemon

Selleks, et Manpremo daemon hakkaks tööle operatsioonisüsteemi alglaadimisel, tuleb lisada antud käsklus alglaadimisel käimaminevasse skripti. Selleks:

cd /etc/init.d
sudo touch manpremo
sudo nano manpremo

Avanenud aknasse kirjutada:

sudo manpremo-daemon

Manpremo veebiliidese ülevaade

Sisselogimine ja kasutajate registreerimine

Manpremo sisselogimise aken

Kui kasutaja külastab Manpremo serveri veebiliidese lehte esimene kord, avaneb talle selline vaade. Seal on võimalik kasutajal valida keel, mida ta soovib kasutada. Käesoleva ülevaate keelevalik on inglise keel. Veel on võimalik lugeda Manpremo kohta täpsemalt vajutades vastavale lingile. Client software taga peitub nimekiri kliendile vajaminevatest paketidest või tarkvarast.

Kasutaja registreerimine

Kasutaja registreerimiseks tuleb vajutada lingile Register. Siis avaneb kasutajale järgmine leht. Korrektsete andmete sisestamisel ja nupule Register vajutades, küsitakse kasutaja kohta veel täpsustavaid andmeid, millede kinnitamisel kuvatakse Manpremo serveri peavaadet või siis -menüüd.

Peavaade

Peamenüü näeb välja selline. Kõik menüü osad on ringi liigutatavad, suletavad ja minimiseeritavad. Kinni pandud osa võib hiljem ka tagasi panna kasutades Add portlet linki.

Organizational Units

Selle funktsiooni eesmärk on pakkuda administraatoritele võimalus jagada oma kasutatavad seadmed ning kliendid organisatsiooniliselt ära. Iga Organizational Uniti (OU) kohta on võimalik lisada nimi, kirjeldus ja vajaduse korral ülem (parent) OU. Organizational Uniti vaade näeb välja selline ja lisamise vaade selline.

Hiljem on võimalik iga OU infot ja ülem OU-d muuta. Lisaks on olemas logi, kus on näha kõik sündmused, mis on vastava OU-ga seotud. Igale OU-le on võimalik lisada kasutajaid ja nendele jagada õiguseid rollipõhiselt. Kokku on 5 erinevat rolli. Rollide lisamise vaade näeb välja selline ja logide vaade selline.

Registration Keys

Registreerimisvõtmed on loodud selleks, et lubatud arvutid saaksid loodud Manpremo serveriga liituda. Registreerimisvõtmete loomise puhul tuleb lisada võtmele nimi, kirjeldus ei ole kohustuslik. Veel tuleb märkida ära võtme kehtivusaja alg- ja lõppkuupäev ning kasutajate arv, kes antud võtmega saab end registreerida. Võimalik on ka lisada OU, kuhu selle võtmega ennast registreeritakse, kuid selle lisamine ei ole kohustuslik. Hiljem tuleb lihtsalt käsitsi kliendid ringi paigutada. Võtmete loomise vaade näev välja selline.

Clients

Kasutatud kirjandus

Manpremo Wiki

Autor

Henrik Leinola A22