Wie kann ich meine Arbeitsentwicklerumgebung und meine Benutzerumgebung effektiv voneinander trennen?

1023
Victor Polevoy

Ich habe python-virtualenvfrüher für Python-Tools verwendet, aber jetzt habe ich einen neuen Remote-Job gefunden, der viele native Tools benötigt, um in meinem System installiert zu werden. Die Frage ist, wie kann ich meine Arbeitsentwicklerumgebung und die Heimbenutzerumgebung voneinander trennen?

Zum Beispiel muss ich installieren, opencvwas viele Umgebungsänderungen erfordert, aber ich möchte diese Änderungen nicht ständig in meinem System behalten. Ich möchte sie (und die gesamte Software, die ich für meine Remote-Arbeit benötige) in einer anderen Umgebung einstellen und benutze es dort, wenn ich brauche. Das erste, was mir einfällt, ist die einfache Verwendung von chroot. Aber vielleicht gibt es einige coole Praktiken, die ich nicht kenne?

Ich habe chroot nicht viel benutzt, darum frage ich.

1

3 Antworten auf die Frage

1
Matthew O'N.S Jordan

Ich würde eines der folgenden Tools vorschlagen;

Docker

oder

LXC

Ich lerne immer noch Docker, wie ich es vor kurzem entdeckt habe, aber es dauert nicht lange, um zu erkennen, dass Docker ein für Entwickler entwickeltes Werkzeug ist. Lass es drehen und genieße! Beachten Sie, dass Docker bei der Konfiguration von Dingen über Umgebungsvariablen schaukelt.

Ich habe LXC-Werkzeuge für eine Weile verwendet und sie sind ziemlich okay, aber für die Entwicklung erfordern sie eine Menge Setup-Arbeiten. Und chroots erfordern auch noch mehr Arbeit, sie nehmen mir den Entwicklungsfokus ab. Und sie sind nicht sehr tragbar.

Vielleicht möchten Sie auch einen Blick auf Vagrant werfen.

Ich kann hier nicht viele Links veröffentlichen, da ich neu bin, aber Vagrant ist so beliebt, wenn Sie es in eine Google-Suche eingeben, wird es das erste oder zweite Ergebnis sein, das Sie sehen.

"Erstellen und konfigurieren Sie leichte, reproduzierbare und portable Entwicklungsumgebungen."

Beachten Sie auch, dass Vagrant mit verschiedenen Virtual Machine- oder Containerumgebungen zusammenarbeitet. Stellen Sie sich dies als ein Werkzeug vor, mit dem Sie Ihre virtuelle Entwicklungsumgebung mit einem einzigen Befehl "vagrant up" erstellen können. Und es ist nicht auf Linux beschränkt, es funktioniert (genau dasselbe!) Unter Linux, Mac OS und Windows.

Nicht zu vergessen, wenn Sie Docker und / oder Vagrant verwenden, können Sie Ihre Dockerfile oder Vagrantfile in Ihr Versionskontrollsystem einchecken. So werden sie Teil Ihres Projekts und ändern sich mit Ihrem Projekt.

Hoffe, dass diese Tools helfen.

1
Matty

Docker kann für Sie arbeiten, aber das ist nicht das beste Werkzeug für den Job.

Ich würde dringend vorschlagen, dass Sie sich Vagrant ansehen . Es wird genau das tun, woran ich glaube und es ist viel einfacher, damit umzugehen.

Kurz gesagt, Sie haben Ihren Desktop und installieren Virtualbox und Vagrant.

Möglicher Workflow:

  1. Laden Sie eine vorgefertigte Box herunter, die so nah wie möglich an Ihre Bedürfnisse angepasst ist
  2. Startup Vagrant mit dieser Box
  3. SSH in die virtuelle Maschine (Box)
  4. Mach dein Ding
  5. Stoppen Sie die Maschine, wenn Sie fertig sind.

Einige der Vorteile sind, dass Sie ein Skript hinzufügen können, das automatisch ausgeführt wird, wenn Sie Vagrant starten. Dies kann Ihre Umgebung so konfigurieren, wie Sie es wählen, und sicherstellen, dass es jedes Mal identisch ist, Chef / Puppet / Ansible /? kann auch mit großer Wirkung eingesetzt werden.

Wenn Sie keine Lust haben, viele virtuelle Maschinen in der Nähe zu haben, haben Sie die Möglichkeit, sie zu löschen. Wenn Sie sie erneut benötigen, können Sie die Box einfach erneut herunterladen und das Skript ausführen.

Ein weiterer guter Punkt bei der Entwicklung ist, dass, wenn etwas schief läuft, das System heruntergefahren und wieder hochgefahren werden kann und es sauber und frisch ist. Freigegebene Ordner werden ebenfalls automatisch konfiguriert, sodass Sie alles, was Sie möchten, in das Root-Verzeichnis vagrant auf dem Host ablegen können. Dieses Verzeichnis befindet sich auf der virtuellen Maschine in / vagrant.

Wenn Sie ein Tool namens Packer verwenden, können Sie die Vagrant-Box und auch andere Typen wie OVF, Digital Ocean und AWS erstellen. Racker ist auch eine großartige Ergänzung zum Packer. Zu einem bestimmten Zeitpunkt möchten Sie möglicherweise bereitstellen, um sicherzustellen, dass das bereitgestellte Image zu 100% mit dem Image übereinstimmt, mit dem Sie gearbeitet haben. Packer ist das, was Vagabund und viele andere Unternehmen zum Erstellen von Vagabunden verwenden.

http://blog.endpoint.com/2014/03/provisioning-development-environment.html

http://blog.codeship.io/2013/11/07/building-vagrant-machines-with-packer.html

0
andrewsh

Wenn Sie Debian verwenden, würde ich Ihnen empfehlen debootstrap, Chroots zu erstellen. Außerdem gibt es ein Werkzeug, mit schrootdem Sie eine beliebige Anzahl von Chroots erstellen, Berechtigungen verwalten und alle möglichen Aufgaben damit erledigen können. Leider ist es für mich viel zu fortgeschritten, also verwende ich nur debootstrapalleine und manchmal cowbuilder/ pbuilder, um eine saubere Build-Umgebung zu erstellen.