GNU/Linux >> Tutoriels Linux >  >> Linux

Créez rapidement des images de machines virtuelles avec Virt-builder

Virt-builder est un outil de ligne de commande permettant de créer facilement et rapidement une variété d'images de machines virtuelles pour une utilisation locale ou dans le cloud. Il dispose également de nombreuses options pour personnaliser les images. Vous pouvez installer de nouvelles applications sur l'image VM, définir le nom d'hôte, définir le mot de passe root, exécuter une commande ou un script lorsque la VM invitée démarre pour la première fois, ajouter ou modifier des fichiers dans l'image disque et plus encore. Toutes ces tâches peuvent être effectuées à partir de la ligne de commande et ne nécessitent pas d'autorisations root.

Virt-builder télécharge les modèles de système d'exploitation proprement préparés et signés numériquement, vous n'avez donc pas à installer manuellement le système d'exploitation. Tout ce que vous avez à faire est d'utiliser le Virt-manager Interface graphique ou Virt-install outil de ligne de commande pour lancer instantanément les machines virtuelles avec les modèles prédéfinis. Virt-builder fournit des modèles de système d'exploitation minimaux pour les variantes Linux et Unix populaires. Vous pouvez bien sûr également créer votre propre modèle.

Installer Virt-builder sur Linux

Virt-builder fait partie de la bibliothèque Libguestfs, alors assurez-vous de l'avoir installé comme décrit dans le guide suivant.

  • Accéder et modifier des images de disque de machine virtuelle avec Libguestfs

Créer des images de machines virtuelles avec Virt-builder

Construire des images de machines virtuelles avec Virt-builder est assez simple et direct.

Répertorier les modèles de machines virtuelles disponibles

Tout d'abord, répertoriez les modèles de système d'exploitation disponibles. Pour ce faire, exécutez :

$ virt-builder --list

Au moment de la rédaction de ce guide, les modèles suivants étaient disponibles :

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 x86_64 CentOS 7.3centos-7.4 x86_64 CentOS 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_64 CirrOS 0.3.1 x86_64 CirrOS 0.3.1 x86_64 CirrOS 0.3.1 x86_64 CirrOS 0.3.1 x86_64 CirrOS 0.3.1 x86_64 CirrOS 0.3.1 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 Serveur Fedora® 26 (aarch64) fedora-26 armv7l Serveur Fedora® 26 (armv7l) fedora-26 i686 Serveur Fedora® 26 (i686) fedora-26 ppc64 Serveur Fedora® 26 (ppc64) fedora-26 ppc64le Serveur Fedora® 26 (ppc64le) fedora-26 x86_64 Serveur Fedora® 26 fedora-27 aarch64 Serveur Fedora® 27 (aarch64) fedora-27 armv7l Serveur Fedora® 27 (armv7l) fedora-27 i686 Serveur Fedora® 27 (i686 )fedora-27 ppc64 Serveur Fedora® 27 (ppc64)fedora-27 ppc64le Serveur Fedora® 27 (ppc64le)fedora-27 x86_64 Serveur Fedora® 27fedora-28 i686 Serveur Fedora® 28 (i686)fedora-28 x86_64 Serveur Fedora® 28fedora- 29 aarch64 Serveur Fedora® 29 (aarch64) fedora-29 i686 Serveur Fedora® 29 (i686) fedora-29 ppc64le Serveur Fedora® 29 (ppc64le)fedora-29 x86_64 Serveur Fedora® 29fedora-30 aarch64 Serveur Fedora® 30 (aarch64)fedora-30 i686 Serveur Fedora® 30 (i686)fedora-30 x86_64 Serveur Fedora® 30fedora-31 x86_64 Fedora® 31 Serverfedora-32 x86_64 Fedora® 32 ServerfreeBSD-11.1 x86_64 FreeBSD 11.1ScientificLinux-6 x86_64 Scientific Linux 6.5ubuntu-10.04 x86_64 UbuntU 10.04 (LucID )ubuntu-16.04 x86_64 Ubuntu 16.04 (Xenial)ubuntu-18.04 x86_64 Ubuntu 18.04 (bionique)fedora-18 x86_64 Fedora® 18fedora-19 x86_64 Fedora® 19fedora-20 x86_64 Fedora® 20fedora-21 aarch64 Fedora® 21 Serveur (aarch64) Fedora® 21 21 armv7l Serveur Fedora® 21 (armv7l) fedora-21 ppc64 Serveur Fedora® 21 (ppc64) fedora-21 ppc64le Serveur Fedora® 21 (ppc64le) fedora-21 x86_64 Serveur Fedora® 21 fedora-22 aarch64 Serveur Fedora® 22 (aarch64) fedora- 22 armv7l Serveur Fedora® 22 (armv7l)fedora-22 i686 Serveur Fedora® 22 (i686)fedora-22 x86_64 Serveur Fedora® 22fedora-23 aarch64 Serveur Fedora® 23 (aarch64)fedora-23 armv7l Serveur Fedora® 23 (armv7l)fedora -23 i686 Serveur Fedora® 23 (i686)fedora-23 ppc64 Serveur Fedora® 23 (ppc64)fedora-23 ppc64le Serveur Fedora® 23 (ppc64le)fedora-23 x86_64 Serveur Fedora® 23fedora-24 aarch64 Serveur Fedora® 24 (aarch64) fedora-24 armv7l Serveur Fedora® 24 (armv7l) fedora-24 i686 Fedora® 24 S erver (i686)fedora-24 x86_64 Serveur Fedora® 24fedora-25 aarch64 Serveur Fedora® 25 (aarch64)fedora-25 armv7l Serveur Fedora® 25 (armv7l)fedora-25 i686 Serveur Fedora® 25 (i686)fedora-25 ppc64 Fedora® Serveur 25 (ppc64) fedora-25 ppc64le Serveur Fedora® 25 (ppc64le) fedora-25 x86_64 Serveur Fedora® 25 pré>  

Répertorier les machines virtuelles disponibles à l'aide de Virt-builder

Comme vous pouvez le constater, plusieurs modèles de système d'exploitation sont disponibles.

Avant de créer une image de machine virtuelle, vous voudrez peut-être consulter les notes d'installation du système d'exploitation invité pour savoir ce qu'il contient.

Par exemple, pour afficher les notes d'installation de Debian 10, exécutez :

$ virt-builder --notes debian-10

Exemple de résultat :

Debian 10 (buster)Il s'agit d'une installation minimale de Debian. Cette image est tellement minimale qu'elle n'inclut qu'un serveur sshCette image ne contient pas de clés d'hôte SSH. Pour les régénérer, utilisez :--firstboot-command "dpkg-reconfigure openssh-server"Ce modèle a été généré par un script dans l'arborescence des sources de libguestfs :builder/templates/make-template.mlLes fichiers associés utilisés pour préparer ce modèle se trouvent dans le même répertoire.

Créer une image de machine virtuelle

Je voulais télécharger les modèles d'OS dans un répertoire spécifique, j'ai donc créé ce répertoire :

$ mkdir virtbuilder$ cd virtbuilder/

Construisons la machine virtuelle Debian 10 en utilisant la commande :

$ virt-builder debian-10

Exemple de résultat :

[ 4.8] Téléchargement :http://builder.libguestfs.org/debian-10.xz########################## ################################################# ######## 100.0 %[ 83.2] Planification de la construction de cette image[ 83.2] Décompression[ 101.2] Ouverture du nouveau disque[ 119.8] Définition d'un seedvirt-builder aléatoire :avertissement :la graine aléatoire n'a pas pu être définie pour cette type d'invité[ 119.9] Définition des mots de passevirt-builder :définition du mot de passe aléatoire de root sur 66xW1CaIqfM8km2v [ 121.5] Fin du fichier de sortie :debian-10.img Taille de sortie :6,0 G Format de sortie :brut Espace utilisable total :5,8 G Espace libre :4,9 G (84 %)

Créez des images de machines virtuelles avec virt-builder sous Linux

Comme vous pouvez le voir, cette commande a construit l'image minimale de Debian 10. Il n'aura pas de comptes d'utilisateurs. Il n'aura qu'un mot de passe root aléatoire et le strict minimum de logiciels installés.

Le nom de sortie de l'image doit être identique au nom du modèle. Vous pouvez le changer selon votre goût en utilisant le -o choix :

$ virt-builder debian-10 -o ostechnix.img

Par défaut, le format d'image est img . Vous pouvez le convertir dans un format différent, par exemple Qcow2, comme ci-dessous :

$ virt-builder debian-10 --format qcow2

Par défaut, Virt-builder construira l'image de la même manière que l'architecture du système d'exploitation hôte. Par exemple, si votre système d'exploitation hôte est 64 bits, il construira alors une machine virtuelle 64 bits. Vous pouvez changer cela en 32 bits (si disponible) en utilisant --arch option.

$ virt-builder debian-10 --arch i686

Vous souhaitez créer une image de taille personnalisée ? C'est également possible. La commande suivante créera une machine virtuelle d'une taille de 50 Go :

$ virt-builder debian-10 --size 50G

Le système d'exploitation invité est redimensionné automatiquement à l'aide de virt-resize commande telle qu'elle est copiée dans la sortie.

Définir le mot de passe racine

Comme je l'ai déjà mentionné, un mot de passe aléatoire sera attribué au compte d'utilisateur root lors de la création de l'image. Si vous souhaitez définir un mot de passe spécifique pour l'utilisateur root, utilisez --root-password comme ci-dessous :

$ virt-builder centos-8.2 --format qcow2 --root-password password:centos 

Exemple de résultat :

[ 5.1] Téléchargement :http://builder.libguestfs.org/centos-8.2.xz########################### ################################################# ######## 100.0%[ 249.2] Planification de la construction de cette image[ 249.2] Décompression[ 271.3] Conversion de raw en qcow2[ 281.1] Ouverture du nouveau disque[ 319.9] Définition d'une graine aléatoire[ 320.4] Définition des mots de passe[ 323.0] Fin Fichier de sortie :centos-8.2.qcow2 Taille de sortie :6,0 G Format de sortie :qcow2 Espace utilisable total :5,3 G Espace libre :4,0 G (74 %)

La commande ci-dessus construira l'image CentOS 8.2 et attribuera un mot de passe à l'utilisateur root en tant que "centos" .

Vous pouvez également définir un mot de passe à partir d'un fichier texte :

$ virt-builder centos-8.2 --fichier root-password :~/ostechnix.txt 

Pour désactiver le mot de passe root, exécutez :

$ virt-builder centos-8.2 --root-password désactivé 

Verrouiller le compte racine :

$ virt-builder centos-8.2 --root-password verrouillé 

Verrouiller le compte root et désactiver le mot de passe root :

$ virt-builder centos-8.2 --root-password verrouillé :désactivé 

Pour attribuer un mot de passe root, mais verrouiller le compte root, utilisez les options suivantes :

--root-password verrouillé :file:FILENAME--root-password verrouillé:password:PASSWORD

Nous pouvons utiliser le mot de passe root après avoir déverrouillé l'utilisateur root avec "passwd -u" commande.

Créer des utilisateurs

Pour créer des comptes d'utilisateurs lors de la création d'une image de machine virtuelle, exécutez :

$ virt-builder centos-8.2 --firstboot-command 'useradd -m -p "" sk; chage -d 0 sk'

La commande ci-dessus créera un utilisateur appelé "sk" sans mot de passe et le forcera à définir un mot de passe lors de sa première connexion.

Définir le nom d'hôte

Pour définir le nom d'hôte de la VM :

$ virt-builder centos-8.2 --hostname virt.ostechnix.local

Exemple de résultat :

[ 4.7] Téléchargement :http://builder.libguestfs.org/centos-8.2.xz[ 7.2] Planifier comment construire cette image[ 7.2] Décompresser[ 31.0] Ouvrir le nouveau disque[ 41.9] Définir une graine aléatoire [ 42.0] Définition du nom d'hôte :virt.ostechnix.local [ 42.1] Définition des mots de passevirt-builder :Définition du mot de passe aléatoire de root sur MRn7fj1GSaeCAHQx[ 44.4] Fin du fichier de sortie :centos-8.2.img Taille de sortie :6,0 G Format de sortie :brut Espace total utilisable :5,3 G Espace libre :4,0 G (74 %)

Installer le logiciel sur l'image VM

Pour installer des packages sur une VM, exécutez :

$ virt-builder debian-10 --install vim

Exemple de résultat :

[ 5.8] Téléchargement :http://builder.libguestfs.org/debian-10.xz[ 7.4] Planifier comment construire cette image[ 7.4] Décompresser[ 25.3] Ouvrir le nouveau disque[ 29.7] Définir un seedvirt aléatoire -builder :avertissement :la graine aléatoire n'a pas pu être définie pour ce type d'invité[ 29.8] Installation des packages :vim [ 93.2] Définition des mots de passevirt-builder :définition du mot de passe aléatoire de root sur 45Hj5yxh8vRqLDcu[ 94.9] Fin du fichier de sortie :debian-10.img Taille de sortie :6,0 G Format de sortie :brut Espace total utilisable :5,8 G Espace libre :4,8 G (82 %)

Pour installer plusieurs packages, mentionnez-les entre guillemets, séparés par des virgules comme ci-dessous :

$ virt-builder debian-10 --install "apache2,htop"

Mettez à jour tous les packages de la VM :

$ virt-builder centos-8.2 --update

Si votre machine virtuelle utilise SELinux, vous devez effectuer un réétiquetage SELinux après l'installation ou la mise à jour des packages :

$ virt-builder centos-8.2 --update --selinux-relabel

Personnaliser les images de VM

Virt-builder dispose de nombreuses options pour personnaliser une image. Par exemple, vous pouvez exécuter une commande/un script spécifique lors du premier démarrage de la VM à l'aide de la commande :

$ virt-builder debian-10 --firstboot-command 'apt -y update'

Pour ajouter une ligne dans la VM, exécutez :

$ virt-builder centos-8.2 --append-line '/etc/hosts:192.168.225.1 server.ostechnix.local'

Modèles de mise en cache

Par défaut, tous les modèles seront téléchargés à partir du réseau pour la première fois. Étant donné que la taille des modèles est importante, les modèles téléchargés seront mis en cache dans le répertoire personnel de l'utilisateur.

Vous pouvez imprimer les détails du répertoire de cache et quels modèles sont actuellement mis en cache à l'aide de la commande suivante :

$ virt-builder --print-cache

Exemple de résultat :

répertoire de cache :/home/sk/.cache/virt-builder[...]centos-7.8 x86_64 nocentos-8.0 x86_64 nocentos-8.2 x86_64 mis en cache cirros-0.3.1 x86_64 nocirros-0.3.5 x86_64 pas de debian-10 x86_64 mis en cache debian-6 x86_64 nodebian-7 sparc64 non[...]

Vous pouvez également le vérifier en regardant manuellement dans le dossier cache :

$ ls $HOME/.cache/virt-builder centos-8.2.x86_64.1 debian-10.x86_64.1

Pour télécharger tous les modèles disponibles dans votre dossier de cache local, exécutez :

$ virt-builder --cache-all-templates

Si vous ne souhaitez pas mettre en cache le modèle lors de la création de l'image, utilisez --no-cache option.

Pour supprimer tous les modèles mis en cache, exécutez :

$ virt-builder --delete-cache [ 0.0] Suppression :/home/sk/.cache/virt-builder

Importer des images de disque dans l'hyperviseur

Eh bien, vous avez téléchargé le système d'exploitation souhaité et l'avez personnalisé selon vos goûts. Maintenant quoi? Importez simplement l'image et exécutez une machine virtuelle à l'aide de l'image disque nouvellement créée avec un hyperviseur. Nous avons déjà écrit un guide étape par étape pour créer une machine virtuelle KVM en utilisant l'image Qcow2. Ce guide est écrit spécifiquement pour Qcow2, mais il en est de même pour l'importation de .img formater également les images de disque.

  • Créer une machine virtuelle KVM à l'aide de l'image Qcow2 sous Linux

Virt-builder a des centaines de commandes et d'options. Je n'ai couvert que les commandes de base ici. Pour plus de détails, reportez-vous à l'âge manuel.

$ man virt-builder

Photo en vedette par Igor Starkov de Pexels .


Linux
  1. Exécuter une machine virtuelle Linux dans Podman

  2. La virtualisation sur PC, expliquée pour les débutants avec des cas d'utilisation pratiques

  3. Linux – contenu dans ces adresses ?

  4. Machines virtuelles hebdomadaires, avec scripts de construction

  5. Aperçu des images avec ngx_http_image_filter_module

Comment sauver des machines virtuelles avec Virt-rescue

Comment créer une machine virtuelle avec Vagrant et VirtualBox

Obtenez des images virtuelles préconfigurées de distributions Linux sur OSBoxes [pour configurer rapidement et facilement Linux dans des machines virtuelles]

Comment créer une nouvelle Machine Virtuelle sur Proxmox ?

Comment déployer rapidement la plateforme de gestion de la relation client SuiteCRM en tant que machine virtuelle

Comment exécuter une nouvelle version d'AIX dans une machine virtuelle avec un hôte Linux ?