Costruttore di virtù è uno strumento a riga di comando per creare una varietà di immagini di macchine virtuali per l'uso locale o cloud, in modo semplice e rapido. Ha anche molte opzioni per personalizzare le immagini. È possibile installare nuove applicazioni sull'immagine della macchina virtuale, impostare il nome host, impostare la password di root, eseguire un comando o uno script al primo avvio della macchina virtuale guest, aggiungere o modificare file nell'immagine del disco e altro ancora. Tutte queste attività possono essere eseguite dalla riga di comando e non richiedono i permessi di root.
Virt-builder scarica i modelli del sistema operativo preparati in modo pulito e con firma digitale, quindi non è necessario installare manualmente il sistema operativo. Tutto quello che devi fare è usare il Virt-manager GUI o Installazione virtuale strumento da riga di comando per avviare istantaneamente le macchine virtuali con i modelli predefiniti. Virt-builder fornisce modelli OS minimi per le popolari varianti Linux e Unix. Ovviamente puoi anche creare il tuo modello.
Installa Virt-builder su Linux
Virt-builder fa parte della libreria Libguestfs, quindi assicurati di averlo installato come descritto nella seguente guida.
- Accedi e modifica le immagini del disco della macchina virtuale con Libguestfs
Crea immagini di macchine virtuali con Virt-builder
Creare immagini di macchine virtuali con Virt-builder è abbastanza facile e diretto.
Elenca i modelli di macchine virtuali disponibili
Innanzitutto, elenca i modelli di sistema operativo disponibili. Per farlo, esegui:
$ virt-builder --list
Al momento della stesura di questa guida, erano disponibili i seguenti modelli:
centos-6 x86_64 CentOS 6.6centos-7.0 x86_64 CentOS 7.0centos-7.1 x86_64 CentOS 7.1centos-7.2 aarch64 CentOS 7.2 (aarch64)centos-7.2 x86_64 CentOS 7.2centos-7.3 x86_64 CentOS 7.3centos-7.4 x87_4centos 7.5 x86_64 CentOS 7.5centos-7.6 x86_64 CentOS 7.6centos-7.7 x86_64 CentOS 7.7centos-7.8 x86_64 CentOS 7.8centos-8.0 x86_64 CentOS 8.0centos-8.2 x86_64 CentOS 8.2cirros-0.3.1 x86_3.5 Cirros.3.5 CirrOS.6_64 0.3.5debian-10 x86_64 Debian 10 (buster)debian-6 x86_64 Debian 6 (Squeeze)debian-7 sparc64 Debian 7 (Wheezy) (sparc64)debian-7 x86_64 Debian 7 (wheezy)debian-8 x86_64 Debian 8 (jessie) debian-9 x86_64 Debian 9 (stretch)fedora-26 aarch64 Fedora® 26 Server (aarch64)fedora-26 armv7l Fedora® 26 Server (armv7l)fedora-26 i686 Fedora® 26 Server (i686)fedora-26 ppc64 Fedora® 26 Server (ppc64) fedora-26 ppc64le Fedora® 26 Server (ppc64le)fedora-26 x86_64 Fedora® 26 Serverfedora-27 aarch64 Fedora® 27 Server (aarch64)fedora-27 armv7l Fedora® 27 Server (armv7l)fedora-27 i686 Fedora® 27 Server (i686 )fedora-27 ppc64 Fedora® 27 Server (ppc64)fedora-27 ppc64le Fedora® 27 Server (ppc64le)fedora-27 x86_64 Fedora® 27 Serverfedora-28 i686 Fedora® 28 Server (i686)fedora-28 x86_64 Fedora® 28 Serverfedora- 29 aarch64 Server Fedora® 29 (aarch64)fedora-29 i686 Server Fedora® 29 (i686) fedora-29 ppc64le Fedora® 29 Server (ppc64le)fedora-29 x86_64 Fedora® 29 Serverfedora-30 aarch64 Fedora® 30 Server (aarch64)fedora-30 i686 Fedora® 30 Server (i686)fedora-30 x86_64 Fedora® 30 Serverfedora-31 X86_64 FEDORA® 31 ServerFeDORA-32 X86_64 FEDORA® 32 Serverfreebree-11.1 X86_64 FreeBSD 11.1ScientificLinux-6 x86_64 Scientific Linux 6.5UBUNT-104 )ubuntu-16.04 x86_64 Ubuntu 16.04 (Xenial)ubuntu-18.04 x86_64 Ubuntu 18.04 (bionico)fedora-18 x86_64 Fedora® 18fedora-19 x86_64 Fedora® 19fedora-20 x86_64 Fedora® 20fedora-21 aarch21 64 Fedora® 21 armv7l Fedora® 21 Server (armv7l)fedora-21 ppc64 Fedora® 21 Server (ppc64)fedora-21 ppc64le Fedora® 21 Server (ppc64le)fedora-21 x86_64 Fedora® 21 Serverfedora-22 aarch64 Fedora® 22 Server (aarch64)fedora- 22 armv7l Fedora® 22 Server (armv7l)fedora-22 i686 Fedora® 22 Server (i686)fedora-22 x86_64 Fedora® 22 Serverfedora-23 aarch64 Fedora® 23 Server (aarch64)fedora-23 armv7l Fedora® 23 Server (armv7l)fedora -23 i686 Fedora® 23 Server (i686)fedora-23 ppc64 Fedora® 23 Server (ppc64)fedora-23 ppc64le Fedora® 23 Server (ppc64le)fedora-23 x86_64 Fedora® 23 Serverfedora-24 aarch64 Fedora® 24 Server (aarch64) fedora-24 armv7l Fedora® 24 Server (armv7l)fedora-24 i686 Fedora® 24 S erver (i686)fedora-24 x86_64 Fedora® 24 Serverfedora-25 aarch64 Fedora® 25 Server (aarch64)fedora-25 armv7l Fedora® 25 Server (armv7l)fedora-25 i686 Fedora® 25 Server (i686)fedora-25 ppc64 Fedora® 25 Server (ppc64)fedora-25 ppc64le Fedora® 25 Server (ppc64le)fedora-25 x86_64 Fedora® 25 Serveropensuse-13.1 x86_64 openSUSE 13.1opensuse-13.2 x86_64 openSUSE 13.2opensuse-42.1 x86_64 openSUSE Leap 42.1openSUSE 42.1open pre>![]()
Elenca le macchine virtuali disponibili utilizzando Virt-builder
Come puoi vedere, sono disponibili più modelli di sistemi operativi.
Prima di creare un'immagine di macchina virtuale, potresti voler esaminare le note di installazione del sistema operativo guest per sapere cosa c'è dentro.
Ad esempio, per visualizzare le note di installazione di Debian 10, eseguire:
$ virt-builder --notes debian-10Risultato di esempio:
Debian 10 (buster)Questa è un'installazione Debian minima.Questa immagine è così minima che include solo un server sshQuesta immagine non contiene chiavi host SSH. Per rigenerarli usa:--firstboot-command "dpkg-reconfigure openssh-server" Questo template è stato generato da uno script nell'albero dei sorgenti di libguestfs:builder/templates/make-template.mlI file associati usati per preparare questo template possono essere trovati in la stessa directory.Crea un'immagine di una macchina virtuale
Volevo scaricare i modelli del sistema operativo in una directory specifica, quindi ho creato questa directory:
$ mkdir virtbuilder$ cd virtbuilder/Costruiamo la macchina virtuale Debian 10 usando il comando:
$ virt-builder debian-10Risultato di esempio:
[ 4.8] Download:http://builder.libguestfs.org/debian-10.xz################################# ################################################################ ######## 100.0%[ 83.2] Pianificazione come costruire questa immagine[ 83.2] Decompressione[ 101.2] Apertura del nuovo disco[ 119.8] Impostazione di un generatore seedvirt casuale:avviso:impossibile impostare un seme casuale per questo type of guest[ 119.9] Impostazione passwordsvirt-builder:impostazione della password casuale di root su 66xW1CaIqfM8km2v [ 121.5] Conclusione File di output:debian-10.img Formato di output:6,0 G Formato di output:grezzo Spazio utilizzabile totale:5,8 G Spazio libero:4,9 G (84%)![]()
Crea immagini di macchine virtuali con virt-builder in Linux
Come puoi vedere, questo comando ha creato l'immagine minima di Debian 10. Non avrà alcun account utente. Avrà solo una password di root casuale e il software minimo installato.
Il nome di output dell'immagine dovrebbe essere uguale al nome del modello. Puoi cambiarlo a tuo piacimento usando il -o opzione:
$ virt-builder debian-10 -o ostechnix.imgPer impostazione predefinita, il formato dell'immagine è img . Puoi convertirlo in un formato diverso, ad esempio Qcow2, come di seguito:
$ virt-builder debian-10 --format qcow2Per impostazione predefinita, Virt-builder creerà l'immagine come l'architettura del sistema operativo host. Ad esempio, se il tuo sistema operativo host è a 64 bit, creerà una macchina virtuale a 64 bit. Puoi modificarlo in 32 bit (se disponibile) utilizzando --arch opzione.
$ virt-builder debian-10 --arch i686Vuoi creare un'immagine di dimensioni personalizzate? È anche possibile. Il comando seguente creerà una macchina virtuale con una dimensione di 50 GB:
$ virt-builder debian-10 --size 50GIl sistema operativo guest viene ridimensionato automaticamente utilizzando virt-resize comando mentre viene copiato nell'output.
Imposta la password di root
Come ho già detto, una password casuale verrà assegnata all'account utente root durante la creazione dell'immagine. Se desideri impostare una password specifica per l'utente root, utilizza --root-password opzione come di seguito:
$ virt-builder centos-8.2 --format qcow2 --password-root-password:centosRisultato di esempio:
[ 5.1] Download:http://builder.libguestfs.org/centos-8.2.xz################################# ################################################################ ######## 100.0%[ 249.2] Pianificazione come costruire questa immagine[ 249.2] Decompressione[ 271.3] Conversione da raw a qcow2[ 281.1] Apertura del nuovo disco[ 319.9] Impostazione di un seme casuale[ 320.4] Impostazione delle password[ 323.0] Conclusione File di output:centos-8.2.qcow2 Dimensioni di output:6.0G Formato di output:qcow2 Spazio utilizzabile totale:5.3G Spazio libero:4.0G (74%)Il comando precedente creerà l'immagine CentOS 8.2 e assegnerà la password per l'utente root come "centos" .
Puoi anche impostare la password da un file di testo:
$ virt-builder centos-8.2 --file-password-root:~/otechnix.txtPer disabilitare la password di root, esegui:
$ virt-builder centos-8.2 --root-password disabilitatoBlocca account root:
$ virt-builder centos-8.2 --root-password bloccataBlocca l'account di root e disabilita la password di root:
$ virt-builder centos-8.2 --root-password bloccato:disabilitatoPer assegnare la password di root, ma bloccare l'account di root, utilizza le seguenti opzioni:
--password-root bloccata:file:FILENAME--password-root bloccata:password:PASSWORDPossiamo usare la password di root dopo aver sbloccato l'utente root con "passwd -u" comando.
Crea utenti
Per creare account utente durante la creazione di un'immagine di macchina virtuale, esegui:
$ virt-builder centos-8.2 --firstboot-command 'useradd -m -p "" sk; chage -d 0 sk'Il comando precedente creerà un utente chiamato "sk" senza password e lo costringerà a impostare la password al suo primo accesso.
Imposta nome host
Per impostare il nome host sulla VM:
$ virt-builder centos-8.2 --hostname virt.otechnix.localRisultato di esempio:
[ 4.7] Download:http://builder.libguestfs.org/centos-8.2.xz[ 7.2] Pianificazione di come costruire questa immagine[ 7.2] Decompressione[ 31.0] Apertura del nuovo disco[ 41.9] Impostazione di un seme casuale [ 42.0] Impostazione del nome host:virt.otechnix.local [ 42.1] Impostazione di passwordsvirt-builder:impostazione della password casuale di root su MRn7fj1GSaeCAHQx[ 44.4] Fine File di output:centos-8.2.img Dimensioni di output:6.0G Formato di output:grezzo Spazio utilizzabile totale:5.3G Spazio libero:4.0G (74 %)Installa il software sull'immagine della macchina virtuale
Per installare i pacchetti su una macchina virtuale, esegui:
$ virt-builder debian-10 --install vimRisultato di esempio:
[ 5.8] Download:http://builder.libguestfs.org/debian-10.xz[ 7.4] Pianificazione di come costruire questa immagine[ 7.4] Decompressione[ 25.3] Apertura del nuovo disco[ 29.7] Impostazione di un seedvirt casuale -builder:avviso:impossibile impostare un seme casuale per questo tipo di guest[ 29.8] Installazione dei pacchetti:vim [ 93.2] Impostazione di passwordsvirt-builder:impostazione della password casuale di root su 45Hj5yxh8vRqLDcu[ 94.9] Fine File di output:debian-10.img Dimensioni di output:6.0G Formato di output:grezzo Spazio utilizzabile totale:5.8G Spazio libero:4.8G (82 %)Per installare più pacchetti, menzionali tra virgolette, separati da virgole come di seguito:
$ virt-builder debian-10 --install "apache2,htop"Aggiorna tutti i pacchetti nella macchina virtuale:
$ virt-builder centos-8.2 --updateSe la tua VM usa SELinux, devi eseguire la rietichettatura di SELinux dopo aver installato o aggiornato i pacchetti:
$ virt-builder centos-8.2 --update --selinux-relabelPersonalizza immagini VM
Virt-builder ha molte opzioni per personalizzare un'immagine. Ad esempio, puoi eseguire un comando/script specifico al primo avvio della VM utilizzando il comando:
$ virt-builder debian-10 --firstboot-command 'apt -y update'Per aggiungere una riga nella VM, esegui:
$ virt-builder centos-8.2 --append-line '/etc/hosts:192.168.225.1 server.otechnix.local'Modelli di memorizzazione nella cache
Per impostazione predefinita, tutti i modelli verranno scaricati dalla rete per la prima volta. Poiché le dimensioni dei modelli sono grandi, i modelli scaricati verranno memorizzati nella cache nella home directory dell'utente.
Puoi stampare i dettagli della directory della cache e quali modelli sono attualmente memorizzati nella cache utilizzando il seguente comando:
$ virt-builder --print-cacheRisultato di esempio:
directory cache:/home/sk/.cache/virt-builder[...]centos-7.8 x86_64 nocentos-8.0 x86_64 nocentos-8.2 x86_64 memorizzato nella cache cirros-0.3.1 x86_64 nocirros-0.3.5 x86_64 nodebian-10 x86_64 memorizzato nella cache debian-6 x86_64 nodebian-7 sparc64 no[...]Puoi anche verificarlo cercando manualmente nella cartella della cache:
$ ls $HOME/.cache/virt-builder centos-8.2.x86_64.1 debian-10.x86_64.1Per scaricare tutti i modelli disponibili nella cartella della cache locale, esegui:
$ virt-builder --cache-all-templatesSe non desideri memorizzare nella cache il modello durante la creazione dell'immagine, utilizza --no-cache opzione.
Per eliminare tutti i modelli memorizzati nella cache, esegui:
$ virt-builder --delete-cache [ 0.0] Eliminazione:/home/sk/.cache/virt-builderImportazione di immagini disco nell'hypervisor
Bene, hai scaricato il sistema operativo desiderato e l'hai personalizzato a tuo piacimento. E adesso? Basta importare l'immagine ed eseguire una macchina virtuale utilizzando l'immagine disco appena creata con un hypervisor. Abbiamo già scritto una guida passo passo per creare una macchina virtuale KVM utilizzando l'immagine Qcow2. Questa guida è stata scritta specificamente per Qcow2, tuttavia è la stessa per l'importazione di .img formatta anche le immagini del disco.
- Crea una macchina virtuale KVM utilizzando l'immagine Qcow2 in Linux
Virt-builder ha centinaia di comandi e opzioni. Ho trattato solo i comandi di base qui. Per maggiori dettagli, fare riferimento all'età manuale.
$ man virt-builder
Foto in primo piano di Igor Starkov da Pexel .