Vagrant vous permet de gérer et de contrôler facilement plusieurs machines virtuelles. Il repose sur VirtualBox et VMWare et offre de nombreuses fonctionnalités intéressantes. Vous pouvez créer des environnements de développement isolés, expérimenter de nouveaux produits et technologies, installer de nouvelles versions de packages existants, créer votre propre centre de données privé sur votre ordinateur portable et exécuter différents systèmes d'exploitation. Tout cela est disponible dans un silo facile à gérer et totalement sûr qui ne peut pas interférer avec vos activités principales et votre système d'exploitation.
Dans ce tutoriel, je vais vous montrer comment configurer Vagrant et commencer à explorer les nombreuses opportunités qu’il offre..
Vagrant a récemment ajouté la prise en charge des conteneurs Docker aussi, mais je n'en parlerai pas dans ce tutoriel..
Vagrant est un outil basé sur la ligne de commande. Une fois l'installation terminée, ouvrez une fenêtre de console et créez un nouveau répertoire appelé 'vagrant_intro'.
cd ~ mkdir vagrant_intro cd vagrant_intro
Ce sera votre répertoire de travail à partir de maintenant. Dans le répertoire vagrant_intro, tapez:
vagrant init ubuntu / trusty64
Vous devriez voir le texte suivant:
Un 'Vagrantfile' a été placé dans ce répertoire. Vous êtes maintenant prêt à «vagabonder» votre premier environnement virtuel! Veuillez lire les commentaires dans Vagrantfile ainsi que la documentation sur 'vagrantup.com' pour plus d'informations sur l'utilisation de Vagrant.
Le 'Vagrantfile' généré est un fichier Ruby qui contrôle vos [une ou plusieurs] machines virtuelles. C'est un assez gros fichier avec beaucoup d'options commentées. Je reviendrai sur les points importants plus tard, mais essayons d’abord. Type: vagabond
.
Vagrant téléchargera ainsi une boîte virtuelle préparée avec la version Ubuntu 14.04 (fiable) 64 bits. Cela prendra un certain temps (plusieurs minutes) et crachera beaucoup de texte sur votre écran. Pendant que Vagrant bouge, parlons de ce qu’est une machine virtuelle en termes pratiques.
Une vue (que j’adopte généralement) est que la machine virtuelle simule un serveur distant. Vous ne devriez communiquer avec lui que via son interface réseau. Ceci est particulièrement utile pour tester des systèmes distribués pour lesquels vous ne devriez pas tirer parti des interfaces hôte-machine spécifiques, car elles ne seront pas disponibles sur vos systèmes de production. Lorsque vous utilisez ce mode, vous communiquerez normalement avec votre machine virtuelle via SSH (éventuellement avec un outil tel que Ansible)..
Un autre point de vue, qui est également tout à fait correct et valide, consiste à considérer la machine virtuelle comme un autre système d’exploitation exécuté sur votre ordinateur local. Cette vue est utile si vous souhaitez développer directement sur votre SE cible.
Par exemple, une configuration très courante consiste à demander aux développeurs d'écrire leur code sur un Mac utilisant Mac OS X, mais le déployer dans un environnement de production Linux. Si vous voulez vous assurer que le code que vous développez sur le Mac fonctionne correctement sous Linux sans avoir à le déployer sur un serveur distant, vous pouvez tirer parti des dossiers synchronisés dans lesquels vous lisez et écrivez des fichiers sur le système d'exploitation hôte (généralement Mac OS X). et les avoir immédiatement disponibles sur le système d'exploitation invité (généralement Linux).
Cela supprime l'étape "déployer" du cycle édition-déploiement-test lorsque vous travaillez avec des systèmes distants. Cela supprime également le besoin d'un environnement de transfert expansif qui soit une ressource partagée et qui doit être géré avec précaution par tous les développeurs. Avec une machine virtuelle locale, personne ne va casser votre environnement et vous pouvez expérimenter autant que vous le souhaitez sans craindre de casser le code de quelqu'un d'autre..
Vous pouvez bien sûr utiliser les deux dossiers synchronisés et toujours SSH sur votre VM. Il y a d'autres options qui brouillent les frontières telles que la cartographie des ports.
Voici une version simplifiée du fichier Vagrant avec certaines des options les plus importantes:
Vagrant.configure (2) faire | config | config.vm.box = "ubuntu / trusty64" config.vm.network "forwarded_port", invité: 80, hôte: 8080 config.vm.network "réseau_privé", ip: "192.168.33.33" config.vm.synced_folder "~ / vagrant_intro / data "," / vagrant_data "machine.vm.hostname =" gigi.playground.local "
La syntaxe est Ruby, ce qui vous donne beaucoup de flexibilité si vous souhaitez ajouter des conditions et des boucles. Ceci est particulièrement utile si vous utilisez votre Vagrantfile pour gérer un cluster de machines virtuelles..
Vous pouvez vous connecter à votre VM en cours d'exécution en tapant: ssh vagabond
.
Cela lancera une session SSH et vous permettra de tripoter votre VM de manière interactive..
Bienvenue dans Ubuntu 14.04.3 LTS (GNU / Linux 3.13.0-74-generic x86_64) * Documentation: https://help.ubuntu.com/ Informations système à partir du mar 9 févr. 06:17:28 UTC 2016 Chargement du système: 0.97 Processus: 80 Utilisation de /: 3.4% de 39.34GB Utilisateurs connectés: 0 Utilisation de la mémoire: 25% Adresse IP de eth0: 10.0.2.15 Utilisation de l'échange: 0% Représentez graphiquement ces données et gérez ce système à l'adresse: https: // paysage .canonical.com / Obtenir un support cloud avec Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud 0 packages peuvent être mis à jour. 0 mises à jour sont des mises à jour de sécurité.
Une fois dans votre machine virtuelle, vous pouvez pratiquement faire tout ce que vous voulez: exécuter des commandes, créer des utilisateurs, créer des fichiers et des répertoires, etc. Vous êtes connecté en tant qu'utilisateur 'vagrant', disposant des privilèges sudo, vous permettant ainsi de contrôler VM.
Vagrant mappe automatiquement le dossier sur la machine hôte contenant le fichier Vagrant dans le répertoire / vagrant de la machine invitée. Cela vous permet d'éditer des fichiers dans votre éditeur favori sur la machine hôte et de les avoir disponibles dans l'invité ou de demander à l'invité d'écrire un fichier de sortie dans le répertoire / vagrant et de parcourir le dossier synchronisé sur l'hôte..
Souvent, vous voudrez exécuter une application qui communique via un port. Le plus commun est un serveur Web. Vagrant vous permet de transférer des ports invités à la machine hôte..
Par exemple, dans la configuration ci-dessus, le port invité 80 est mappé sur le port hôte 8080. Cela signifie que le service exécuté sur le port 80 de l'invité est accessible en tant qu'hôte local: 8080 sur la machine hôte..
Voyons une démonstration. Tout d'abord, je vais placer un simple fichier index.html dans le répertoire ~ / vagrant_intro de l'hôte synchronisé avec le répertoire / vagrant_data de l'invité..
Le vagabond est génial!
Ensuite, une fois SSH entré dans la machine invitée, je vais exécuter un petit serveur Web dans le répertoire / vagrant_data:
vagrant @ vagrant-ubuntu-trusty-64: / vagrant $ sudo python3 -m http.server 80 Servir HTTP sur le port 0.0.0.0 80…
Ce serveur HTTP Python one-liner sert simplement n’importe quel fichier statique dans son répertoire de travail. Maintenant, puisque le port 80 est mappé sur le port 8080 de l'hôte, vous pouvez accéder à localhost: 8080 et afficher le résultat de l'exécution du serveur..
Vous pouvez également vous connecter à la machine virtuelle via son adresse IP comme s'il s'agissait d'un serveur vraiment séparé. J'ajoute toujours un nom d'hôte à / etc / hosts afin que je n'ai pas à utiliser l'adresse IP nue et que le code que je teste est généralement configuré avec le nom d'hôte d'un système de production. Voici ce que vous devez ajouter à votre fichier / etc / hosts:
# Système de production important 192.168.33.33 production.server.com
Maintenant, tout accès réseau à "production.server.com" sur votre machine sera envoyé à votre VM.
Dans ce cas, les programmes généralement connectés au serveur distant sont configurés avec l'adresse IP ou le nom d'hôte de la machine virtuelle. Avant Vagrant 1.7, il n'y avait qu'une seule clé privée pouvant être utilisée pour toutes les machines. Il s’agissait d’un grave problème de sécurité lorsque des personnes exposaient leur machine virtuelle sur des réseaux publics et que tout un chacun pouvait entrer SSH et obtenir un accès root. À partir de la version 1.7, Vagrant génère une nouvelle paire de clés pour chaque machine. Pour savoir où se trouve la clé privée de votre ordinateur, exécutez cette commande: ssh-config vagabond
.
Voici comment vous pouvez SSH directement sur la VM:
ssh -o UserKnownHostsFile = / dev / null -o CheckHostIP = no -o StrictHostKeyChecking = no -i ~ / vagrant_intro / .vagrant / machines / default / virtualbox / private_key [email protected]
Vagrant fournit de nombreuses commandes pour gérer les boîtes. Explorons. Pour voir une liste de commandes, tapez: vagabond
.
Utilisation: vagabond [options][ ] -v, --version Affiche la version et quitte. -h, --help Affiche cette aide. Commandes courantes: box gère les boîtes: installation, suppression, etc. connect connect connecte à un environnement Vagrant partagé à distance. Détruit les arrêts et supprime toutes les traces du statut global des sorties de la machine vagante. Environnements vagabonds pour cet utilisateur arrêté arrête la machine errante aide affiche l'aide pour une sous-commande, init initialise un nouvel environnement Vagrant en créant un compte de connexion Vagrantfile dans le paquetage Atlas de HashiCorp. Ce paquet intègre un environnement vagrant en cours d'exécution dans un plugin box: gère les plugins: installation, désinstallation, mise à jour, etc. environnement vers une destination configurée, le protocole rdp se connecte à la machine via le rechargement RDP relance la machine vagante, charge la nouvelle configuration de Vagrantfile, reprend une machine vagabonde suspendue scp copie les données dans une boîte via le partage SCP partage votre environnement Vagrant avec n'importe qui dans le monde ssh-config affiche la configuration valide OpenSSH pour se connecter aux sorties d'état de la machine atus de la machine suspendue suspend la machine démarre et met en service la version actuelle et la version la plus récente de Vagrant Pour obtenir de l'aide sur toutes les commandes individuelles, exécutez 'vagrant COMMAND -h'. Des sous-commandes supplémentaires sont disponibles, mais elles sont soit plus avancées, soit pas couramment utilisées. . Pour voir toutes les sous-commandes, lancez la commande 'vagrant list-orders'.
J'ai abordé certaines des commandes les plus courantes précédemment. le boîte
les commandes vous permettent de gérer vos boîtes directement. Par exemple, pour voir tous les ordinateurs virtuels sur votre ordinateur, tapez liste des boîtes vagabondes
. Vous pouvez mettre à jour les boîtes vers la dernière version avec mettre à jour
. le recharger
Cette commande est très utile si vous changez votre Vagrantfile. finalement, disposition
vous permet de provisionner, configurer et installer des logiciels sur votre machine virtuelle à l'aide de divers fournisseurs, dont Chef, Puppet, Salt, mon Ansible préféré et même Docker.
Vagrant vous donne un ordinateur facile à utiliser au sein de l'ordinateur. Vous pouvez gérer un parc de machines virtuelles à diverses fins. Vagrantfile est votre interface pour spécifier le comportement de la machine virtuelle. Amusez-vous à explorer Vagrant. Je viens de gratter la surface ici.