GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer la mise en réseau dans Vagrant

Vagabond est si populaire parmi les développeurs et les ingénieurs DevOps, car ils peuvent continuer à utiliser les outils de développement existants (par exemple, les éditeurs, les navigateurs, les débogueurs, etc.) sur leur système local. Par exemple, les développeurs peuvent synchroniser les fichiers d'une machine invitée vers le système local, utiliser leur éditeur préféré pour modifier ces fichiers et enfin les synchroniser avec la machine invitée. De même, s'ils ont créé une application Web sur la machine virtuelle, ils peuvent accéder à cette application et la tester à partir du navigateur Web de leur système local. Dans ce guide, nous verrons comment configurer la mise en réseau dans Vagrant pour fournir un accès à la machine invitée à partir du système hôte local.

Configurer la mise en réseau dans Vagrant

Vagrant propose les trois options de réseau suivantes :

  1. Redirection de port
  2. Réseau privé (réseau hôte uniquement)
  3. Réseau public (réseau ponté)

1. Configurer la redirection de port

Par défaut, nous pouvons accéder aux machines virtuelles Vagrant via ssh en utilisant vagrant ssh commande. Lorsque nous accédons à une machine virtuelle via SSH, Vagrant transfère le port 22 de la machine invitée vers un port ouvert de la machine hôte. C'est ce qu'on appelle la redirection de port. Vagrant gère automatiquement ce processus de transfert de port sans aucune intervention de l'utilisateur. Vous pouvez également rediriger un port spécifique de votre choix. Par exemple, si vous avez redirigé le port 80 dans la machine invitée sur le port 8080 sur la machine hôte, vous pouvez ensuite accéder au serveur Web en accédant à http://localhost:8080 sur votre ordinateur hôte.

La redirection de port peut être configurée dans le "Vagrantfile". Accédez au répertoire de votre projet Vagrant et ouvrez Vagrantfile dans votre éditeur préféré.

Recherchez la ligne suivante :

Vagrant.configure("2") do |config|
[...]
   # config.vm.network "forwarded_port", guest: 80, host: 8080
end

Décommentez-le et définissez quels ports rediriger vers où. Dans cet exemple, je transfère le port 80 de l'invité au port 8080 de l'hôte.

Vagrant.configure("2") do |config|
[...]
   config.vm.network "forwarded_port", guest: 80, host: 8080
end

Redémarrez maintenant la machine Vagrant avec le fichier Vagrant mis à jour :

$ vagrant reload --provision

Vous verrez que la redirection de port est configurée dans la sortie :

==> default: Halting domain…
==> default: Starting domain.
==> default: Waiting for domain to get an IP address…
==> default: Waiting for SSH to become available…
==> default: Creating shared folders metadata…
==> default: Forwarding ports…
==> default: 80 (guest) => 8080 (host) (adapter eth0)
==> default: Rsyncing folder: /home/sk/myvagrants/ => /vagrant

Vous pouvez également détruire la VM et la relancer avec Vagrantfile mis à jour :

$ vagrant destroy <VM-name>
$ vagrant up

Connectez-vous maintenant en SSH à la machine invitée avec la commande :

$ vagrant ssh

Installez-y le serveur Web Apache. Si la VM est basée sur Deb, exécutez :

$ sudo apt install apache2

S'il s'agit d'un système basé sur RHEL, exécutez ceci :

$ sudo yum install httpd

Démarrer le service Apache :

$ sudo systemctl enable --now httpd

Ouvrez maintenant le navigateur Web de votre système hôte et accédez à http://localhost:8080 l'adresse de votre navigateur. Vous verrez la page de test Apache sur votre navigateur.

Même si nous accédons au serveur Web avec l'URL http://localhost:8080 dans le système hôte, il n'est pas servi par le serveur Web local. Le site Web réel (c'est-à-dire la page de test Apache) est servi à partir de la machine virtuelle invitée et toutes les données réseau réelles sont envoyées à l'invité.

1.1. Que faire si le port 8080 est utilisé par une autre application ?

Dans notre exemple précédent, nous avons transféré le port 80 de l'invité au port 8080 de l'hôte. En d'autres termes, le trafic envoyé au port 8080 est en fait transféré au port 80 sur la machine invitée. Que se passe-t-il si une autre application utilise actuellement le port 8080 ? Une collision de ports se produit lors de l'exécution de plusieurs machines virtuelles. Vous pouvez sans le savoir rediriger un port déjà utilisé. Pas de soucis! Vagrant a un support intégré pour détecter les collisions de ports. Si le port est déjà utilisé par une autre application, Vagrant le signalera dans la sortie, vous pouvez donc soit libérer le port, soit utiliser un autre port.

Vagrant est également assez intelligent pour trouver et corriger automatiquement les collisions de ports. S'il trouve qu'un port est entré en collision avec un autre port, il le corrigera automatiquement en utilisant tout autre port inutilisé pour vous.

Pour activer la correction automatique, ajoutez une option supplémentaire auto_correct: true dans la définition de redirection de port dans votre Vagrantfile.

config.vm.network "forwarded_port", guest: 80, host: 8080, auto_correct: true

Par défaut, Vagrant choisira le port de correction automatique entre le port 2200 et port 2250 Portée. Vous pouvez également choisir votre propre plage personnalisée en définissant la ligne suivante dans le fichier Vagrant comme ci-dessous.

config.vm.usable_port_range = (2200..2250)

Redémarrez la machine Vagrant pour que les modifications prennent effet :

1.2. Changer le protocole réseau

Par défaut, Vagrant utilise le protocole TCP pour la redirection de port. Vous pouvez cependant utiliser le protocole UDP si vous souhaitez transférer des paquets UDP.

Pour utiliser le port UDP, ajoutez la définition suivante dans votre Vagrantfile :

config.vm.network "forwarded_port", guest: 80, host: 8080, auto_correct: true protocol: "udp"

Redémarrez Vagrant VM pour appliquer les modifications.

2. Configurer le réseau privé

Dans les réseaux privés ou hôtes uniquement, une connexion réseau est créée entre le système hôte et les machines virtuelles sur le système hôte. Le réseau privé est créé à l'aide d'une carte réseau virtuelle visible par le système d'exploitation hôte. Les autres systèmes du réseau ne peuvent pas communiquer avec les VM. Toutes les opérations réseau sont autorisées dans le système hôte.

Le réseau privé peut également fonctionner comme serveur DHCP et possède son propre sous-réseau. Chaque machine virtuelle du réseau privé obtiendra une adresse IP à partir de cet espace IP. Ainsi, nous pouvons accéder directement aux machines virtuelles en utilisant l'adresse IP du système hôte.

Pour configurer un réseau privé ou hôte uniquement dans Vagrant avec une adresse IP statique, ouvrez le fichier Vagrant, recherchez la ligne suivante et décommentez-la.

config.vm.network "private_network", ip: "192.168.121.60"

Ici, 192.168.121.60 est l'adresse IP de la VM. Remplacez-le par votre propre IP.

Redémarrez la machine virtuelle pour appliquer les modifications.

Si vous souhaitez définir automatiquement l'adresse IP à partir de DHCP, modifiez la définition du réseau privé comme ci-dessous :

config.vm.network "private_network", type: "dhcp"

Une adresse IP aléatoire sera attribuée à la VM. Pour trouver l'adresse IP d'une machine virtuelle, vous devez vous connecter en SSH à l'aide de vagrant ssh commande puis trouvez son adresse IP avec ip commande.

3. Configurer le réseau public

Dans les réseaux publics ou pontés, toutes les machines virtuelles seront sur le même réseau que votre machine hôte. Chaque VM recevra sa propre adresse IP d'un serveur DHCP (si disponible dans le réseau local). Ainsi, toutes les machines virtuelles agiront comme n'importe quel autre système physique sur le réseau et elles pourront communiquer avec n'importe quel système du réseau.

Pour configurer un réseau public ou ponté, modifiez Vagrantfile, recherchez la ligne suivante et décommentez-la :

config.vm.network "public_network"

Enregistrez et fermez le fichier. Redémarrez la machine virtuelle pour appliquer les modifications. La VM obtiendra automatiquement une adresse IP.

Si vous souhaitez définir une adresse IP statique, modifiez simplement la définition du réseau comme ci-dessous :

config.vm.network "public_network", ip: "192.168.121.61"

4. Définir le nom d'hôte

Vous pouvez définir le nom d'hôte à l'aide de config.vm.hostname paramètre dans le fichier Vagrant.

Modifiez Vagrantfile dans votre éditeur préféré et ajoutez/modifiez la ligne suivante :

config.vm.hostname = "myhost.ostechnix.example"

Enregistrez et fermez le fichier. La définition ci-dessus ajoutera myhost.ostechnix.example ligne dans /etc/hosts fichier.

Redémarrez Vagrant VM pour que les modifications prennent effet.

Vérifiez si le nom d'hôte a été modifié :

[[email protected] ~]$ hostname -f
myhost.osechnix.example

Vous pouvez également vérifier directement le contenu de /etc/hosts fichier.

$ cat /etc/hosts

Exemple de résultat :

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.1.1 myhost.osechnix.example myhost

5. Activer plusieurs options de réseau

Chaque option de réseau a ses propres avantages et inconvénients. Pour une raison quelconque, vous souhaiterez peut-être configurer toutes les options réseau sur une seule machine virtuelle. Si tel est le cas, Vagrant a la capacité d'activer plusieurs options de réseau. Tout ce que vous avez à faire est de définir les options réseau une par une dans le Vagrantfile comme ci-dessous :

config.vm.hostname = "myhost.ostechnix.example"
config.vm.network "forwarded_port", guest: 80, host: 8080, auto_correct: true
config.vm.network "private_network", ip: "192.168.121.60"

Lorsque vous créez une nouvelle VM avec ce Vagrantfile, vagrant créera une VM avec les détails réseau suivants :

  • définir le nom d'hôte comme myhost.ostechnix.example
  • configurer le transfert de port
  • configurer un privé avec une IP statique 192.168.121.60

En plus de configurer plusieurs types de réseaux, nous pouvons également définir plusieurs réseaux. Par exemple, vous pouvez définir plusieurs réseaux hôtes uniquement avec différentes adresses IP comme ci-dessous.

config.vm.network "private_network", ip: "192.168.121.60"
config.vm.network "private_network", ip: "192.168.121.61"

J'espère que cela t'aides. À ce stade, vous avez peut-être une idée de base des types de réseau Vagrant et de la configuration du réseau dans Vagrant à partir de la ligne de commande. Il y a plus à apprendre. Je vous recommande de consulter la documentation officielle de Vagrant pour une configuration plus détaillée.


Linux
  1. Comment changer le port SSH sous Linux

  2. Comment installer Vagrant sous Linux

  3. Comment configurer le tunnel SSH

  4. Comment configurer le pare-feu UFW sur Ubuntu 18.04

  5. Comment configurer iptables pour qu'un port indésirable ne soit pas signalé comme filtré

Comment envoyer un ping à un numéro de port sous Linux

Comment envoyer un ping à un numéro de port spécifique

Comment installer et configurer Grafana

Comment configurer NGINX sur un serveur CentOS 7

Comment changer le port SSH sur Centos 7.x ?

Comment changer le port SSH sur Ubuntu ?