Agence web » Actualités du digital » Comment créer des machines virtuelles VirtualBox à partir du terminal Linux

Comment créer des machines virtuelles VirtualBox à partir du terminal Linux

La plupart des fournisseurs de cloud louent des serveurs virtuels plutôt que du matériel réel. Si vous voulez faire la même chose sur vos propres serveurs, soit pour exécuter différents systèmes d'exploitation ou gérer plusieurs environnements, vous pouvez le faire entièrement à partir de votre terminal.

Si vous prévoyez seulement en utilisant des machines virtuelles, vous pourriez être intéressé par un hyperviseur. Un hyperviseur remplace votre système d'exploitation hôte et est conçu sur mesure pour gérer plusieurs machines virtuelles. Vous ne pourrez pas exécuter d'applications sur le système d'exploitation hôte, mais vous pouvez facilement virtualiser le serveur Ubuntu ou quelque chose et exécuter les applications au-dessus de l'hyperviseur.

Installation de VirtualBox et du pack d'extension VBox

VirtualBox est un logiciel de virtualisation basé sur une interface graphique gratuite qui s'exécute en tant qu'application sur votre système d'exploitation hôte (un hyperviseur de type 2). Vous l'avez peut-être déjà utilisé sur un ordinateur personnel pour configurer une machine virtuelle, mais VirtualBox a en fait une interface de ligne de commande complète et est entièrement utilisable à partir d'un seul terminal, ce qui le rend parfait pour ce cas d'utilisation. Une autre solution serait QEMU, mais VirtualBox a fait ses preuves et est imbattable pour être gratuit et open source.

Certes, la CLI VirtualBox est un peu lourde, donc si vous ne faites que jouer sur un serveur domestique et que vous avez un peu de RAM à épargner, vous pouvez plutôt installer un environnement de bureau léger sur votre serveur et configurer VirtualBox de la manière normale. Vous pouvez toujours exécuter des machines virtuelles en mode sans tête pour les faire fonctionner après votre déconnexion du DE.

Si vous prévoyez de vous en tenir à l'interface CLI, l'installation est assez simple, car elle est disponible directement à partir de apt:

sudo apt-get install virtualbox

Vous voudrez bien noter la version qui est installée ( VBoxManage -v ), car vous devrez installer quelques éléments supplémentaires. Étant donné que nous configurons en mode sans tête, nous aurons besoin d'un moyen de se connecter à la machine avant de pouvoir configurer SSH / RDP.

Rendez-vous sur la page de téléchargement de VirtualBox et recherchez le lien du pack d'extension pour la version sur laquelle vous exécutez. Téléchargez-le avec wget:

wget https://download.virtualbox.org/virtualbox/5.2.42/Oracle_VM_VirtualBox_Extension_Pack-5.2.42.vbox-extpack

Et installez-le:

sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.2.42.extpack

Pour une raison quelconque, VRDE ne semblait pas fonctionner pour nous avec le pack d'extension VNC intégré installé. La suppression de ce pack a résolu le problème:

sudo VBoxManage extpack uninstall VNC

Configuration d'une machine virtuelle

Pour commencer, nous allons créer une nouvelle machine virtuelle nommée «Ubuntu». Vous pouvez afficher une liste des types de systèmes d'exploitation pris en charge avec VBoxManage list ostypes.

sudo VBoxManage createvm --name "Ubuntu" --ostype Ubuntu_64 --register

Donnez à la machine un peu de RAM et créez un nouveau disque dur. Nous allons utiliser 4 Go de RAM et 32 ​​Go d'espace disque dur, mais ceux-ci peuvent tous deux être étendus plus tard. Notez que le disque dur est un disque virtuel et qu’il n’est pas préalloué.

sudo VBoxManage modifyvm "Ubuntu" --memory 4096
sudo VBoxManage createhd --filename "Ubuntu.vdi" --size 32000

Définissez le nombre de vCPU. Ceci est mesuré en threads, pas en cœurs de CPU complets.

sudo VBoxManage modifyvm "Ubuntu" --cpus 2

Vient ensuite une configuration supplémentaire pour le disque dur. Habituellement, cela se produit automatiquement lors de la création de machines à partir de l'interface graphique, mais vous devrez créer manuellement un contrôleur SAS et le connecter à la machine virtuelle pour que le disque dur fonctionne correctement.

sudo VBoxManage storagectl "Ubuntu" --name "SAS Controller" --add sas --controller LSILogicSAS
sudo VBoxManage storageattach "Ubuntu" --storagectl "SAS Controller" --port 0 --device 0 --type hdd --medium "Ubuntu.vdi"
sudo VBoxManage storagectl "Ubuntu" --name "SAS Controller" --hostiocache on

Nous ferons de même pour le disque qui contiendra l'ISO pour installer le système d'exploitation. Cela suppose que votre ISO se trouve à /home/user/Ubuntu.iso, modifiez-le en conséquence.

sudo VBoxManage storagectl "Ubuntu" --name "IDE Controller" --add ide --controller PIIX4
sudo VBoxManage storageattach "Ubuntu" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium "/home/user/Ubuntu.iso"

Ensuite, retournez certains commutateurs liés aux performances pour éviter les ralentissements dus à une utilisation excessive de la RAM:

sudo VBoxManage modifyvm "Ubuntu" --nestedpaging on
sudo VBoxManage modifyvm "Ubuntu" --largepages on

Ensuite, nous allons créer le réseau que cette machine virtuelle utilisera. Il existe de nombreuses options pour cette étape:

  • NAT, le plus simple, qui permet simplement à la machine virtuelle de communiquer avec le monde extérieur à l'aide de la traduction d'adresses réseau (NAT). Cela n'autorise pas les machines virtuelles à se parler et n'autorise pas les contacts d'hôte à invité à moins que le port ne soit transféré.
  • Le réseau NAT est similaire au NAT, sauf que le réseau est partagé entre les machines virtuelles et qu'elles peuvent se parler. Le réseau NAT agit comme un sous-réseau virtuel.
  • Ponté, qui relie directement la connexion physique à la machine virtuelle. La machine virtuelle a une adresse IP réelle sur votre réseau. Cela peut fonctionner même avec une seule connexion Wi-Fi / Ethernet, mais si vous avez une carte réseau avec plusieurs ports Ethernet, vous pouvez affecter une interface entière directement à une machine virtuelle.
  • Réseau virtuel, qui connecte plusieurs instances dans un réseau virtualisé isolé. Ceci est utile pour modéliser des réseaux réels, mais ne convient pas à la plupart des cas d'utilisation.
  • Adaptateur hôte uniquement, est similaire au réseau virtuel, mais permet de parler à l'hôte (pas à Internet).

Pour cet exemple, nous irons avec NAT Network, car il est simple à configurer et le plus polyvalent du bouquet, offrant un équilibre entre connectivité et isolation.

Créez un nouveau réseau sur le 10.0.0.0/24 sous-réseau, démarrez-le:

sudo VBoxManage natnetwork add --netname natnet1 --network "10.0.0.0/24" --enable
sudo VBoxManage natnetwork start --netname natnet1

Et attachez-le à la machine virtuelle:

sudo VBoxManage modifyvm "Ubuntu" --nic1 natnetwork --nat-network1 natnet1

Ensuite, nous devrons configurer la façon dont nous accédons à cette instance. Étant donné que nous l'installons sur un serveur sans tête (pas de sortie vidéo), nous ne pourrons pas terminer le processus d'installation et installer un client RDP sur le système d'exploitation invité. Pour résoudre ce problème, nous utiliserons le serveur VRDE de VirtualBox, la principale raison pour laquelle nous avons installé le pack d'extension VirtualBox plus tôt. Cela capture la sortie de l'affichage virtuel et le rend disponible sur RDP.

Activez-le et définissez un port pour celui-ci. Vous devez vous assurer que le système d'exploitation hôte a ce port ouvert.

sudo VBoxManage modifyvm "Ubuntu" --vrde on
sudo VBoxManage modifyvm "Ubuntu" --vrdeport 5587

Enfin, nous pouvons démarrer la machine virtuelle en mode sans tête et commencer l'installation du système d'exploitation.

sudo VBoxManage startvm "Ubuntu" --type headless

Notez que le mode sans tête signifie qu'il fonctionne sur un serveur sans tête, et non que le système d'exploitation invité n'a pas de sortie vidéo.

Il faudra une ou deux secondes pour démarrer et vous pourrez démarrer un client RDP et vous y connecter en utilisant le port que vous avez spécifié. Il peut demander un nom d'utilisateur et un mot de passe; VRDE est par défaut «admin» sans mot de passe.

Transfert de port après l'installation

Une fois l'installation du système d'exploitation terminée, vous devrez effectuer une redirection de port pour maintenir l'accès après la désactivation de VRDE, essentiellement comme l'ouverture des règles de pare-feu. Si vous configurez un environnement sans tête comme Linux, vous devrez simplement transférer SSH. La commande suivante ajoutera une règle de transfert de port à votre réseau NAT pour transférer le port 2200 du système d'exploitation hôte vers le port SSH par défaut de l'invité. Notez que ce port devra être ouvert dans le pare-feu de votre hôte pour que cela fonctionne.

sudo VBoxManage natnetwork modify --netname natnet1 --port-forward-4 "ssh:tcp:():2200:(10.0.0.2):22"

Si vous configurez RDP, vous devrez configurer le serveur RDP dans le système d'exploitation invité et vous assurer que le port RDP est ouvert dans le pare-feu de l'invité. Après cela, vous pouvez effectuer le portage de la même manière:

sudo VBoxManage natnetwork modify --netname natnet1 --port-forward-4 "rdp:tcp:():5589:(10.11.0.2):3389"

Si vous devez supprimer des règles de transfert de port, vous devrez les supprimer par leur nom avec cette commande plutôt lourde (la première chaîne avant les deux-points):

sudo VBoxManage natnetwork modify --netname natnet1 --port-forward-4 delete rdp

Une fois que vous avez vérifié que vous pouvez vous connecter via SSH / RDP directement au système d'exploitation invité, vous pouvez désactiver VRDE:

sudo VBoxManage modifyvm "Ubuntu" --vrde off

Si vous prévoyez d'utiliser cette machine virtuelle sur RDP pendant des périodes prolongées, vous souhaiterez peut-être installer la suite VirtualBox Guest Additions pour votre système d'exploitation invité.


Si vous décidez de gérer VirtualBox à l'aide de l'interface graphique après avoir configuré cette machine virtuelle à partir de la CLI, gardez à l'esprit que cette machine virtuelle a été créée en tant que root, vous devrez donc lancer l'interface graphique de VirtualBox en tant que root pour voir cette machine virtuelle dans la liste. Sinon, cela devrait fonctionner normalement.

De plus, si vous souhaitez que la machine fonctionne pendant que votre environnement de bureau est arrêté, vous devrez cliquer avec le bouton droit pour lancer la machine en mode sans tête.

★★★★★