1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title xmlns="">JeOS e vmbuilder</title>
<link rel="stylesheet" href="../../libs/ubuntu-book.css" type="text/css" />
<link rel="home" href="index.html" title="Guida a Ubuntu Server" />
<link rel="up" href="virtualization.html" title="Capitolo 19. Virtualizzazione" />
<link rel="prev" href="libvirt.html" title="libvirt" />
<link rel="next" href="uec.html" title="UEC" />
<link rel="copyright" href="legal.html" title="Riconoscimenti e licenza" />
</head>
<link href="http://help.ubuntu-it.org/favicon.ico" rel="shortcut icon" />
<body>
<div id="page-border-left-repeat">
<div id="page-border-right-repeat">
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-8147493-2");
pageTracker._trackPageview();
} catch(err) {}</script>
<div id="page-border-top-repeat">
<div id="header">
<div id="header-navigation">
<ul>
<li>
<a href="http://www.ubuntu-it.org">Web</a>
</li>
<li>
<a href="http://wiki.ubuntu-it.org">Documentazione</a>
</li>
<li>
<a href="http://forum.ubuntu-it.org">Forum</a>
</li>
<li>
<a href="http://planet.ubuntu-it.org">Planet</a>
</li>
</ul>
</div>
<form action="http://help.ubuntu-it.org/11.04/ubuntu/search.php" id="cse-search-box">
<div>
<input type="text" name="s" size="28" title="search" />
<input type="submit" value="Cerca" title="search" />
</div>
</form>
</div>
</div>
<div>
<div id="bodyarea">
<div class="pagelocation"><a href="http://help.ubuntu-it.org/">Documentazione di Ubuntu</a> > <a href="http://help.ubuntu-it.org/11.04/ubuntu/index.html">Ubuntu 11.04</a> > <span class="breadcrumb-link"><a href="index.html">Guida a Ubuntu Server</a></span> > <span class="breadcrumb-link"><a href="virtualization.html">Virtualizzazione</a></span> > <span class="breadcrumb-node">JeOS e vmbuilder</span></div>
<div xmlns="http://www.w3.org/1999/xhtml" class="sect1" title="JeOS e vmbuilder">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="jeos-and-vmbuilder"></a>JeOS e vmbuilder</h2>
</div>
</div>
</div>
<div class="sect2" title="Introduzione">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="jeos-introduction"></a>Introduzione</h3>
</div>
</div>
</div>
<div class="sect3" title="Cos'è JeOS">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="what-is-jeos"></a>Cos'è JeOS</h4>
</div>
</div>
</div>
<p>Ubuntu <span class="emphasis"><em>JeOS</em></span> (pronunciato come la parola "juice") è una variante di della versione server di Ubuntu, configurata appositamente per le applicazioni virtuali. Non è disponibile sotto forma di file ISO per CD-ROM, ma solo come opzione:</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>durante l'installazione della versione server (premere <span class="emphasis"><em>F4</em></span> alla prima schermata per scegliere l'opzione "Installa un sistema minimale" che equivale a selezionare JeOS).</p>
</li>
<li class="listitem">
<p>oppure può essere generato usando "vmbuilder" come descritto di seguito.</p>
</li>
</ul>
</div>
<p>JeOS è un'installazione di Ubuntu Server Edition con un kernel appositamente configurato che contiene gli elementi basilari necessari all'esecuzione di un ambiente virtualizzato.</p>
<p>Ubuntu JeOS è stato progettato per sfruttare tutte quelle tecnologie chiave, relative alle prestazioni, presenti negli ultimi prodotti di virtualizzazione di VMware. La combinazione di una ridotta dimensione e prestazioni ottimizzate, assicurano che Ubuntu JeOS Edition sia in grado di offrire un uso efficiente delle risorse server in grandi produzioni virtuali.</p>
<p>Senza l'utilizzo di driver non necessari e ricorrendo solo ai pacchetti richiesti, gli ISV possono configurare il proprio SO di supporto proprio come desiderano. Inoltre, viene assicurato che gli aggiornamenti, di sicurezza o per miglioramenti, saranno limitati al minimo richiesto dallo specifico ambiente. Gli utenti che sviluppano soluzioni virtuali basate su JeOS, dovranno gestire meno aggiornamenti, e quindi una minor manutenzione, di quanto avrebbero dovuto fare con un'installazione server completa.</p>
</div>
<div class="sect3" title="Cos'è vmbuilder">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="what-is-vmbuilder"></a>Cos'è vmbuilder</h4>
</div>
</div>
</div>
<p>Utilizzando vmbuilder non è necessario scaricare un'immagine di JeOS: verranno scaricati i pacchetti necessari per creare una macchina virtuale adatta alle proprie esigenze. vmbuilder è uno script che automatizza la creazione di una macchina virtuale Linux. Gli hypervisor supportati attualmente sono KVM e Xen.</p>
<p>È possibile passare opzioni a riga di comando per aggiungere dei pacchetti, per rimuoverne, per scegliere la versione di Ubuntu, quale mirror, ecc... Su piattaforme hardware recenti dotate di molta memoria RAM, con tmpdir in <code class="filename">/dev/shm</code> o usando un tmpfs e un mirror locale, è possibile avere una macchina virtuale in meno di un minuto.</p>
<p>Introdotto come semplice script shell in Ubuntu 8.04 LTS, <span class="application"><strong>ubuntu-vm-builder</strong></span> era un semplice progetto per aiutare gli sviluppatori nel provare il codice scritto in una virtual machine senza dover ricominciare sempre da capo. Lo script è stato in seguito migliorato e Soren Hansen (l'autore dello script e lo specialista di virtualizzazione in Ubuntu virtualization, non il giocatore di golf) lo ha riscritto da capo per Intrepid in python con i seguenti obiettivi:</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>Svilupparlo affinché possa essere usato anche da altre distribuzioni.</p>
</li>
<li class="listitem">
<p>Usare un meccanismo di plugin per tutte le interazioni di virtualizzazione per facilitare l'aggiunta di altri ambienti di virtualizzazione o una logica più complessa.</p>
</li>
<li class="listitem">
<p>Fornire un'interfaccia web facile da usare come opzione alla riga di comando.</p>
</li>
</ul>
</div>
<p>I principi generali e i comandi restano sempre gli stessi.</p>
</div>
</div>
<div class="sect2" title="Configurazione iniziale">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="jeos-initial-setup"></a>Configurazione iniziale</h3>
</div>
</div>
</div>
<p>Si presuppone che siano già stati installati e configurati <span class="application"><strong>libvirt</strong></span> e <span class="application"><strong>KVM</strong></span> sul computer che si intende usare. Per maggiori informazioni, consultare:</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>
<a class="xref" href="libvirt.html" title="libvirt">la sezione chiamata «libvirt»</a>
</p>
</li>
<li class="listitem">
<p>La pagina relativa a <a class="ulink" href="https://help.ubuntu.com/community/KVM" target="_top">KVM</a> nella documentazione (in inglese).</p>
</li>
</ul>
</div>
<p>Si dà per assodato che si sappia utilizzare un editor di testo come nano oppure vi. In caso contrario, è possibile avere una panoramica dei vari editor di testo consultando <a class="ulink" href="http://wiki.ubuntu-it.org/Ufficio/EditorDiTesto#powereditor" target="_top">la documentazione di Ubuntu</a>. Questa guida è stata scritta basandosi su KVM, ma il principio dovrebbe essere lo stesso anche per altre tecnologie di virtualizzazione.</p>
<div class="sect3" title="Installare vmbuilder">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="install-vmbuilder"></a>Installare vmbuilder</h4>
</div>
</div>
</div>
<p>Il nome del pacchetto da installare è <span class="application"><strong>python-vm-builder</strong></span>. In un terminale digitare:</p>
<pre class="screen">
<span class="command"><strong>sudo apt-get install python-vm-builder</strong></span>
</pre>
<div class="note" title="Nota" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Nota]" src="../../libs/admon/note.png" />
</td>
<th align="left"></th>
</tr>
<tr>
<td align="left" valign="top">
<p>Se si sta eseguendo la versione 8.04 è sempre possibile eseguire queste azioni usando la versione del pacchetto chiamata <span class="application"><strong>ubuntu-vm-builder</strong></span>; ci sono solo alcune modifiche nella sintassi da usare con il programma.</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect2" title="Definire una macchina virtuale">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="defining-vm"></a>Definire una macchina virtuale</h3>
</div>
</div>
</div>
<p>Definire una macchina virtuale con vmbuilder è molto facile, ma è necessario prendere in considerazione alcuni aspetti:</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>Se si pianifica di fornire applicativi virtuali, non assumere che l'utente finale sappia come estendere la dimensione del disco secondo le proprie esigenze. Prendere quindi in considerazione l'utilizzo di dischi virtuali di grandi dimensioni per consentire agli applicativi di crescere o spiegare nella documentazione come allocare maggiore spazio. Potrebbe essere una buona idea salvare i dati in un sistema di archiviazione esterno.</p>
</li>
<li class="listitem">
<p>Dato che la memoria RAM è più facile da allocare in una MV, la dimensione della RAM dovrebbe essere impostata a un valore minimo sicuro per la propria applicazione.</p>
</li>
</ul>
</div>
<p>Il comando <span class="application"><strong>vmbuilder</strong></span> dispone di due parametri principali: la <span class="emphasis"><em>tecnologia di virtualizzazione (hypervisor)</em></span> e la <span class="emphasis"><em>distribuzione</em></span> finale. Sono disponibili molti altri parametri e tutti possono essere visualizzati con il seguente comando:</p>
<pre class="screen">
<span class="command"><strong>vmbuilder kvm ubuntu --help</strong></span>
</pre>
<div class="sect3" title="Parametri base">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="vm-base-parameters"></a>Parametri base</h4>
</div>
</div>
</div>
<p>
As this example is based on <span class="application"><strong>KVM</strong></span> and Ubuntu 11.04 (Natty Narwhal), and we are likely to rebuild
the same virtual machine multiple time, we'll invoke vmbuilder with the following first parameters:
</p>
<pre class="screen">
<span class="command"><strong>sudo vmbuilder kvm ubuntu --suite natty --flavour virtual --arch i386 -o --libvirt qemu:///system</strong></span>
</pre>
<p>Il parametro <span class="emphasis"><em>--suite</em></span> definisce il rilascio di Ubuntu, <span class="emphasis"><em>--flavour</em></span> specifica di usare il kernel virtuale (quello usato per generare un'immagine JeOS), <span class="emphasis"><em>--arch</em></span> indica di usare un computer a 32 bit, <span class="emphasis"><em>-o</em></span> indica a vmbuilder di sovrascrivere la versione precedente della macchina virtuale e <span class="emphasis"><em>--libvirt</em></span> aggiunge la macchina virtuale risultante tra quelle disponibili nell'ambiente di virtualizzazione.</p>
<p>Note:</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>Data la natura delle operazioni eseguite da vmbuilder, sono necessari i privilegi di root.</p>
</li>
<li class="listitem">
<p>Se la macchina virtuale necessita di usare più di 3GB di RAM, è utile generare una macchina a 64 bit (--arch amd64).</p>
</li>
<li class="listitem">
<p>Fino a Ubuntu 8.10, il kernel virtuale era generato solo per architetture a 32 bit, per definire quindi una macchina amd64 su Hardy, usare <span class="emphasis"><em>--flavour server</em></span>.</p>
</li>
</ul>
</div>
</div>
<div class="sect3" title="Parametri di installazione di JeOS">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="jeos-installation-parameters"></a>Parametri di installazione di JeOS</h4>
</div>
</div>
</div>
<div class="sect4" title="Rete con JeOS">
<div class="titlepage">
<div>
<div>
<h5 class="title"><a id="jeos-networking"></a>Rete con JeOS</h5>
</div>
</div>
</div>
<div class="sect5" title="Assegnare un indirizzo IP fisso">
<div class="titlepage">
<div>
<div>
<h6 class="title"><a id="jeos-fixed-ip"></a>Assegnare un indirizzo IP fisso</h6>
</div>
</div>
</div>
<p>Come applicazione che verrà messa in produzione all'interno di reti diverse, è molto difficile conoscere la struttura attuale della rete. Per semplificare la configurazione è utile procedere come solitamente procedono i venditori di hardware di rete, assegnando un indirizzo IP fisso all'interno di una classe di rete che verrà descritta all'interno della propria documentazione. Un indirizzo nell'intervallo 192.168.0.0/255 è una buona scelta.</p>
<p>Per ottenere questo vengono usati i seguenti parametri:</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p><span class="emphasis"><em>--ip INDIRIZZO</em></span>: indirizzo IP (il valore predefinito è dhcp se non viene specificato nulla)</p>
</li>
<li class="listitem">
<p>
<span class="emphasis"><em>--hostname NAME</em></span>: Set NAME as the hostname of the guest.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>--mask VALORE</em></span>: maschera di rete (valore predefinito: 255.255.255.0)</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>--net VALORE</em></span>: indirizzo IP net (valore predefinito: X.X.X.0)</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>--bcast VALORE</em></span>: broadcast (valore predefinito: X.X.X.255)</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>--gw INDIRIZZO</em></span>: indirizzo del gateway (valore predefinito: X.X.X.1)</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>--dns INDIRIZZO</em></span>: indirizzo server dei nomi (valore predefinito: X.X.X.1)</p>
</li>
</ul>
</div>
<p>Si dà per scontato che i valori predefiniti siano sufficiente. Il comando diventa:</p>
<pre class="screen">
<span class="command"><strong>sudo vmbuilder kvm ubuntu --suite natty --flavour virtual --arch i386 -o --libvirt qemu:///system --ip 192.168.0.100 --hostname myvm </strong></span>
</pre>
</div>
<div class="sect5" title="Bridging">
<div class="titlepage">
<div>
<div>
<h6 class="title"><a id="jeos-bridging"></a>Bridging</h6>
</div>
</div>
</div>
<p>
Because our appliance will be likely to need to be accessed by remote hosts, we need to configure libvirt so that the appliance
uses bridge networking. To do this add the <span class="emphasis"><em>--bridge</em></span> option to the command:
</p>
<pre class="screen">
<span class="command"><strong>sudo vmbuilder kvm ubuntu --suite natty --flavour virtual --arch i386 -o --libvirt qemu:///system --ip 192.168.0.100 --hostname myvm --bridge br0</strong></span>
</pre>
<div class="note" title="Nota" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Nota]" src="../../libs/admon/note.png" />
</td>
<th align="left"></th>
</tr>
<tr>
<td align="left" valign="top">
<p>
You will need to have previously setup a bridge interface, see <a class="xref" href="network-configuration.html#bridging" title="Bridging">la sezione chiamata «Bridging»</a> for more information.
Also, if the interface name is different change <span class="emphasis"><em>br0</em></span> to the actual bridge interface.
</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect4" title="Partizionamento">
<div class="titlepage">
<div>
<div>
<h5 class="title"><a id="jeos-partitioning"></a>Partizionamento</h5>
</div>
</div>
</div>
<p>Il partizionamento dell'applicativo virtuale deve prendere in considerazione cosa si intende fare. Dato che molti applicativi non avranno un sistema di archiviazione separato per i dati, usare una partizione <code class="filename">/var</code> separata è una buona idea.</p>
<p>Per ottenere tutto questo, vmbuilder dispone dell'opzione <span class="emphasis"><em>--part</em></span>:</p>
<pre class="programlisting">
--part PATH
Allows you to specify a partition table in a partition file, located at PATH. Each line of the partition file should specify
(root first):
mountpoint size
where size is in megabytes. You can have up to 4 virtual disks, a new disk starts on a
line with ’---’. ie :
root 1000
/opt 1000
swap 256
---
/var 2000
/log 1500
</pre>
<p>In questo caso, creare un file di testo <code class="filename">vmbuilder.partition</code> contenente quanto segue:</p>
<pre class="programlisting">
root 8000
swap 4000
---
/var 20000
</pre>
<div class="note" title="Nota" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Nota]" src="../../libs/admon/note.png" />
</td>
<th align="left"></th>
</tr>
<tr>
<td align="left" valign="top">
<p>Notare che vengono usate immagini disco virtuali, le dimensioni inserite sono le dimensioni massime dei volumi.</p>
</td>
</tr>
</table>
</div>
<p>Il comando diventa quindi:</p>
<pre class="screen">
<span class="command"><strong>sudo vmbuilder kvm ubuntu --suite natty --flavour virtual --arch i386 \
-o --libvirt qemu:///system --ip 192.168.0.100 --hostname myvm --part vmbuilder.partition</strong></span>
</pre>
<div class="note" title="Nota" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Nota]" src="../../libs/admon/note.png" />
</td>
<th align="left"></th>
</tr>
<tr>
<td align="left" valign="top">
<p>L'uso di "\" all'interno di un comando consente di scrivere comandi su più righe.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="sect4" title="Utente e password">
<div class="titlepage">
<div>
<div>
<h5 class="title"><a id="jeos-user-password"></a>Utente e password</h5>
</div>
</div>
</div>
<p>È necessario anche impostare un utente e una password predefiniti e generici da poter includere nella documentazione. Successivamente verrà presentato uno script che viene eseguito al primo accesso di un utente che tra le molte cose chiederà di modificare la password. In questo esempio viene usato come nome utente <span class="emphasis"><em>user</em></span> e <span class="emphasis"><em>default</em></span> come password.</p>
<p>Per fare questo vengono usati i seguenti parametri:</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p><span class="emphasis"><em>--user NOME_UTENTE</em></span>: imposta il nome utente da aggiungere. Valore predefinito: ubuntu.</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>--name NOME_COMPLETO</em></span>: imposta il nome completo dell'utente da aggiungere. Valore predefinito: Ubuntu.</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>--pass PASSWORD</em></span>: imposta la password dell'utente: Valore predefinito: ubuntu.</p>
</li>
</ul>
</div>
<p>Il comando ora è il seguente:</p>
<pre class="screen">
<span class="command"><strong>sudo vmbuilder kvm ubuntu --suite natty --flavour virtual --arch i386 \
-o --libvirt qemu:///system --ip 192.168.0.100 --hostname myvm --part vmbuilder.partition \
--user user --name user --pass default</strong></span>
</pre>
</div>
</div>
<div class="sect3" title="Installare i pacchetti richiesti">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="jeos-required-packages"></a>Installare i pacchetti richiesti</h4>
</div>
</div>
</div>
<p>In questo esempio verrà installato un pacchetto (<span class="application"><strong>Limesurvey</strong></span>) che accede a un database <span class="application"><strong>MySQL</strong></span> ed è dotato di un'interfaccia web. Il sistema operativo dovrà quindi aver installato:</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>Apache</p>
</li>
<li class="listitem">
<p>PHP</p>
</li>
<li class="listitem">
<p>MySQL</p>
</li>
<li class="listitem">
<p>Server OpenSSH</p>
</li>
<li class="listitem">
<p>Limesurvey (un'applicazione di esempio creata appositamente)</p>
</li>
</ul>
</div>
<p>
This is done using vmbuilder by specifying the --addpkg option multiple times:
</p>
<pre class="programlisting">
--addpkg PKG
Install PKG into the guest (can be specfied multiple times)
</pre>
<p>Purtroppo, in base al funzionamento di vmbuilder, i pacchetti che devono porre delle domande nella fase di post-installazione non sono supportati e dovrebbero essere installati successivamente quando è possibile interagirvi. Questo è il caso di Limesurvey che verrà installato successivamente, dopo che l'utente ha eseguito l'accesso.</p>
<p>Altri pacchetti che pongono delle semplici domande di debconf, come <span class="application"><strong>mysql-server</strong></span> che richiede di impostare una password, possono essere installati, ma dovranno essere riconfigurati una volta eseguito l'accesso.</p>
<p>Se alcuni dei pacchetti che si devono installare non sono presenti nel componente "main", è necessario abilitare dei repository aggiuntivi usando le opzioni "--comp" e "--ppa":</p>
<pre class="programlisting">
--components COMP1,COMP2,...,COMPN
A comma separated list of distro components to include (e.g. main,universe). This defaults
to "main"
--ppa=PPA Add ppa belonging to PPA to the vm's sources.list.
</pre>
<p>Limesurvey non fa parte degli archivi attualmente ed è quindi necessario specificarne l'indirizzo PPA (Personal Package Archive) così da aggiungerlo al file <code class="filename">/etc/apt/source.list</code> della macchina virtuale. Aggiungere quindi quanto segue al comando:</p>
<pre class="screen">
<span class="command"><strong>--addpkg apache2 --addpkg apache2-mpm-prefork --addpkg apache2-utils --addpkg apache2.2-common \ --addpkg dbconfig-common --addpkg libapache2-mod-php5 --addpkg mysql-client --addpkg php5-cli \ --addpkg php5-gd --addpkg php5-ldap --addpkg php5-mysql --addpkg wwwconfig-common \ --addpkg mysql-server --ppa nijaba</strong></span>
</pre>
</div>
<div class="sect3" title="Considerazioni sulla velocità">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="jeos-speed-consideration"></a>Considerazioni sulla velocità</h4>
</div>
</div>
</div>
<div class="sect4" title="Cache dei pacchetti">
<div class="titlepage">
<div>
<div>
<h5 class="title"><a id="jeos-package-caching"></a>Cache dei pacchetti</h5>
</div>
</div>
</div>
<p>
When vmbuilder creates builds your system, it has to go fetch each one of the packages that composes it over the network
to one of the official repositories, which, depending on your internet connection speed and the load of the mirror, can
have a big impact on the actual build time. In order to reduce this, it is recommended to either have a local repository
(which can be created using <span class="application"><strong>apt-mirror</strong></span>) or using a caching proxy such as
<span class="application"><strong>apt-proxy</strong></span>. The later option being much simpler to implement and requiring less disk space, it
is the one we will pick in this tutorial. To install it, simply type:
</p>
<pre class="screen">
<span class="command"><strong>sudo apt-get install apt-proxy</strong></span>
</pre>
<p>Una volta completata l'installazione, il proxy (vuoto) è pronto all'indirizzo "http://INDIRIZZO_MIRROR:9999" e trovaerà i repository Ubuntu sotto "/ubuntu". Affinché vmbuilder possa usarlo, è necessario usare l'opzione <span class="emphasis"><em>--mirror</em></span>:</p>
<pre class="programlisting">
--mirror=URL Use Ubuntu mirror at URL instead of the default, which
is http://archive.ubuntu.com/ubuntu for official
arches and http://ports.ubuntu.com/ubuntu-ports
otherwise
</pre>
<p>Aggiungere quindi al comando:</p>
<pre class="screen">
<span class="command"><strong>--mirror http://INDIRIZZO_MIRROR:9999/ubuntu</strong></span>
</pre>
<div class="note" title="Nota" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Nota]" src="../../libs/admon/note.png" />
</td>
<th align="left"></th>
</tr>
<tr>
<td align="left" valign="top">
<p>
The mirror address specified here will also be used in the <code class="filename">/etc/apt/sources.list</code> of the newly created
guest, so it is useful to specify here an address that can be resolved by the guest or to plan on reseting this address
later on.
</p>
</td>
</tr>
</table>
</div>
</div>
<div class="sect4" title="Installare un mirror locale">
<div class="titlepage">
<div>
<div>
<h5 class="title"><a id="jeos-local-mirror"></a>Installare un mirror locale</h5>
</div>
</div>
</div>
<p>Se si è in un ambiente molto grande, può aver senso creare un mirror locale dei repository di Ubuntu. Il pacchetto "apt-mirror" fornisce uno script per la gestione delle operazioni di mirror. È utile avere almeno 20GB di spazio per ogni rilascio supportato e architettura.</p>
<p>Il file di configurazione predefinito usato da <span class="application"><strong>apt-mirror</strong></span> è <code class="filename">/etc/apt/mirror.list</code>. Dato che è già impostato, dovrà solamente replicare l'architettura del computer locale. Se è necessario supportare altre architetture all'interno del mirror, basta duplicare le righe che iniziano con “deb”, sostituendo la parola "deb" con "/deb-{arch}", dove "arch" può essere i386, amd64, ecc... Per esempio, su architettura amd64, per avere anche gli archivi per i386:</p>
<pre class="programlisting">
deb http://archive.ubuntu.com/ubuntu natty main restricted universe multiverse
/deb-i386 http://archive.ubuntu.com/ubuntu natty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu natty-updates main restricted universe multiverse
/deb-i386 http://archive.ubuntu.com/ubuntu natty-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ natty-backports main restricted universe multiverse
/deb-i386 http://archive.ubuntu.com/ubuntu natty-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu natty-security main restricted universe multiverse
/deb-i386 http://security.ubuntu.com/ubuntu natty-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu natty main/debian-installer restricted/debian-installer universe/debian-installer multiverse/debian-installer
/deb-i386 http://archive.ubuntu.com/ubuntu natty main/debian-installer restricted/debian-installer universe/debian-installer multiverse/debian-installer
</pre>
<p>I pacchetti dei sorgenti non sono stati inclusi nel mirror dato che non sono molto usati quanto i binari e occupano molto spazio. È comunque possibile aggiungerli facilmente all'elenco.</p>
<p>Una volta terminata l'operazione di duplicazione del mirror (può durare molto), è necessario configurare Apache affinché i file del mirror (in <code class="filename">/var/spool/apt-mirror</code> se non è stato modificato il valore predefinito) siano pubblicati dal proprio server Apache. Per maggiori informazioni su Apache, consultare <a class="xref" href="httpd.html" title="HTTPD - Server web Apache2">la sezione chiamata «HTTPD - Server web Apache2»</a>.</p>
</div>
</div>
</div>
<div class="sect2" title="Pacchettizzare l'applicativo">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="jeos-package-application"></a>Pacchettizzare l'applicativo</h3>
</div>
</div>
</div>
<p>Sono disponibili due opzioni:</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>Il metodo raccomandato è quello di creare un pacchetto <span class="emphasis"><em>Debian</em></span>. Dato che questo argomento esula da questa guida, non verrà spiegato questo metodo e si rimanda alla <a class="ulink" href="https://wiki.ubuntu.com/PackagingGuide" target="_top">Ubuntu Packaging Guide</a>. In questo caso è anche utile creare un repository per contenere il pacchetto in modo tale che gli aggiornamenti vengano prelevati da questo. Per ulteriori informazioni, consultare <a class="ulink" href="http://www.debian-administration.org/articles/286" target="_top">Debian Administration</a>.</p>
</li>
<li class="listitem">
<p>Installare l'applicativo nella directory <code class="filename">/opt</code> come raccomandato dalle <a class="ulink" href="http://www.pathname.com/fhs/" target="_top">linee guida di FHS</a>.</p>
</li>
</ul>
</div>
<p>In questo caso viene usato <span class="application"><strong>Limesurvey</strong></span> come esempio di applicazione web per cui creare un applicativo virtuale. Come accennato precedentemente. è disponibile un pacchetto di questa applicazione attraverso gli archivi PPA (Personal Package Archive).</p>
</div>
<div class="sect2" title="Utili accorgimenti">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="jeos-additions"></a>Utili accorgimenti</h3>
</div>
</div>
</div>
<div class="sect3" title="Configurare gli aggiornamenti automatici">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="jeos-automatic-updates"></a>Configurare gli aggiornamenti automatici</h4>
</div>
</div>
</div>
<p>Affinché il sistema sia configurato per aggiornarsi automaticamente a scadenze determinate, basta installare il pacchetto <span class="application"><strong>unattended-upgrades</strong></span>. Aggiungere quindi quanto segue al comando:</p>
<pre class="screen">
<span class="command"><strong>--addpkg unattended-upgrades</strong></span>
</pre>
<p>Dato che il pacchetto dell'applicazione è stata inserito nel PPA, il processo di aggiornamento non aggiornerà solamente il sistema, ma anche l'applicazione ogni qualvolta ci sia una versione aggiornata nel PPA.</p>
</div>
<div class="sect3" title="Gestire gli eventi ACPI">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="jeos-acpi"></a>Gestire gli eventi ACPI</h4>
</div>
</div>
</div>
<p>Affinché la macchina virtuale possa gestire gli eventi come riavvio e arresto che le vengono inviati, è utile installare anche il pacchetto "acpid". Aggiungere quindi quanto segue al comando:</p>
<pre class="screen">
<span class="command"><strong>--addpkg acpid</strong></span>
</pre>
</div>
</div>
<div class="sect2" title="Il comando finale">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="jeos-final-command"></a>Il comando finale</h3>
</div>
</div>
</div>
<p>Ecco il comando con tutte le opzioni presentate poco sopra:</p>
<pre class="screen">
<span class="command"><strong>sudo vmbuilder kvm ubuntu --suite natty --flavour virtual --arch i386 -o \
--libvirt qemu:///system --ip 192.168.0.100 --hostname myvm --part vmbuilder.partition --user user \
--name user --pass default --addpkg apache2 --addpkg apache2-mpm-prefork \
--addpkg apache2-utils --addpkg apache2.2-common --addpkg dbconfig-common \
--addpkg libapache2-mod-php5 --addpkg mysql-client --addpkg php5-cli \
--addpkg php5-gd --addpkg php5-ldap --addpkg php5-mysql --addpkg wwwconfig-common \
--addpkg mysql-server --addpkg unattended-upgrades --addpkg acpid --ppa nijaba \
--mirror http://mirroraddress:9999/ubuntu
</strong></span>
</pre>
</div>
<div class="sect2" title="Risorse">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="jeos-resources"></a>Risorse</h3>
</div>
</div>
</div>
<p>Per avere maggiori informaioni, per porre qualche domanda o per lasciare dei suggerimenti, contattare l'«Ubuntu Server Team» presso:</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>IRC: #ubuntu-server on freenode</p>
</li>
<li class="listitem">
<p>Mailing list: <a class="ulink" href="https://lists.ubuntu.com/mailman/listinfo/ubuntu-server" target="_top">ubuntu-server at lists.ubuntu.com</a></p>
</li>
<li class="listitem">
<p>
Also, see the <a class="ulink" href="https://help.ubuntu.com/community/JeOSVMBuilder" target="_top">JeOSVMBuilder Ubuntu Wiki</a> page.
</p>
</li>
</ul>
</div>
</div>
</div>
<div xmlns="http://www.w3.org/1999/xhtml" class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="libvirt.html"><img src="../../libs/navig/prev.png" alt="Indietro" /></a> </td>
<td width="20%" align="center">
<a accesskey="u" href="virtualization.html">
<img src="../../libs/navig/up.png" alt="Risali" />
</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="uec.html"><img src="../../libs/navig/next.png" alt="Avanti" /></a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">libvirt </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">
<img src="../../libs/navig/home.png" alt="Partenza" />
</a>
</td>
<td width="40%" align="right" valign="top"> UEC</td>
</tr>
</table>
</div>
</div>
</div>
<div id="page-border-bottom-repeat">
<div id="footer">
<div id="copyright">
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.
</div>
</div>
</div>
<div id="page-border-right-top"></div>
<div id="page-border-right-bottom"></div>
</div>
<div id="page-border-left-top"></div>
<div id="page-border-left-bottom"></div>
</div>
<p></p>
</body>
</html>