Differences between revisions 3 and 4
Revision 3 as of 2009-09-21 11:06:01
Size: 2574
Editor: lukisi
Comment:
Revision 4 as of 2009-09-29 15:25:50
Size: 4846
Editor: lukisi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 15: Line 15:
== Funzioni helper ==

Alcune operazioni sono state implementate come ''funzioni'' bash, negli script '''~+{{{host_utils.bash}}}+~''' e '''~+{{{service.bash}}}+~'''.

Il primo è utile per programmare le operazioni che deve svolgere il laboratorio nel suo insieme.
<<BR>>
Per implementare un laboratorio si crea una script (di norma in una directory vuota) il cui compito è quello di avviare un certo numero di macchine virtuali.
<<BR>>
In tale script si può importare (con il comando {{{source}}} o {{{.}}}) lo script '''~+{{{host_utils.bash}}}+~''' che definisce alcune funzioni utili alla macchina host.

Il secondo è utile per programmare le operazioni che deve svolgere una singola macchina virtuale.
<<BR>>
Di solito ogni macchina virtuale si avvia specificando uno script da eseguire al suo interno come "''boot''". Lo script può risiedere anche all'esterno della macchina virtuale, ad esempio si può accedere tramite la pseudo-directory {{{/hosthome/}}}.
<<BR>>
In tale script si può importare (con il comando {{{source}}} o {{{.}}}) lo script '''~+{{{service.bash}}}+~''' che definisce alcune funzioni utili alla macchina virtuale.

== Avvio delle macchine virtuali di un lab ==

Esempio di script per avviare un lab.
{{{
#!/bin/bash

# Call base script to define functions.
. ~/netsukuku/scripts-netkit/host_utils.bash

# Find the directory where this script resides...
find_dir_script $0
SCRIPT_IS_HERE=$RET

# ... the way it is accessible from guest.
make_hosthome_path $SCRIPT_IS_HERE
DIRPATH=$RET

vstart -e ${DIRPATH}/service1.bash guest01 --eth0=A --eth1=B --mem=64 &>/dev/null
sleep 1
vstart -e ${DIRPATH}/service2.bash guest02 --eth0=B --eth1=C --mem=64 &>/dev/null
sleep 1
vstart -e ${DIRPATH}/service3.bash guest03 --eth0=C --eth1=D --mem=64 &>/dev/null
sleep 1
vstart -e ${DIRPATH}/service4.bash guest04 --eth0=D --eth1=E --mem=64 &>/dev/null
sleep 1

echo 'Lab launched.'
}}}
Line 17: Line 62:
L'avvio del demone {{{ntkd}}} sarà gestito dallo script di ''boot'' della macchina virtuale, che importa lo script {{{service.bash}}}.
<<BR>>
Per avviare il demone ad un determinato istante è sufficiente richiamare la funzione {{{launch_ntkd}}} specificando la directory su cui salvare i logs e i secondi da attendere.

Uso delle script di automazione dei test ntkd su netkit

Alcune scripts sono state create (e con il tempo sono state e saranno corrette e migliorate) per facilitare le operazioni di test e debug di Netsukuku all'interno di un ambiente Netkit.

Queste scripts vengono testate ed usate con le macchine virtuali di Netkit che montano il filesystem descritto in TestWithNetkit e con una macchina host con sistema Ubuntu.
Presumibilmente, dovrebbero funzionare in modo analogo con una qualsiasi distribuzione GNU/Linux moderna come sistema host.

L'obiettivo di queste script è quello di facilitare le seguenti operazioni:

  • Creazione di uno scenario (chiamato anche lab), anche complesso, che possa essere avviato con un solo comando.

  • Salvataggio e successiva visualizzazione dei logs prodotti dalle istanze di ntkd che girano sulle diverse macchine del lab.

  • Avvio in tempi prestabiliti sia del demone ntkd, sia di comandi utili a testare la connettività della rete.

  • ...

Funzioni helper

Alcune operazioni sono state implementate come funzioni bash, negli script host_utils.bash e service.bash.

Il primo è utile per programmare le operazioni che deve svolgere il laboratorio nel suo insieme.
Per implementare un laboratorio si crea una script (di norma in una directory vuota) il cui compito è quello di avviare un certo numero di macchine virtuali.
In tale script si può importare (con il comando source o .) lo script host_utils.bash che definisce alcune funzioni utili alla macchina host.

Il secondo è utile per programmare le operazioni che deve svolgere una singola macchina virtuale.
Di solito ogni macchina virtuale si avvia specificando uno script da eseguire al suo interno come "boot". Lo script può risiedere anche all'esterno della macchina virtuale, ad esempio si può accedere tramite la pseudo-directory /hosthome/.
In tale script si può importare (con il comando source o .) lo script service.bash che definisce alcune funzioni utili alla macchina virtuale.

Avvio delle macchine virtuali di un lab

Esempio di script per avviare un lab.

# Call base script to define functions.
. ~/netsukuku/scripts-netkit/host_utils.bash

# Find the directory where this script resides...
find_dir_script $0
SCRIPT_IS_HERE=$RET

# ... the way it is accessible from guest.
make_hosthome_path $SCRIPT_IS_HERE
DIRPATH=$RET

vstart -e ${DIRPATH}/service1.bash guest01 --eth0=A --eth1=B --mem=64 &>/dev/null
sleep 1
vstart -e ${DIRPATH}/service2.bash guest02 --eth0=B --eth1=C --mem=64 &>/dev/null
sleep 1
vstart -e ${DIRPATH}/service3.bash guest03 --eth0=C --eth1=D --mem=64 &>/dev/null
sleep 1
vstart -e ${DIRPATH}/service4.bash guest04 --eth0=D --eth1=E --mem=64 &>/dev/null
sleep 1

echo 'Lab launched.'

Avvio del demone

L'avvio del demone ntkd sarà gestito dallo script di boot della macchina virtuale, che importa lo script service.bash.
Per avviare il demone ad un determinato istante è sufficiente richiamare la funzione launch_ntkd specificando la directory su cui salvare i logs e i secondi da attendere.

Raccolta informazioni

Lo script net_info.bash va eseguito all'interno della macchina virtuale.
Produce sullo standard output informazioni su:

  • le interfacce di rete presenti nel sistema (una riga che inizia con "nic" per ogni interfaccia)

  • l'indirizzo IP proprio del sistema
    • una unica riga che inizia con "addr";

    • si presume che il sistema usi netsukuku, quindi abbia un solo indirizzo;
    • si presume anche che il sistema abbia l'interfaccia eth0.
  • i vicini noti al sistema (una riga che inizia con "neighbour" per ogni vicino)

  • gli altri nodi e gnodi della rete verso i quali il sistema ha una rotta;
    • una riga che inizia con "gnode_1" per ogni nodo appartenente al nostro stesso gnodo di livello 1.

    • una riga che inizia con "gnode_2" per ogni gnodo di livello 1 appartenente al nostro stesso gnodo di livello 2.

    • una riga che inizia con "gnode_3" per ogni gnodo di livello 2 appartenente al nostro stesso gnodo di livello 3.

    • una riga che inizia con "gnode_4" per ogni gnodo di livello 3 appartenente al nostro stesso gnodo di livello 4.

Lo script collect_ips.bash va eseguito all'interno della macchina virtuale. Fa uso dello script net_info.bash.
Produce sullo standard output un elenco di indirizzi IP che riesce a raccogliere.

  • Il proprio IP
  • Quelli dei vicini
  • Quelli del primo nodo che incontra su ogni gnodo nella mappa

Netsukuku/ita/ScriptsWithNetkit (last edited 2009-10-02 08:43:11 by lukisi)