GNU/Linux >> Linux Esercitazione >  >> Linux

Crea rapidamente immagini di macchine virtuali con Virt-builder

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-10

Risultato 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-10

Risultato 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.img

Per impostazione predefinita, il formato dell'immagine è img . Puoi convertirlo in un formato diverso, ad esempio Qcow2, come di seguito:

$ virt-builder debian-10 --format qcow2

Per 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 i686

Vuoi 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 50G

Il 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:centos 

Risultato 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.txt 

Per disabilitare la password di root, esegui:

$ virt-builder centos-8.2 --root-password disabilitato 

Blocca account root:

$ virt-builder centos-8.2 --root-password bloccata 

Blocca l'account di root e disabilita la password di root:

$ virt-builder centos-8.2 --root-password bloccato:disabilitato 

Per assegnare la password di root, ma bloccare l'account di root, utilizza le seguenti opzioni:

--password-root bloccata:file:FILENAME--password-root bloccata:password:PASSWORD

Possiamo 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.local

Risultato 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 vim

Risultato 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 --update

Se 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-relabel

Personalizza 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-cache

Risultato 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.1

Per scaricare tutti i modelli disponibili nella cartella della cache locale, esegui:

$ virt-builder --cache-all-templates

Se 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-builder

Importazione 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 .


Linux
  1. Esegui una macchina virtuale Linux in Podman

  2. Virtualizzazione su PC, spiegata ai principianti con casi d'uso pratici

  3. Linux:contenuto in questi indirizzi?

  4. La macchina virtuale con sistema operativo CentOS 5 a 32 bit non indirizza la memoria fisica superiore a 3 GB

  5. Anteprima delle immagini con ngx_http_image_filter_module

Come salvare macchine virtuali con Virt-rescue

Come creare una macchina virtuale con Vagrant e VirtualBox

Ottieni immagini virtuali preconfigurate di distribuzioni Linux su OSBox [per configurare rapidamente e facilmente Linux in macchine virtuali]

Come creare una nuova macchina virtuale su Proxmox?

Come implementare rapidamente la piattaforma di gestione delle relazioni con i clienti di SuiteCRM come macchina virtuale

Come eseguire una nuova versione di AIX in una macchina virtuale con un host Linux?