Esperienza di un repository basato su CVS |
|
|
|
Per la realizzazione di questo modulo useremo
Netkit4TIC
con la
connettività
con la rete reale (leggere il file README).
La configurazione (4KB)
che andremo a provare consiste nella costruzione
di un repository centrale e di un nodo generico per
la simulazione dell'utilizzo del repository da parte degli utenti
collegati in rete. Quindi lo
scenario virtuale sarà composto da un nodo server repository, sede
del repository, e da un nodo client node come postazione esempio
per l'utilizzo del repository. A tale scopo è possibile
utilizzare lo stesso nodo reale.
In generale i comandi per manipolare il repository hanno una forma per
esteso che non prevede l'uso di variabili d'ambiente e una
forma più sintetica che usa le varibili CVSROOT
e CVS_RSH. Noi useremo quest'ultima forma.
Per prima cosa occorre aggiungere nel nodo server l'utenza.
Per questioni di protezione delle directory l'utenza appartiene
allo stesso gruppo che dovrà avere diritti di lettura
e scrittura sul repository.
Nel nostro esempio sono stati costruiti i due utenti
caio e tizio e il gruppo cvsgrp.
Decidiamo il path dove vogliamo radicare
il repository, ad esempio /mnt/repository e inizializziamo
il repository:
repository# export CVSROOT=/mnt/repository repository# cvs init
Ora attiviamo il servizio ssh per dare connettività di rete al repository:
repository# /etc/init.d/ssh start
Tutti questi passi sono fatti automagicamente dallo lancio dello script:
realHost$ ./lab start
Sperimentazione |
|
Selezioniamo il nodo node e ci autentichiamo
come utente prg (password not24get):
node login: prg
Password: not24get
Generiamo una coppia di chiavi per l'accesso SSH e trasferiamo la chiave pubblica nell'host server (con IP 192.168.50.2) e dando "invio" alla richiesta di password nel comando ssh-keygen:
node$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/prg/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/prg/.ssh/id_dsa. Your public key has been saved in /home/prg/.ssh/id_dsa.pub. The key fingerprint is: 69:0a:2d:e8:bd:84:4e:40:5e:a0:89:52:e6:b9:80:f3 prg@node node$ scp ~/.ssh/id_dsa.pub \ tizio@192.168.50.2:/home/tizio/.ssh/authorized_keys2 The authenticity of host '192.168.50.2 (192.168.50.2)' can't be established. RSA key fingerprint is c8:f2:e3:b3:02:2f:56:31:db:4b:83:1e:c7:8f:c9:9b. Are you sure you want to continue connecting (yes/no)?yes Warning: Permanently added '192.168.50.2' (RSA) to the list of known hosts. Password:not24get id_dsa.pub 100% 601 0.6KB/s 00:00
Ora occorre impostare le variabili d'ambiente:
node$ export CVSROOT=:ext:tizio@192.168.50.2:/mnt/repository node$ export CVS_RSH=ssh
Siamo operativi! Facciamo subito una prova. Ci costruiamo
una directory dove supponiamo abbiamo i file da inserire nel
repository. Nel nostro caso abbiamo la directory test
con all'interno il solo file apache2. Dall'interno
della directory diamo il comando di inserimento nel repository
della cartella corrente:
node$ cd test node$ cvs import -m "First Test" test vtag rtag
Il comando inserisce nel repository una directory test
e ci inserisce tutti i file presenti nella directory corrente.
I file vengono marcati con vendor tag vtag
e release tag rtag.
Ora possiamo costruire la "sandbox". Costruiamo
una directory sb e diamo il comando di checkout:
node$ mkdir ~/sb
node$ cd ~/sb
node$ cvs checkout test
cvs checkout: Updating test
U test/apache2
Simuliamo una modifica (sostituendo uno 0 con un 1) e verifichiamo:
node$ mcedit test/apache2 node$ cvs diff test/apache2 Index: test/apache2 =================================================================== RCS file: /mnt/repository/test/lab,v retrieving revision 1.1.1.1 diff -r1.1.1.1 apache2 2c2 < NO_START=0 --- > NO_START=1
per riportare le modifiche sul repository:
node$ cvs commit -m "magics" test/apache2
/mnt/repository/test/apache2,v <-- test/apache2
new revision: 1.2; previous revision: 1.1
Installando i pacchetti cvsweb o viewcvs
è possibile navigare il repository
(ScreenShot)
utilizzando un
browser:
realHost$ firefox http://192.168.77.2/cgi-bin/cvsweb.cgi realHost$ firefox http://192.168.77.2/cgi-bin/viewcvs.cgi
Esempio di applicazione: la storyboard |
|
Come esempio di applicazione ed utilizzo del repository utilizzeremo il metodo che ho usato nella realtà quando sono stato incaricato di installare software o apparati di rete. In pratica ho utilizzato in prima istanza un foglio di carta in cui venivano descritte le operazioni che venivano fatte e poi salvavo da qualche parte i file di configurazione. Questo metodo quando viene informatizzato si trasforma in pagine Web protette da password e cifrate dove sono trascritte le operazioni effettuate e da dove si può comandare il download dei file. Questi appunti li ho in seguito chiamati storyboard.
Purtroppo, per ragioni di sicurezza, non possiamo mostrare il "vero" repository e mostriamo solo un esempio non reale. Vedremo un breve storyboard di una installazione di apache2.
Configuriamo apt in modo che faccia riferimento
ai repository ufficiali Debian e che
il database interno sia up to date:
vm# apt-get update
In seguito diamo il comando di installazione del pacchetto
apache2:
vm# apt-get install apache2 Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: apache2-common apache2-mpm-worker Suggested packages: apache2-doc The following NEW packages will be installed: apache2 apache2-common apache2-mpm-worker 0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. Need to get 1035kB of archives. After unpacking 2490kB of additional disk space will be used. Do you want to continue? [Y/n]Y Get:1 http://http.us.debian.org sarge/main apache2-common 2.0.53-5 [798kB] Get:2 http://http.us.debian.org sarge/main apache2-mpm-worker 2.0.53-5 [204kB] Get:3 http://http.us.debian.org sarge/main apache2 2.0.53-5 [32.4kB] Fetched 1035kB in 16s (62.4kB/s) Selecting previously deselected package apache2-common. (Reading database ... 32261 files and directories currently installed.) Unpacking apache2-common (from .../apache2-common_2.0.53-5_i386.deb) ... Selecting previously deselected package apache2-mpm-worker. Unpacking apache2-mpm-worker (from .../apache2-mpm-worker_2.0.53-5_i386.deb) ... Selecting previously deselected package apache2. Unpacking apache2 (from .../apache2_2.0.53-5_i386.deb) ... Setting up apache2-common (2.0.53-5) ... Setting Apache2 not to start, as something else appears to be using Port 80. To allow apache2 to start, set NO_START to 0 in /etc/default/apache2. Apache2 has been set to listen on port 80 by default, so please edit /etc/apache2/ports.conf as desired. Note that the Port directive no longer works. Module userdir installed; run /etc/init.d/apache2 force-reload to enable. Setting up apache2-mpm-worker (2.0.53-5) ... Not starting apache2 - edit /etc/default/apache2 and change NO_START to be 0. Setting up apache2 (2.0.53-5) ...
Ora disattiviamo apache:
repository:~# /etc/init.d/apache stop Stopping web server: apache.
utilizziamo il file di configurazione nel CVS /etc/default/apache2 con "NO START" a 1.
repository# cp apache2 /etc/default/apache2 repository# /etc/init.d/apache2 start
Non differisce davvero dalla classica pagina del laboratorio virtuale, vero? In effetti spesso il mondo virtuale è lo storyboard di ...
|
|
Sandro Doro (email me)