<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>ConfineVMHowTo</title><revhistory><revision><revnumber>33</revnumber><date>2015-03-02 12:22:24</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>32</revnumber><date>2015-02-27 17:01:33</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>31</revnumber><date>2015-02-25 13:40:46</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>30</revnumber><date>2015-02-25 13:36:42</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>29</revnumber><date>2015-02-25 13:25:37</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>28</revnumber><date>2015-02-25 13:20:14</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>27</revnumber><date>2015-02-25 13:14:23</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>26</revnumber><date>2015-02-25 13:13:50</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>25</revnumber><date>2015-02-24 20:19:53</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>24</revnumber><date>2015-02-24 20:08:43</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>23</revnumber><date>2015-02-24 20:05:57</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>22</revnumber><date>2015-02-24 20:02:46</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>21</revnumber><date>2015-02-24 20:00:51</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>20</revnumber><date>2015-02-24 19:56:51</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>19</revnumber><date>2015-02-24 19:48:06</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>18</revnumber><date>2015-02-24 19:27:42</date><authorinitials>ClauzClauz</authorinitials><revremark>finita sezione slice</revremark></revision><revision><revnumber>17</revnumber><date>2015-02-24 19:25:58</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>16</revnumber><date>2015-02-24 19:24:32</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>15</revnumber><date>2015-02-24 19:19:29</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>14</revnumber><date>2015-02-24 19:19:11</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>13</revnumber><date>2015-02-24 19:07:46</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>12</revnumber><date>2015-02-24 19:05:57</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>11</revnumber><date>2015-02-24 19:01:12</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>10</revnumber><date>2015-02-24 18:54:18</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>9</revnumber><date>2015-02-24 18:52:20</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>8</revnumber><date>2015-02-24 18:48:05</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>7</revnumber><date>2015-02-24 18:38:22</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>6</revnumber><date>2015-02-24 18:36:27</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>5</revnumber><date>2015-02-24 18:35:10</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>4</revnumber><date>2015-02-24 17:47:42</date><authorinitials>ClauzClauz</authorinitials></revision><revision><revnumber>3</revnumber><date>2015-02-24 17:46:28</date><authorinitials>ClauzClauz</authorinitials><revremark>concetti base</revremark></revision><revision><revnumber>2</revnumber><date>2015-02-24 17:42:52</date><authorinitials>ClauzClauz</authorinitials><revremark>concetti base</revremark></revision><revision><revnumber>1</revnumber><date>2015-02-24 17:06:40</date><authorinitials>ClauzClauz</authorinitials></revision></revhistory></articleinfo><section><title>Come creare macchine virtuali per esperimenti e servizi sperimentali in CONFINE</title><para><ulink url="http://confine-project.eu/">CONFINE</ulink> è un progetto di ricerca che ha l’obiettivo di costruire un’infrastruttura all’interno di varie community network europee per metterla a disposizione dei ricercatori, che possono così studiare reti reali, con utenti veri, anziché limitarsi ad esperimenti in laboratorio o simulati. </para><para>Questa guida spiega come creare Sliver, ovvero macchine virtuali, per <emphasis role="strong">effettuare esperimenti</emphasis> o <emphasis role="strong">fornire servizi sperimentali</emphasis>, all'interno dell'infrastruttura <ulink url="http://www.nnx.me/ConfineVMHowTo/CommunityLab#">CommunityLab</ulink> di CONFINE. </para><para>Vedere anche <emphasis role="strong"><ulink url="http://www.nnx.me/ConfineVMHowTo/ConfineHowTo#">ConfineHowTo</ulink></emphasis> </para><section><title>Concetti di base</title><para>Per poter utilizzare <ulink url="http://www.nnx.me/ConfineVMHowTo/CommunityLab#">CommunityLab</ulink> sono necessarie alcune conoscenze sulla terminologia e l'architettura. </para><para><inlinemediaobject><imageobject><imagedata fileref="http://www.nnx.me//ConfineVMHowTo?action=AttachFile&amp;do=get&amp;target=architecture.png" width="300"/></imageobject><textobject><phrase>architecture.png</phrase></textobject></inlinemediaobject> </para><para>Per <emphasis role="strong">nodi</emphasis> o <emphasis role="strong">research device</emphasis> si intendono computer (tipicamente Intel NUC) sparsi all'interno della community network. </para><para>I research device possono ospitare zero o piu' <emphasis role="strong">macchine virtuali</emphasis> o <emphasis role="strong">sliver</emphasis>. Queste sono basate sui linux container (LXC). </para><para>Una <emphasis role="strong">slice</emphasis> è una collezione di <emphasis role="strong">sliver</emphasis> ospitate su più research device che tipicamente fanno parte dello stesso esperimento o servizio. </para><para>Ogni sliver è basata su un <emphasis role="strong">template</emphasis>, ovvero la distribuzione Linux (tipicamente <ulink url="http://www.nnx.me/ConfineVMHowTo/OpenWrt#">OpenWrt</ulink> o Debian) che viene installata al momento della creazione della sliver. </para><para>Le sliver hanno tipicamente tre tipi principali di indirizzi: </para><itemizedlist><listitem><para>indirizzi <emphasis role="strong">privati</emphasis>, appartenenti alla subnet <emphasis role="strong"><code>192.168.157.0/24</code></emphasis>, validi solo all'interno del research device (in un bridge virtuale interno). Di solito possono essere ignorati. L'interfaccia corrispondente ha di default il nome <emphasis role="strong"><code>priv</code></emphasis> all'interno della sliver </para></listitem><listitem><para>indirizzi di <emphasis role="strong">management</emphasis>, appartenenti alla subnet <emphasis role="strong"><code>fdf5:5351:1dfd::/48</code></emphasis>, raggiungibili tramite la VPN di management tinc (vedere sotto). L'interfaccia corrispondente ha di default il nome <emphasis role="strong"><code>mgmt0</code></emphasis> all'interno della sliver </para></listitem><listitem><para>indirizzi <emphasis role="strong">community-public</emphasis>, assegnati dal server DHCP locale e raggiungibili all'interno della community network (ad esempio <emphasis role="strong"><code>10.176.0.118/24</code></emphasis>). Spesso questi indirizzi sono chiamati <emphasis role="strong">pubblici</emphasis> all'interno di <ulink url="http://www.nnx.me/ConfineVMHowTo/CommunityLab#">CommunityLab</ulink>, anche se si tratta indirizzi IP privati RFC1918. L'interfaccia corrispondente ha di default il nome <emphasis role="strong"><code>pub0</code></emphasis> all'interno della sliver </para></listitem></itemizedlist><para>Per maggiori informazioni vedere <ulink url="https://wiki.confine-project.eu/arch:node">Node architecture</ulink> </para></section><section><title>Creazione di una slice</title><para>Ecco i passi necessari per la creazione di una slice all'interno di <ulink url="http://www.nnx.me/ConfineVMHowTo/CommunityLab#">CommunityLab</ulink>. </para><itemizedlist><listitem><para>fare il <emphasis role="strong">log-in</emphasis> su <ulink url="https://panel.community-lab.net"/> . In caso non si disponga di un account bisogna <ulink url="https://panel.community-lab.net/accounts/register/">registrarsi</ulink> </para></listitem><listitem><para>cliccare sul proprio nome in alto a destra per accedere al proprio profilo </para></listitem><listitem><para>verificare che si disponga dei permessi di &quot;Slice admin (researcher)&quot; per il gruppo ninux.org. In caso contrario scrivere a <code>&lt;clauz AT NONMISPAMMARE ninux DOT org&gt;</code> per farsi abilitare </para></listitem><listitem><para><emphasis role="strong">aggiungere</emphasis> una o più <emphasis role="strong">chiavi SSH</emphasis> nella sezione authentication tokens </para></listitem></itemizedlist><para><inlinemediaobject><imageobject><imagedata fileref="http://www.nnx.me//ConfineVMHowTo?action=AttachFile&amp;do=get&amp;target=screenshot_ssh_key.png" width="600"/></imageobject><textobject><phrase>screenshot_ssh_key.png</phrase></textobject></inlinemediaobject> </para><itemizedlist><listitem><para>salvare </para></listitem><listitem><para>cliccare su &quot;SLICES-&gt;SLICES&quot; in alto </para></listitem><listitem><para>cliccare su <emphasis role="strong">&quot;add slice&quot;</emphasis> </para></listitem></itemizedlist><para><inlinemediaobject><imageobject><imagedata fileref="http://www.nnx.me//ConfineVMHowTo?action=AttachFile&amp;do=get&amp;target=screenshot_slices.png" width="600"/></imageobject><textobject><phrase>screenshot_slices.png</phrase></textobject></inlinemediaobject> </para><itemizedlist><listitem><para>scegliere un nome per la slice </para></listitem><listitem><para>scegliere il gruppo &quot;ninux.org&quot; </para></listitem><listitem><para>opzionalmente, scegliere in &quot;resource requests&quot; lo spazio su disco da allocare per ogni sliver (il default e' circa 200MiB, il massimo 1000MiB) </para></listitem></itemizedlist><para><inlinemediaobject><imageobject><imagedata fileref="http://www.nnx.me//ConfineVMHowTo?action=AttachFile&amp;do=get&amp;target=screenshot_slice_resources.png" width="600"/></imageobject><textobject><phrase>screenshot_slice_resources.png</phrase></textobject></inlinemediaobject> </para><itemizedlist><listitem><para>scegliere il template (ad esempio &quot;Debian Squeeze (debian)&quot;) </para></listitem><listitem><para>lasciare il &quot;set state&quot; su &quot;START&quot; </para></listitem><listitem><para>salvare la slice </para></listitem><listitem><para>in basso sulla pagina cliccare su <emphasis role="strong">&quot;add slivers&quot;</emphasis> </para></listitem></itemizedlist><para><inlinemediaobject><imageobject><imagedata fileref="http://www.nnx.me//ConfineVMHowTo?action=AttachFile&amp;do=get&amp;target=screenshot_add_slivers.png" width="600"/></imageobject><textobject><phrase>screenshot_add_slivers.png</phrase></textobject></inlinemediaobject> </para><itemizedlist><listitem><para>scegliere su quali nodi creare le sliver: per rendere più semplice la selezione, usare la colonna a destra cliccando su &quot;By set state PRODUCTION&quot; e &quot;By group ninux.org&quot; </para></listitem></itemizedlist><para><inlinemediaobject><imageobject><imagedata fileref="http://www.nnx.me//ConfineVMHowTo?action=AttachFile&amp;do=get&amp;target=screenshot_choose_nodes.png" width="600"/></imageobject><textobject><phrase>screenshot_choose_nodes.png</phrase></textobject></inlinemediaobject> </para><itemizedlist><listitem><para>cliccare su &quot;Create slivers&quot; </para></listitem><listitem><para>nella schermata successiva selezionare le opzioni <emphasis role="strong">&quot;public4&quot;</emphasis> (indispensabile per i servizi) e <emphasis role="strong">&quot;management&quot;</emphasis> (di default già selezionata) </para></listitem></itemizedlist><para><inlinemediaobject><imageobject><imagedata fileref="http://www.nnx.me//ConfineVMHowTo?action=AttachFile&amp;do=get&amp;target=screenshot_interfaces.png" width="600"/></imageobject><textobject><phrase>screenshot_interfaces.png</phrase></textobject></inlinemediaobject> </para><itemizedlist><listitem><para>cliccare su &quot;Yes, create slivers&quot; </para></listitem><listitem><para>nella pagina relativa alla slice cambiare il <emphasis role="strong">set state</emphasis> da &quot;REGISTER&quot; a <emphasis role="strong">&quot;START&quot;</emphasis> </para></listitem><listitem><para>la creazione delle sliver sui nodi selezionati richiede tempi dell'ordine della decina di minuti </para></listitem></itemizedlist></section><section><title>Accedere alle sliver</title><itemizedlist><listitem><para>per vedere la lista delle sliver cliccare su &quot;SLICES-&gt;SLIVERS&quot; in alto </para></listitem><listitem><para>per vedere solamente le sliver associate alla propria slice cliccare sulla colonna di destra sul nome della slice </para></listitem><listitem><para>le sliver che si trovano nello stato &quot;STARTED&quot; sono quelle effettivamente utilizzabili </para></listitem></itemizedlist><para><inlinemediaobject><imageobject><imagedata fileref="http://www.nnx.me//ConfineVMHowTo?action=AttachFile&amp;do=get&amp;target=screenshot_sliverlist.png" width="600"/></imageobject><textobject><phrase>screenshot_sliverlist.png</phrase></textobject></inlinemediaobject> </para><itemizedlist><listitem><para><emphasis role="strong">cliccando sullo stato (&quot;STARTED&quot;)</emphasis> si accede ad una pagina che mostra varie informazioni sulla sliver, tra cui gli <emphasis role="strong">indirizzi community-public e di management</emphasis> </para></listitem></itemizedlist><para><inlinemediaobject><imageobject><imagedata fileref="http://www.nnx.me//ConfineVMHowTo?action=AttachFile&amp;do=get&amp;target=screenshot_sliverstate_json.png" width="300"/></imageobject><textobject><phrase>screenshot_sliverstate_json.png</phrase></textobject></inlinemediaobject> </para><itemizedlist><listitem><para>se ci si trova all'interno della community network allora si puo' accedere direttamente in SSH alla sliver usando l'indirizzo &quot;public4&quot; della sliver e utente root, altrimenti bisogna utilizzare l'indrizzo di management attraverso la VPN (vedere sotto)  </para></listitem></itemizedlist></section><section><title>VPN di management (tinc)</title><para>La VPN di management è unica per tutti i nodi e le sliver ed è basata sul software VPN tinc. </para><para>Per accedere alla VPN: </para><itemizedlist><listitem><para>andare in alto su &quot;TINC-&gt;HOSTS&quot; </para></listitem><listitem><para>cliccare su <emphasis role="strong">&quot;Add Host&quot;</emphasis> a destra </para></listitem><listitem><para>scegliere un nome per la macchina da aggiungere alla vpn di management </para></listitem><listitem><para>scegliere come isola &quot;ninux.org&quot; </para></listitem><listitem><para>lasciare il resto vuoto e cliccare su &quot;save and continue editing&quot; </para></listitem><listitem><para>clicare su <emphasis role="strong">&quot;Help&quot; in alto a destra</emphasis> (consiglio: aprire in un nuovo tab) </para></listitem><listitem><para>seguire le istruzioni dettagliate riportate sulla pagina </para></listitem><listitem><para>dopo aver generato le chiavi tinc con il comando <code>tincd -n communitylab -K</code> aprire di nuovo la pagina di modifica dell'host tinc (o passare al tab precedente) e <emphasis role="strong">copiare e incollare</emphasis> all'interno del campo &quot;public key&quot; <emphasis role="strong">la chiave pubblica</emphasis> generata </para></listitem></itemizedlist><para><inlinemediaobject><imageobject><imagedata fileref="http://www.nnx.me//ConfineVMHowTo?action=AttachFile&amp;do=get&amp;target=screenshot_tinc_key.png" width="600"/></imageobject><textobject><phrase>screenshot_tinc_key.png</phrase></textobject></inlinemediaobject> </para><itemizedlist><listitem><para>salvare </para></listitem><listitem><para>avviare tinc seguendo le istruzioni che si trovano in fondo alla pagina &quot;Help&quot; (aperta in precedenza) </para></listitem><listitem><para>provare a pingare il server: <code>ping6 fdf5:5351:1dfd::2</code> </para></listitem></itemizedlist></section><section><title>Limitazioni attuali</title><itemizedlist><listitem><para>il massimo spazio disco allocabile per è al momento 1GiB </para></listitem><listitem><para>i dati scritti su disco vengono persi al riavvio della sliver (o del research device) </para></listitem><listitem><para>le periferiche USB (dischi, pennette) non sono visti dalle sliver (a meno di non agire sulla configurazione delle sliver a livello di research device) </para></listitem></itemizedlist></section><section><title>REST API</title><para>Community-Lab espone un'API che può essere utilizzata per ottenere informazioni sullo stato delle sliver e dei nodi, per creare e distruggere sliver, etc. </para><para>Documentazione: <ulink url="http://wiki.confine-project.eu/arch:rest-api"/> Esempi: <ulink url="http://redmine.confine-project.eu/projects/confine-utils/repository"/> </para></section><section><title>TODO</title><itemizedlist><listitem><para>guida alla creazione template personalizzati </para></listitem><listitem><para>uso di &quot;experiment data&quot; </para></listitem><listitem><para>FAQ </para></listitem><listitem><para>tips and tricks </para></listitem></itemizedlist></section></section></article>