Est-il possible pour quelqu'un de modifier des fichiers sur la machine hôte au cours du processus vagrant up
? Par exemple, ajouter une entrée dans le fichier /etc/hosts
de la machine hôte pour éviter de devoir le faire manuellement?
La solution consiste à utiliser vagrant-hostsupdater
vagrant plugin install vagrant-hostsupdater
Ce plugin ajoute une entrée à votre fichier/etc/hosts sur le système hôte.
Sur les commandes et recharger, il essaie d'ajouter les informations, si ce n'est pas déjà existant dans votre fichier hosts. Si cela doit être ajouté, vous aurez demande un mot de passe administrateur, car il utilise Sudo pour modifier le fichier fichier.
En cas d'arrêt, de suspension et de destruction, ces entrées seront à nouveau supprimées.
OK, alors maintenant le mec assis à côté de vous au café peut très probablement ssh au port 2222 (EDIT: modifié sur les nouvelles versions de vagrant, sauf si vous activez explicitement l'accès externe) sur votre ordinateur, connectez-vous avec la clé non sécurisée, modifiez votre fichier Vagrantfile, car il est monté en lecture-écriture et appartient à l'utilisateur vagrant, insérez du code Ruby arbitraire. pour s'exécuter dans l'environnement hôte, et il semble maintenant qu'ils aient également un accès root sur l'environnement hôte. Brillant.
J'espère que les gens utilisent des pare-feu sur leurs machines de développement.
MODIFIER:
Ainsi, après avoir écrit ce qui précède, j'ai mis l'auteur de Vagrant en erreur, la valeur par défaut a été modifiée afin que le port 2222 ne soit pas ouvert par défaut sur l'interface externe. Importante amélioration (encore à garder à l’esprit, car l’accès externe est souvent ouvert pour diverses raisons).
Ainsi, après avoir déployé des efforts pour remédier à la situation depuis ce commentaire, je reçois maintenant des votes, apparemment parce que ce commentaire est obsolète. Zut. C'était correct quand écrit.
MODIFIER:
En réponse à Steve Buzonas, le fait est que s'il y a un risque que la machine virtuelle soit compromise, alors donner des autorisations élevées au processus vagrant up
représente un risque sérieux pour la sécurité de l'environnement de l'hôte, et aussi pouvoir modifier le fichier/etc/hosts. Le fichier d'environnement est dangereux, même sans accès root général. Comme je l'ai indiqué, l'approche de vagrant pour maintenir la sécurité de VM n'est pas particulièrement rigoureuse.
Je ne veux pas dépendre d'un plug-in pour vagabond. Cela devrait être une fonctionnalité standard dans Vagrant !!!! Jusque-là, j'utilise un script Shell pour propager les ordinateurs virtuels dans mon cluster de nouveaux ordinateurs virtuels. Les lignes clés sont:
# Obtain the hostkey based on the IP-address and add it to the known_Host list
ssh-keyscan -t ecdsa ${START}.${OFFSET} >> /home/vagrant/.ssh/known_hosts
# obtain the hostname, because you might not know it yet, with the IP address:
EXTERNAL_HOSTNAME=`ssh ${START}'.'${OFFSET} 'hostname'`
# obtain the key ot the new other VM based on hostname and also add to known_hosts
ssh-keyscan -t ecdsa ${EXTERNAL_HOSTNAME} >> /home/vagrant/.ssh/known_hosts
# so now you have the IP address and the corresponding hostname
# add to /etc/hosts without being asked for "yes/no"
echo ${START}'.'${OFFSET}' '${EXTERNAL_HOSTNAME} >> /etc/hosts
Où IPADRRESS est l'adresse IP du maître VM dans le cluster avec plusieurs VM de nœuds esclaves avec des adresses IP successives. (IPADDRESS = IPADDRESS + 1 jusqu'à ce qu'aucun ping ne soit réussi)
IPADDRESS=`ip addr show eth1 | grep 'inet ' | cut -d ' ' -f 6 | cut -d '/' -f1`
START=`echo ${IPADDRESS} | cut -d '.' -f1,2,3`
OFFSET=`echo ${IPADDRESS} | cut -d '.' -f4`
Et puis je boucle les adresses IP suivantes jusqu'à ce qu'il n'y ait plus de pings réussis . Je ne veux rien coder en dur (adresse IP ou nom d'hôte), mais pour le découvrir lui-même.
Fichier/etc/hosts résultant (après Triez/etc/hosts | uniq> /tmp/hosts.uniq && Sudo sh -c 'mv /tmp/hosts.uniq /etc/hosts':
[vagrant@master ~]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 master.RHEL70.local master
192.168.1.50 master.RHEL70.local
192.168.1.51 node01.RHEL70.local
192.168.1.52 node02.RHEL70.local
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
Auparavant, je ne savais pas comment éditer mon fichier etc/Host. Mais lorsque j'ai réinstallé fenêtre et vagabond, cette fonctionnalité a disparu.