Paaren Sie die Programmierung mit tmux und Vagrant
2830
neezer
Hat jemand eine klare Schritt-für-Schritt-Anleitung zum Einrichten einer gemeinsam genutzten Tmux-Sitzung in einer Vagrant- Vbox, in die sich meine Kollegen (in unserem lokalen Büro) SSH einfügen könnten? Die Artikel, die ich online gefunden habe, scheinen nur das Einrichten von Maschine zu Maschine (keine Virtualbox-Einstellungen) zu behandeln, und ich kann nicht gut mit Netzwerken umgehen, daher konnte ich keine Lösung extrapolieren ...
Wir betreiben alle die neuesten Macs in unserem Büro, übrigens.
EDIT: Um zu klären, ich weiß nicht wirklich, wie ich Vagrant einrichten sollte, damit ich SSH von einem Computer außerhalb des VMs als Host verwenden kann. Im obigen Artikel wird vorgeschlagen, dass ich den tunnelsHost auf meinem physischen Computer, auf dem die VM ausgeführt wird, hinzufügen (im Folgenden als MBP bezeichnet), also habe ich dies getan. Als nächstes kommt die ProxyCommandGastgebererklärung, von der ich auch ausgegangen bin, dass sie vom MBP leben sollte.
Als nächstes versuche ich SSHing in den MBP von einem Gastcomputer (einem anderen separaten physischen Computer in meinem Netzwerk), und das scheint zu funktionieren ... aber das bringt mich nur in den MBP, nicht in das Vagrant-Image, das auf dem MBP ausgeführt wird.
Normalerweise melde ich mich über vagrant ssh(per docs) an Vagrant-Image auf dem MBP an, und ich weiß, wie ich Ports auf der Vagrant-VM an den MBP weiterleitet. Ich gehe davon aus, dass ich dies tun müsste, damit mein Gastcomputer über das MBP SSH in mein Vagrant-Image integrieren könnte.
Kurz gesagt, ich versuche es zu erreichen. Ich mache meine Entwicklungsarbeit in Vagrant-VMs, die mein MBP sauber und frei von jeder dev-bezogenen Cruft hält und meine Entwicklerumgebungen vollständig isoliert voneinander hält. Dennoch möchte ich mit meinen Mitarbeitern über tmux, also die Paarungsprogrammierung, starten Grund, warum ich diese Frage gestellt habe.
Ich möchte all dies erreichen, ohne ein zusätzliches Benutzerkonto im MBP einzurichten oder meinen Kollegen Zugriff auf mein lokales Benutzerkonto im MBP zu gewähren, um zu meiner Vagrant VM zu gelangen, sofern dies überhaupt möglich ist.
UPDATE : Ich habe versucht, eine überbrückte Verbindung aufzubauen, laut @John Whitleys Vorschlag, und ich bin bisher nicht erfolgreich gewesen.
Mein Vagrant-Image verfügt über einen neuen Netzwerkadapter, der auf Bridged festgelegt ist und an meine AirPort-Schnittstelle auf meinem Hostcomputer gebunden ist:
Ich kann dann vagrant sshin die Box laufen ifconfigund sehen, dass es sich dabei um die IP von 10.0.2.151:
Wenn ich jedoch auf meinem Host-Computer eine neue Terminalsitzung eröffne und versuche, diese Adresse zu pingen, bekomme ich nichts:
Mir ist aufgefallen, dass die Dokumente von Vagrant in dem Abschnitt überbrückte Netzwerke ( http://vagrantup.com/v1/docs/bridged_networking.html ) das überbrückte Gerät als eth2aufzulisten scheinen und ein Elipses davor haben ein eth1Gerät mit einer anderen IP-Adresse sein. Mein ifconfigauf der Vagrant Box hat nicht zwei separate Adapter. Ich werde beim Booten des Vagabundbildes aufgefordert:
Darauf antworte ich immer 1für meinen Flughafen, von dem ich annehme, dass ich das tun sollte. Irgendwelche Gedanken, damit das funktioniert? Meine Vagrant-Box kann immer noch mit dem Internet kommunizieren, und Portweiterleitung funktioniert immer noch ...
Weitere Details bitte. Wir wissen nicht, * wie * es für Sie nicht funktioniert oder sogar, bei welchem Schritt Sie blockiert werden. Was funktioniert? Was nicht Kannst du sogar SSH in eine dieser VMs? Haben Sie mit der IT-Abteilung gesprochen?
romainl vor 12 Jahren
1
Tmux-Sitzungen werden standardmäßig gemeinsam genutzt, sodass der Teil kein Problem darstellen sollte. Verbinden Sie sich normalerweise von mehreren Standorten aus.
Daniel Andersson vor 12 Jahren
0
@romainl Siehe mein Update. habe mein Bestes gegeben, um zu erklären, was ich bisher ausprobiert habe. Wieder ist SSH über die Grundlagen hinaus nicht meine Stärke.
neezer vor 12 Jahren
0
3 Antworten auf die Frage
4
John Whitley
Am einfachsten ist es, Ihrer Vagrant VM eine Bridged-Netzwerkschnittstelle hinzuzufügen. (Ändern Sie die primäre Netzwerkschnittstelle nicht gemäß den Vagrant-Dokumenten in eine Bridged-Schnittstelle.) Eine NAT-Schnittstelle hat Zugriff auf das externe Netzwerk (z. B. kann die VM Pakete abrufen, Git-Repos usw.), aber das externe Netzwerk kann ' t auf die VM zugreifen. Nur NAT ist die Standardeinstellung des Vagrant-Netzwerks. In der VirtualBox Manager-GUI sieht das so aus:
Eine VirtualBox Bridged-Schnittstelle erscheint für das externe Netzwerk genauso wie ein realer physischer Host - einschließlich des Erwerbs einer IP-Adresse vom lokalen DHCP-Server und des Abrufs eines Domänennamens, der über DDNS zugewiesen wird, sofern das lokale Netzwerk dafür eingerichtet ist. Sie können also einfach die IP-Adresse der VM (z. B. via vagrant ssh -c ifconfig) und ssh direkt in die VM einchecken . Wieder ein Screencap der VB GUI:
Die VirtualBox Networking Docs decken die verschiedenen "Varianten" der von der VM-Umgebung unterstützten Schnittstellen ab. Einige davon werden hier nicht behandelt. Es ist ziemlich kurz und lohnt eine Lektüre.
Das letzte Etwas ist die korrekte Konfiguration der VirtualBox-VM. In Ihrer Vagrantfile müssen Sie eine Zeile wie folgt hinzufügen:
config.vm.network :bridged
vagrant reloadNach dieser Änderung ist es erforderlich, um es in Kraft zu setzen. Weitere Informationen zu dieser Methode finden Sie in den überbrückten Vagrant-Netzwerkdokumenten .
Ich hatte mein Basisgerät für die Verwendung von NAT anstelle von Bridged eingerichtet, da dieses Snippet aus den Vagrant-Dokumenten (http://vagrantup.com/v1/docs/base_boxes.html) verwendet wurde: "Jetzt ist das wirklich wichtig: Stellen Sie sicher, dass der Netzwerkcontroller sicher ist ist auf NAT gesetzt. Damit Portweiterleitung ordnungsgemäß funktioniert, muss NAT verwendet werden. Bridged-Verbindungen werden nicht unterstützt, da der Computer angeben muss, zu welchem Gerät er gebrückt wird, was unbekannt ist. " Verliere ich nur die Portweiterleitung auf meiner VM an localhost, wenn ich dies tue (und stattdessen die IP der VM in meinem Browser auflösen muss)?
neezer vor 12 Jahren
0
Diese Anmerkung zu NAT mit Vagrant ist dankbar. Ich habe den obigen Text korrigiert und klargestellt, um anzuzeigen, dass eine Bridged-Schnittstelle _added_ zur VM hinzugefügt werden sollte und nicht das NAT ersetzen sollte. Bei einer Standardinstallation von sshd wird Port 22 an alle Schnittstellen gebunden, sodass Sie immer noch ssh einschalten und tmux über die hinzugefügte Bridged-Schnittstelle starten können.
John Whitley vor 12 Jahren
0
Hey @john, siehe mein Update oben; Ich konnte diese frustrierende Arbeit nicht bekommen, da ich der Meinung bin, dass sie ziemlich einfach und unkompliziert sein sollte. Ich würde mich über weitere Einblicke freuen, die Sie mir geben könnten!
neezer vor 12 Jahren
0
Ich stellte fest, dass dies mit den offiziellen Vagrant-Boxen, die hier zu finden sind, gut funktioniert: https://github.com/mitchellh/vagrant/wiki/Available-Vagrant-Boxes. Alles, was Sie tun müssen, ist `config.vm.network: bridged`, wie Sie darauf hingewiesen haben. Muss herausfinden, warum meine andere Custom-Box nicht funktioniert hat ... Danke.
neezer vor 12 Jahren
0
@ neezer, als wilde Vermutung könnten Sie sich die sshd config in der nicht funktionierenden Box ansehen. Ist es möglich, dass Port 22 nur an einer Schnittstelle bindet? Ich logge mich über `vagrant ssh` in die VM ein und schaue herum, um zu sehen, was an Port 22 (sshd) über` sudo netstat -a -p` auf der Box gebunden ist.
John Whitley vor 12 Jahren
0
3
Lenilson Jose Dias
Über NAT kannst du dich damit verbinden:
ssh -p 2222 vagrant@[IP address of your host machine]
Wenn sich Ihr Host-Computer unter einem Proxy befindet, leiten Sie Port 2222 an das Internet weiter.
Der Benutzer, der wemux installiert hat, wird automatisch zur Wemux-Hostliste hinzugefügt. Um den Host zu ändern oder weitere Hosts hinzuzufügen, bearbeiten Sie /usr/local/etc/wemux.conf und fügen Sie den Benutzernamen zum host_list-Array hinzu.
Benutzer in der Hostliste können neue Wemux-Server starten, alle anderen Benutzer sind Wemux-Clients und treten diesen Servern bei.