Ich habe einige EC2-Linux-Images, die nächtliche Verarbeitungsjobs für eines meiner Projekte ausführen. Von Zeit zu Zeit muss ich einsteigen, einige Codeänderungen vornehmen, einige Dinge konfigurieren und das Image neu bündeln.
Mein Toolset für diese Vorgänge ist äußerst spärlich (SSH in die Box, Dateien in VIM bearbeiten, WGET-Remote-Dateien, die ich benötige), und ich vermute, dass es einen viel besseren Weg gibt, dies zu tun. Ich bin gespannt, was andere Leute in meiner Position tun.
Verwenden Sie eine Art Fenstersystem und Remotedesktop, um auf die Box zuzugreifen, oder ist alles eine Befehlszeile? Das Verwalten von EC2-Windows-Boxen ist trivial, da Sie einfach Remotedesktop in Dateien über das Netzwerk übertragen können. Gibt es ein Äquivalent dazu in der Linux-Welt?
Führen Sie Ihre Konfigurationsänderungen / Skript-Optimierungen direkt auf dem Computer durch? Oder haben Sie auf Ihrer lokalen Box etwas eingerichtet, um diese Dateien remote zu bearbeiten? Oder bearbeiten Sie sie einfach aus der Ferne und übertragen sie dann bei jedem Speichern?
Wie verschieben Sie Dateien zwischen EC2 und Ihrer lokalen Umgebung hin und her? FTP? Eine Art zugeordnetes Laufwerk über VPN?
Ich müsste wirklich einige Best Practices für die Verwaltung dieser Boxen einrichten. Vorschläge, um einige der Schmerzen zu beseitigen, wären sehr willkommen!
EDIT: Offensichtlich war ich oben nicht klar, da sich die ersten beiden Antworten um die Verwaltung und Konfiguration von EC2-Instanzen drehten. Ich möchte nur wissen, wie man einen Remotedesktop in einen laufenden Linux-Server einbindet, damit das Verschieben und Bearbeiten von Dateien weniger schmerzhaft ist.
quelle
Antworten:
Ich mache nicht mehr viel manuelle Systemadministration. Ich betrachte meine Infrastruktur als programmierbare Einheit und behandle sie als solche, indem ich Systeme mit Tools konfiguriere, die das Konfigurationsmanagement, die Wartung von EC2-Knoten usw. automatisieren. Tools in meiner Toolbox:
(1) - Offenlegung, ich arbeite für Opscode. Andere Werkzeuge füllen den Raum wie die Puppe von Reductive Lab.
Ich bündle ein AMI, wenn ich einen Knoten so aufgebaut habe, wie ich es für eine bestimmte Funktion benötige. Wenn ich beispielsweise einen Rails-App-Server erstelle, werden alle erforderlichen Pakete installiert, um beim Erstellen Zeit zu sparen.
Wenn alles andere fehlschlägt, melde ich mich mit SSH bei Systemen an. Ich habe viele Jahre lang manuelle Systemadministration betrieben, das ist ein alter Hut.
Ich installiere keine GUI auf Servern, es sei denn, ein Paket ist abhängig und wird automatisch installiert.
Normalerweise mache ich zwei Arten der Dateiübertragung / Dateipflege.
Für plattformeigene Pakete verwende ich das Standard-Paketverwaltungstool wie APT oder YUM. Für Quellinstallationen (Something.tar.gz) lade ich normalerweise über wget herunter.
Konfigurationsdateien sind normalerweise ERB-Vorlagen, die von Chef verwaltet werden.
Ich verwende SSH und SCP / SFTP, um Dateien manuell zu übertragen.
Ich behalte alles, was mit der Verwaltung von Systemen zu tun hat, in einem Softwaresteuerungs-Repository. Hier ist mein typischer Workflow beim Aktualisieren der Konfiguration auf einem oder mehreren Systemen. Ich starte von meiner lokalen Workstation aus.
Es gibt einige Speicherorte, an denen Dateien, die ich auf EC2-Knoten verwende, möglicherweise gespeichert werden.
Ich arbeite viel in EC2 und teste hauptsächlich Umgebungen und Änderungen. Aufgrund meiner Tools und meines Workflows verbringe ich mehr Zeit mit der Arbeit an Dingen, die mir wirklich wichtig sind, und weniger mit dem Umgang mit einzelnen Dateien und dem Nachdenken über bestimmte Konfigurationen.
quelle
Alle unsere Software wird über RPM bereitgestellt. Jeder EC2-Instanztyp wird durch eine Kickstart-Datei beschrieben (in der die zu installierenden RPMs aufgelistet sind ...). Durch das Kickstart-Setup kann eine funktionierende Maschine jedes Instanztyps in etwa 10 Minuten von Grund auf neu erstellt werden.
Wir haben dann ein Programm, das anaconda (das Red Hat-Installationsprogramm) aufruft, um eine Kickstart-Datei zu erstellen, das System in einem Verzeichnis zu installieren, das Verzeichnis zu bündeln und es als Amazon Machine Image an S3 zu übertragen. Das ist alles ein Schritt, also tippe ich einfach:
Da eine Maschine in etwa 40 Minuten vollständig neu erstellt, hochgeladen und ausgeführt werden kann, ist es einfacher, neue Maschinenabbilder zu erstellen, als Sysadmin für die tatsächlichen (wegwerfbaren) EC2-Instanzen auszuführen. Daher wird auf EC2-Instanzen tatsächlich kein Systemadministrator ausgeführt.
quelle
Ich mag NX für den Remote-GUI-Zugriff. Sehr gut dokumentiert.
quelle
Ich benutze Nautilus für einiges an Dateiverwaltung und SSH für Befehle. Es wird direkt in Ihr System eingesteckt, als wären Sie physisch im Rechenzentrum. Wenn Sie dies über eine Windows-Box tun, funktioniert diese Art der Konnektivität nicht, da vfs in Windows eingeschränkt ist.
quelle
Ich denke, Sie brauchen für diese Aufgaben keinen Remotedesktop.
Wie bereits erwähnt, können Sie die Dateien mit SFTP zwischen den Boxen übertragen. Verwenden Sie den WinSCP-Client , um eine Verbindung über SFTP herzustellen, mit der Sie auch die Dateien auf Ihrem Windows-Computer bearbeiten können (indem Sie darauf doppelklicken), als wären sie auf Ihrem lokalen Computer. Sie können damit auch Dateien aus der Ferne kopieren / verschieben.
Sie können auch Midnight Commander (mc) auf der SSH-Konsole verwenden, um den Dateivorgang zu beschleunigen. Verwenden Sie zum Installieren den Befehl
yum install mc
oderapt-get install mc
. Anschließend können Sie es starten, indem Siemc
auf dem Terminal tippen. Es hat auch einen eingebauten Viewer und Editor, der einfacher als vim ist.Wenn Sie wirklich eine GUI haben möchten, die wir normalerweise nicht auf Servern haben, müssen Sie die X-Umgebung installieren und mit VNC eine Verbindung herstellen. In solchen Fällen stellen wir über einen SSH-Tunnel eine Verbindung zum VNC-Server her, der ihm mehr Sicherheit bietet.
quelle
In Antwort auf Ihre Frage über einen Remote - Desktop mit X einrichten, wenn Sie Debian verwenden, lesen diese . Es ist nicht gerade das beste Dokument zum Einrichten. Sie haben viel zu viele Pakete installiert, aber es hat die richtige Idee. Sie benötigen wirklich nur einen Dummy-Grafiktreiber für X, und dann muss VNC einen X-Desktop starten.
quelle
Wenn Sie Ubuntu verwenden: Wir erwägen, hierfür die Landschaft zu verwenden. Dies ist ein kommerzielles Produkt des ubuntu (kanonischen) Teams und wird mit ec2-Befehlen integriert.
quelle
Sie könnten so etwas wie Capistrano ausprobieren, aber wenn das nicht genug für das ist, was Sie danach wollen, dann klingt es so, als wären Sie ein Kandidat für eine Art Konfigurationsmanagement.
Puppet, reductivelabs.com/products/puppet/, ist ein echtes Highlight in diesem Bereich, kann aber für Sie ein wenig übertrieben sein, es sei denn, Sie haben Pläne, größer zu werden, und dann ist es die harte Arbeit im Vorfeld wert.
Wenn Sie eine der Debian / Ubuntu-Distributionen verwenden, würde ich Slack Roles ausprobieren.
Es ist ein ausgefallener Wrapper für Rsync- und Shell-Skripte. Dies hat sehr wenig Vorab-Lernen und funktioniert gut, aber wenn Sie wachsen, kann es etwas ungeschickt werden.
quelle