ProxmoxDebianCloudInit » History » Version 21
Simone Piccardi, 05/16/2024 11:54 AM
1 | 21 | Simone Piccardi | h1. La gestione di macchine virtuali Debian su Proxmox con cloud-init |
---|---|---|---|
2 | 1 | Simone Piccardi | |
3 | 15 | Simone Piccardi | "Proxmox VE":https://www.proxmox.com/en/proxmox-virtual-environment/overview è una potente piattaforma di virtualizzazione che consente di sostituire senza problemi, e senza costi di licenza, VmWare, supportando configurazioni avanzate, come clustering, HA, iperconvergenza, e molto altro. Ha inoltre il vantaggio di poter utilizzare sia le classiche macchine virtuali, su cui installare qualunque sistema operativo, che il nuovo approccio più veloce ed efficiente, dei container Linux. |
4 | 1 | Simone Piccardi | |
5 | 20 | Simone Piccardi | Fin dalla versione 5 Proxmox ha aggiunto il supporto di @cloud-init@, uno standard per la gestione dell'inizializzazione delle macchine virtuali supportato dai maggiori fornitori di cloud pubblici. che consente di gestire direttamente dalla piattaforma una serie di impostazioni relative alle istanze messa in esecuzione, come la configurazione di rete, la definizione degli accessi SSH, la gestione di utenti e relative credenziali, ecc. Grazie a questo meccanismo diventa possibile usare dei template da cui creare e configurare in maniera rapida ed efficace più istanze di macchine virtuali pronte all'uso. Vedremo come realizzare una immagine utilizzabile come template per gestire macchine virtuali installate con Debian. |
6 | 1 | Simone Piccardi | |
7 | 18 | Simone Piccardi | h2. Uso dell'immagine cloud-init predisposta da Debian |
8 | 15 | Simone Piccardi | |
9 | 20 | Simone Piccardi | Una scelta possibile anche per l'uso da parte di Proxmox, è quella di usare una delle immagini predisposte per il cloud fra quelle messe a disposizione direttamente da Debian. Sono state pubblicate infatti delle immagini non ufficiali, scaricabili a partire da https://cloud.debian.org/images/cloud, in particolare per Proxmox servono quelle denominate @genericloud@. Dato che le immagini non sono ufficiali, sono generate periodicamente e le si dovranno cercare nella opportuna sottodirectory. Ad esempio quelle per Debian 12 Bookworm si dovranno scaricare dalla sottodirectory @bookworm@, scegliendo in genere la più recente: in sostanza si dovrà andare a cercare in https://cloud.debian.org/images/cloud/bookworm/latest. |
10 | 15 | Simone Piccardi | |
11 | 20 | Simone Piccardi | In questa directory ci sono diversi file; le immagini infatti sono generate per più piattaforme hardware, ed in diversi formati. Per l'uso da parte di Proxmox occorrerà selezionarne una per amd64; si può prendere sia quella nel formato @.raw@ che nel formato @.qcow2@, ma quest'ultima è preferibile per le minori dimensioni ed anche perché, qualora venisse usata direttamente come immagine disco, è già pronta per le funzionalità avanzate di gestione da parte di Proxmox, come gli snapshot. Pertanto la si potrà scaricare con: |
12 | 15 | Simone Piccardi | |
13 | 1 | Simone Piccardi | <pre> |
14 | 18 | Simone Piccardi | wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2 |
15 | 1 | Simone Piccardi | </pre> |
16 | 2 | Simone Piccardi | |
17 | 15 | Simone Piccardi | insieme all'immagine si scarichi il file con le relative checksum: |
18 | 1 | Simone Piccardi | |
19 | 2 | Simone Piccardi | <pre> |
20 | 15 | Simone Piccardi | wget https://cloud.debian.org/images/cloud/bookworm/latest/SHA512SUMS |
21 | 3 | Simone Piccardi | </pre> |
22 | |||
23 | 15 | Simone Piccardi | e si passi a verificare il tutto con il comando: |
24 | 14 | Simone Piccardi | |
25 | 3 | Simone Piccardi | <pre> |
26 | sha512sum -c SHA512SUMS --ignore-missing |
||
27 | 14 | Simone Piccardi | </pre> |
28 | 3 | Simone Piccardi | |
29 | 20 | Simone Piccardi | Come primo passo occorre creare una macchina virtuale, ne vanno impostate anzitutto memoria e tipo di rete, facendo riferimento ad una (o più) delle interfacce di bridge disponibili a seconda di dove la si vuole creare di default. Il bridge potrà comunque essere cambiato in seguito, e se ne possono indicare più di uno se servono più interfacce, come pure li si possono aggiungere. Manenendosi nel caso più semplice, con una sola interfaccia di rete questo si fa, utilizzando un VMID (identificativo della macchina virtuale, da usare con i comandi di Proxmox) non allocato, con qualcosa come: |
30 | 3 | Simone Piccardi | |
31 | <pre> |
||
32 | 17 | Simone Piccardi | qm create 4242 --memory 1024 --net0 virtio,bridge=vmbr0 # --net1 virtio,bridge=vmbr1 #, etc. |
33 | 3 | Simone Piccardi | </pre> |
34 | |||
35 | 20 | Simone Piccardi | dove qualore si vogliano più interfacce di rete si potranno aggiungere come nella parte lasciata come commento; si potrà poi ottenere il disco della nostra macchina virtuale importando nello storage di Proxmox l'immagine appena scaricata, in questo caso se si sta usando LVM come backend per i dischi associato allo storage @local-lvm@ (come avviene in una installazione di default) lo si potrà fare eseguendo: |
36 | 3 | Simone Piccardi | |
37 | <pre> |
||
38 | 18 | Simone Piccardi | root@proxmox ~ # qm importdisk 4242 debian-12-genericcloud-amd64.qcow2 local-lvm |
39 | importing disk 'debian-12-genericcloud-amd64.qcow2' to VM 4242 ... |
||
40 | 1 | Simone Piccardi | Logical volume "vm-4242-disk-0" created. |
41 | 16 | Simone Piccardi | transferred 0.0 B of 2.0 GiB (0.00%) |
42 | transferred 20.5 MiB of 2.0 GiB (1.00%) |
||
43 | ... |
||
44 | transferred 2.0 GiB of 2.0 GiB (100.00%) |
||
45 | Successfully imported disk as 'unused0:local-lvm:vm-4242-disk-0' |
||
46 | 3 | Simone Piccardi | </pre> |
47 | |||
48 | 20 | Simone Piccardi | (si potrà usare al posto di @local-lvm@ qualunque altro tipo di storage configurato su Proxmox). Questo creerà l'immagine del disco con lo stesso schema di denominazione usato nella creazione delle macchine virtuali dall'interfaccia web (@vm-4242-disk-0@), convertendo il contenuto del file scaricato (si possono convertire tutti i formati supportati da @qemu-img@, primi fa tutti @.raw@ e @.qcow2@); per poter usare il disco nella macchina virtuale precedentemente creata occorrerà poi collegarcelo, con il comando: |
49 | 3 | Simone Piccardi | |
50 | <pre> |
||
51 | root@proxmox ~ # qm set 4242 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-4242-disk-0,discard=on |
||
52 | update VM 4242: -scsi0 local-lvm:vm-4242-disk-0,discard=on -scsihw virtio-scsi-pci |
||
53 | 1 | Simone Piccardi | </pre> |
54 | 3 | Simone Piccardi | |
55 | (si ometta il @,discard=on@ se lo storage utilizzato non supporta l'uso di discard). |
||
56 | 1 | Simone Piccardi | |
57 | 20 | Simone Piccardi | Si dovranno poi impostare due ulteriori caratteristiche della macchina virtuale, per abilitare l'uso di @cloud-init@ ed impostare l'avvio dal disco, con: |
58 | 1 | Simone Piccardi | |
59 | 4 | Simone Piccardi | <pre> |
60 | qm set 4242 --ide2 local-lvm:cloudinit |
||
61 | qm set 4242 --boot c --bootdisk scsi0 |
||
62 | </pre> |
||
63 | |||
64 | 20 | Simone Piccardi | in questo modo si predispone l'immagine di un CD su cui verranno salvate le configurazioni della macchina da passare a @cloud-init@ per l'impostazione, si forza l'uso del disco appena collegato come disco di avvio. Si può anche assegnare un nome alla macchina con @qm set 4242 --name nome@, cosa che si può fare anche direttamente in sede di creazione aggiungendo a @qm create@ l'opzione @--name nome@. |
65 | 4 | Simone Piccardi | |
66 | 20 | Simone Piccardi | A questo punto dall'interfaccia web si potrà utilizzare la sezione _Cloud-Init_ relativa alla macchina, e caricare una chiave SSH per l'accesso (_Cloud-Init->SSH-Public-Key->Edit->Load SSH Key File_). Se poi, come nel nostro caso, si vogliono fare delle modifiche all'immagine prima di trasformarla in template, le si dovrà assegnare un IP e farla partire. Si tenga presente che l'immagine fornita da Debian non consente un accesso dalla console (tutti gli utenti sono bloccati senza password) per cui la console può essere utilizzata solo per accertarsi di quando il processo di boot è finito e si può provare a collegarsi con SSH. |
67 | 4 | Simone Piccardi | |
68 | 20 | Simone Piccardi | L'unico possibile accesso alla macchina infatti è via SSH con autenticazione a chiavi, usando la chiave corrispondente a quella che si è caricata come descritto in precedenza. Inoltre l'accesso a @root@ è bloccato (la chiave viene riconosciuta, ma usata per stampare il messaggio di collegarsi con utente @debian@ e l'unico utente disponibile è appunto @debian@ (anche se questo può essere cambiato nella sezione _Cloud-Init_ relativa alla macchina). Si potrà pertanto entrare sulla macchina con @ssh debian@IND.IP.DEL.SERVER@ e poi eseguire @sudo -s@ per ottenere una shell di root. |
69 | 4 | Simone Piccardi | |
70 | 20 | Simone Piccardi | Dato che questa politica prevede un inutile passaggio attraverso un utente intermedio che ha comunque accesso illimitato via @sudo@, non dà di per sé nessuna garanzia di sicurezza maggiore rispetto ad un accesso diretto a @root@, al prezzo di complicare le cose per fare operazioni remote, ad esempio per fare delle copie di file con @scp@ quando queste devono essere effettuate coi privilegi di amministratore sulla macchina stessa. Pertanto è opportuno ripristinare una configurazione che consenta l'accesso SSH a @root@ con autenticazione a chiavi. |
71 | 1 | Simone Piccardi | |
72 | 20 | Simone Piccardi | Per far questo una volta collegati e ottenuta la shell di @root@ il primo passo sarà quello modificare la configurazione di @cloud-init@ aggiungendo in @/etc/cloud/cloud.cfg.d@ un ulteriore file di configurazione (ad esempio @/etc/cloud/cloud.cfg.d/09_enableroot.cfg@) con una riga che imposti @disable_root@ da @true@ a @false@. Il file è in formato YML, e si può usare un contenuto come il seguente, che soprassiede la configurazione di default di @/etc/cloud/cloud.cfg@ (i file inseriti in @/etc/cloud/cloud.cfg.d/@ sovrascrivono i default): |
73 | 1 | Simone Piccardi | |
74 | <pre> |
||
75 | # If this is set, 'root' will not be able to ssh in and they |
||
76 | # will get a message to login instead as the above $user (debian) |
||
77 | disable_root: false |
||
78 | </pre> |
||
79 | |||
80 | 20 | Simone Piccardi | inoltre occorrerà eliminare dall'@authorized_keys@ di @root@ il prefisso che blocca l'accesso alla chiave che abbiamo impostato per entrare (che non viene modificato una volta che è stato creato, anche se poi si è cambiata la configurazione di @cloud-init@), occorrerà pertanto cancellare tutta la parte: |
81 | 1 | Simone Piccardi | |
82 | <pre> |
||
83 | no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Please login as the user \"debian\" rather than the user \"root\".';echo;sleep 10" |
||
84 | </pre> |
||
85 | |||
86 | 19 | Simone Piccardi | lasciando solo i dati della chiave a partire da @ssh-rsa@. |
87 | 18 | Simone Piccardi | |
88 | 20 | Simone Piccardi | Si verifichi poi il funzionamento della modifica eseguendo un accesso diretto collegandosi con @ssh root@ID.DE.LA.MACCHINA@ e ci si ricordi anche di mettere una password di @root@ per potersi collegare in console sulla piattaforma di virtualizzazione, eseguendo @passwd@. A questo punto si potrà passare alle eventuali ulteriori personalizzazioni dell'immagine prima di trasformarla in un template: ne parleremo più avanti. |
89 | 1 | Simone Piccardi | |
90 | 19 | Simone Piccardi | |
91 | 18 | Simone Piccardi | h2. Creazione di una immagine cloud-init a partire da una installazione ordinaria. |
92 | |||
93 | 20 | Simone Piccardi | L'immagine preparata da Debian fornisce un sistema già installato e pronto all'uso di @cloud-init@ man anche se le personalizzazioni del sistema che vedremo più avanti saranno comunque applicabili, esistono delle scelte di installazione fatte nella realizzazione dell'immagine che non è possibile modificare in un secondo tempo. Ad esempio il partizionamento del disco, che non prevede una swap, e che mette la directory per EFI in una partizione in coda al disco, oppure l'uso del filesystem @ext4@. Se si vuole una partizione di swap, se non serve EFI, o se si vogliono usare altri filesystrem come @btrfs@ o @xfs@, questa non potrà essere usata. Inoltre la configurazione della rete nell'immagine di Debian si appoggia a @netplan@, che non è detto si voglia utilizzare rispetto allo standard delle installazioni ordinarie (la configurazione in @/etc/network/interfaces@). |
94 | 18 | Simone Piccardi | |
95 | 20 | Simone Piccardi | Per questo vedremo come si può creare una immagine configurata per l'uso con di @cloud-init@ partendo da una installazione ordinaria di Debian, che potremo fare nella modalità che più ci aggrada. La complessità di realizzazione in questo caso è maggiore, dovendo fare l'installazione, ma la flessibilità che si può ottenere è nettamente superiore. Pertanto assumeremo di avere installato su Proxmox una macchina virtuale con Debian con il CD per l'installazione via rete (il cosiddetto @netinst@) seguendo i passi che trattati in [[Installare una VM Debian su Proxmox|questo articolo]]. |
96 | 18 | Simone Piccardi | |
97 | 20 | Simone Piccardi | Assumeremo che l’installazione sia stata fatta nella maniera illustrata nell'articolo citato, ricordando che è in quella fase che è possibile cambiare le modalità di partizionamento del disco e l'eventuale filesystem di installazione. Le scelte specifiche che si dovranno fare in fase di installazione di Debian per avere una immagine adeguata al successivo utilizzo come template sono: |
98 | 18 | Simone Piccardi | |
99 | * si imposti per @root@ una password provvisoria per l'accesso, la si potrà rimuovere in seguito, e reimpostare con @cloud-init@ |
||
100 | * si crei un utente ordinario: @debian@ (o altro, andrà comunque cancellato) |
||
101 | 1 | Simone Piccardi | * si configuri la rete nella maniera più semplice per poter accedere sulla macchina (anche usando un eventuale DHCP), poi verrà gestita da @cloud-init@ |
102 | 18 | Simone Piccardi | * si scelga il partizionamento manuale del disco, su cui: |
103 | ** creare una prima partizione primaria di circa 4G come swap |
||
104 | ** creare una eventuale seconda partizione primaria se si vuole usare EFI (non necessaria con i default per il bios virtuale di Proxmox) |
||
105 | ** creare una ultima partizione primaria con resto del disco da usare come radice |
||
106 | * si scelga nella schermata di "Selezione del software" solo "Server SSH " e "Utilità di sistema standard" (il resto si installerà dopo). |
||
107 | 1 | Simone Piccardi | |
108 | 19 | Simone Piccardi | In questo modo si avrà un disco partizionato in modo da avere la partizione di sistema in coda al disco, cosa che ne consente una facile espansione, permettendo a @cloud-init@ di allargarla automaticamente una volta che si sia allargato il disco dall'interfaccia di Proxmox. Completata l’installazione di base si potrà passare a preparare l'immagine del server. Dato che l’installazione di default blocca l’accesso in SSH a @root@ con la password, o si usa l’utente ordinario @debian@ creato in fase di installazione e poi si ottiene una shell di root con @su@ o @sudo@, o ci si collega a @root@ sulla console via web. Tutte le operazioni seguenti sono da eseguirsi collegati come @root@, se le si vogliono effettuare passando da una connessione SSH occorrerà abilitare da subito l’accesso a @root@ anche con le password, inserendo dentro @/etc/ssh/sshd_config.d/root.conf@: |
109 | 18 | Simone Piccardi | |
110 | 1 | Simone Piccardi | <pre> |
111 | 18 | Simone Piccardi | # enable root password access |
112 | 1 | Simone Piccardi | PermitRootLogin yes |
113 | 18 | Simone Piccardi | </pre> |
114 | |||
115 | 19 | Simone Piccardi | e riavviare @sshd@ con @service ssh restart@. Non è necessario configurare in questa fase l’uso di chiavi SSH, queste possono essere impostate in qualunque momento successivo tramite @cloud-init@. Una volta che ci si sia ricollegati con successo usando direttamente @root@ (dalla console o SSH), si potrà cancellare l'utente @debian@ usato per l'accesso iniziale che non serve più: |
116 | 18 | Simone Piccardi | |
117 | 1 | Simone Piccardi | <pre> |
118 | userdel -r debian |
||
119 | </pre> |
||
120 | |||
121 | 19 | Simone Piccardi | A questo punto si potrà installare il pacchetto @cloud-init@, e configurare il programma. Dato che questo di default impiega @resolvconf@ per la configurazione della rete sarà necessario installare anche questo pacchetto, in sostanza occorrerà eseguire: |
122 | 1 | Simone Piccardi | |
123 | <pre> |
||
124 | 18 | Simone Piccardi | apt install cloud-init resolvconf |
125 | </pre> |
||
126 | |||
127 | 19 | Simone Piccardi | Si tenga conto che per poter installare i pacchetti la rete deve essere accessibile quindi la macchina deve essere stata configurata correttamente per avere un gateway di uscita ed avere un un DNS funzionante (che deve esser stato impostato, a meno di non avere un DHCP sulla rete che configura le interfacce, durante l'installazione). In generale si potrà sempre impostare manualmente un server DNS valido in @/etc/resolv.conf@, con un comando come @echo nameserver 1.1.1.1 > /etc/resolv.conf@. |
128 | 18 | Simone Piccardi | |
129 | 19 | Simone Piccardi | Una volta installato il pacchetto occorrerà impostare la configurazione di @cloud-init@ per mantenere l'accesso diretto a @root@. Inoltre avendo eliminato l'utente ordinario @debian@, per evitare che venga ricreato come previsto nel default della configurazione, occorre anche disabilitarne l'uso. Tutto questo potrà essere fatto aggiungendo un file @/etc/cloud/cloud.cfg.d/99_local.cfg@ con un contenuto come: |
130 | 18 | Simone Piccardi | |
131 | 1 | Simone Piccardi | <pre> |
132 | # If this is set, 'root' will not be able to ssh in and they |
||
133 | 18 | Simone Piccardi | # will get a message to login instead as the above $user (debian) |
134 | disable_root: false |
||
135 | |||
136 | 14 | Simone Piccardi | # A set of users which may be applied and/or used by various modules |
137 | 1 | Simone Piccardi | # when a 'default' entry is found it will reference the 'default_user' |
138 | 14 | Simone Piccardi | # from the distro configuration specified below |
139 | 18 | Simone Piccardi | users: |
140 | - root |
||
141 | 14 | Simone Piccardi | </pre> |
142 | 1 | Simone Piccardi | |
143 | 19 | Simone Piccardi | dove di nuovo si blocca la disabilitazione di @root@ e si indica quest'ultimo come unico utente da avere. |
144 | 1 | Simone Piccardi | |
145 | 19 | Simone Piccardi | Infine andrà modificato il file di configurazione delle interfacce di rete @/etc/network/interfaces@ per evitare che le voci inserite durante l'installazione interferiscano con quelle generate da @cloud-init@, che di default usa per la configurazione di rete il file in @50-cloud-init.cfg@ sotto @/etc/network/interfaces.d/@. In particolare va rimossa la configurazione di tutte le interfacce di rete presenti in @/etc/network/interfaces@, tranne @lo@ (l'interfaccia di loopback per il localhost), che però va spostata in cima al file perché non sovrascriva quella di @cloud-init@ che imposta su questa interfaccia i DNS con @resolvconf@. In sostanza @/etc/network/interfaces@ dovrà essere qualcosa del tipo: |
146 | 18 | Simone Piccardi | |
147 | 1 | Simone Piccardi | <pre> |
148 | # This file describes the network interfaces available on your system |
||
149 | # and how to activate them. For more information, see interfaces(5). |
||
150 | |||
151 | # The loopback network interface |
||
152 | auto lo |
||
153 | iface lo inet loopback |
||
154 | |||
155 | source /etc/network/interfaces.d/* |
||
156 | </pre> |
||
157 | 18 | Simone Piccardi | |
158 | 19 | Simone Piccardi | Una volta fatto questo l'immagine del sistema e pronta e per poterla usare con @cloud-init@ si potrà procedere a creare l'immagine ISO per la gestione dei dati da parte di Proxmox come nel caso precedente, con: |
159 | 1 | Simone Piccardi | |
160 | <pre> |
||
161 | 18 | Simone Piccardi | qm set 4242 --ide2 local-lvm:cloudinit |
162 | 1 | Simone Piccardi | </pre> |
163 | 6 | Simone Piccardi | |
164 | 19 | Simone Piccardi | Come ultimo passo si potrà provare ad impostare di nuovo i parametri della rete dall'interfaccia di Proxmox, per poi avviare la macchina per verificarne il funzionamento. Si rimuova eventualmente @/etc/ssh/sshd_config.d/root.conf@ se non si vuole consentire più l'accesso a password con SSH. |
165 | 6 | Simone Piccardi | |
166 | 18 | Simone Piccardi | h2. Personalizzazione dell'immagine, creazione ed uso di un template |
167 | 14 | Simone Piccardi | |
168 | 19 | Simone Piccardi | Qualunque sia la modalità con cui si sia realizzata l'immagine @cloud-init@, una volta che si è verificato il suo corretto funzionamento, e ci si è collegati alla stessa, si potranno effettuare tutte le eventuali personalizzazioni volute prima di trasformarla in template, come l'installazione di pacchetti aggiuntivi, la creazione di utenti specifici (questi potrebbero comunque essere gestiti anche tramite @cloud-init@), modifiche alle configurazione, ecc. Tutte queste modifiche faranno parte del template e si ritroveranno già pronte sulle macchine ottenute dallo stesso. |
169 | 18 | Simone Piccardi | |
170 | 19 | Simone Piccardi | Una volta completate le personalizzazioni è opportuno ripulire l’immagine da tutti i dati spuri, cancellare la cache di APT, svuotare i file di log, ecc. Per questo si sconnetta e ci si riconnetta (sempre come @root@) eseguendo il comando: |
171 | 18 | Simone Piccardi | |
172 | 1 | Simone Piccardi | <pre> |
173 | 18 | Simone Piccardi | # set +o history |
174 | </pre> |
||
175 | |||
176 | 19 | Simone Piccardi | che consente di disabilitare la history, che cancelleremo insieme a tutto il resto, eseguendo i comandi: |
177 | 18 | Simone Piccardi | |
178 | <pre> |
||
179 | > .bash_history |
||
180 | 14 | Simone Piccardi | apt clean |
181 | 18 | Simone Piccardi | find /etc -name "*~" -delete |
182 | 1 | Simone Piccardi | journalctl --rotate |
183 | 18 | Simone Piccardi | journalctl --vacuum-time=1s |
184 | fstrim / |
||
185 | 11 | Simone Piccardi | cd /var/log/ |
186 | > syslog |
||
187 | 1 | Simone Piccardi | > auth.log |
188 | 11 | Simone Piccardi | > cloud-init.log |
189 | > cloud-init-output.log |
||
190 | > debug |
||
191 | > dpkg.log |
||
192 | 1 | Simone Piccardi | > messages |
193 | 11 | Simone Piccardi | > kern.log |
194 | > user.log |
||
195 | > daemon.log |
||
196 | 18 | Simone Piccardi | > installer/syslog |
197 | 1 | Simone Piccardi | > wtmp |
198 | 18 | Simone Piccardi | > btmp |
199 | 1 | Simone Piccardi | </pre> |
200 | 11 | Simone Piccardi | |
201 | 19 | Simone Piccardi | A questo punto ci si potrà disconnettere e fermare la macchina virtuale ed una volta tolte le impostazioni aggiunte nella sezione _Cloud-Init_ aggiunte per poterla personalizzare, la si potrà trasformare in template dall'interfaccia web di Proxmox o con il comando: |
202 | 6 | Simone Piccardi | |
203 | <pre> |
||
204 | 1 | Simone Piccardi | qm template 4242 |
205 | 6 | Simone Piccardi | </pre> |
206 | |||
207 | 19 | Simone Piccardi | A questo punto si potranno generare delle nuove macchine virtuali a partire dal template in maniera praticamente istantanea creando un clone, sia dall'interfaccia web di Proxmox che con un comando come: |
208 | 18 | Simone Piccardi | |
209 | 6 | Simone Piccardi | <pre> |
210 | qm clone 4242 308 --name nuovavm |
||
211 | 1 | Simone Piccardi | </pre> |
212 | |||
213 | 19 | Simone Piccardi | Una volta creato un clone potremo riconfigurarlo a piacere per l'uso delle risorse (aumentando la RAM, le CPU virtuali e dimensione del disco) sia dalla sezione _Hardware_ dell'interfaccia web di Proxmox che dalla riga di comando con qualcosa del tipo: |
214 | 6 | Simone Piccardi | |
215 | <pre> |
||
216 | 18 | Simone Piccardi | qm resize 308 scsi0 50G |
217 | 6 | Simone Piccardi | qm set 308 --memory 2048 |
218 | 19 | Simone Piccardi | qm set 308 --socket 4 |
219 | 8 | Simone Piccardi | </pre> |
220 | 18 | Simone Piccardi | |
221 | 19 | Simone Piccardi | allo stesso modo si potranno impostare le caratteristiche pilotate da @cloud-init@, sia via web dalla sezione _Cloud-Init_, che da riga di comando; ad esempio si potrà configurare la rete con un comando come con qualcosa del tipo: |
222 | 6 | Simone Piccardi | |
223 | <pre> |
||
224 | qm set 308 --ipconfig0 ip=192.168.XX.YY/24,gw=192.168.XX.1 |
||
225 | </pre> |
||
226 | 7 | Simone Piccardi | |
227 | 19 | Simone Piccardi | mentre si potranno inoltre installare ulteriori chiavi SSH con qualcosa come: |
228 | 9 | Simone Piccardi | |
229 | <pre> |
||
230 | qm set 308 --sshkey elencochiavissh.pub |
||
231 | </pre> |
||
232 | |||
233 | dove @elencochiavissh.pub@ è un file contenente un elenco di chiavi pubbliche (una per riga) che verranno abilitate per la macchina in questione (lo si può generare da una serie di file di chiavi con un comando tipo @cat *.pub > elencochiavissh.pub@). |
||
234 | 19 | Simone Piccardi | |
235 | Una volta completate le impostazioni controllate da @cloud-init@ si potrà avviare la macchina virtuale com @qm start 308@ ed all'avvio della stessa verranno rigenerate le chiavi SSH, e tutti gli identificativi che devono essere diversi, e verranno create le configurazioni opportune. Si potranno poi cambiare le configurazioni in qualunque momento, e queste verranno applicate da @cloud-init@ al riavvio successivo (si tenga presente però che quando si fanno queste modifche le chiavi SSH che identificano il server vengono modificate, ed occorrerà riaccettarle o riverificarle di nuovo, in questo caso le relative fingerprint per la verifica vengono stampate sulla console della macchina virtuale). |