UWAGA: zadałem to pytanie dziś rano w odniesieniu do skrzynek EC2, ale otrzymałem tylko linki do narzędzi do uruchamiania i zatrzymywania instancji, więc sformatuję ...
Mam kilka urządzeń z systemem Linux, które wykonują nocne zadania przetwarzania dla jednego z moich projektów. Od czasu do czasu będę musiał wejść, wprowadzić zmiany w kodzie, skonfigurować niektóre rzeczy, przenosić pliki itp.
Mój zestaw narzędzi do tych operacji jest boleśnie rzadki (SSH w pudełku, edycja plików w VIM, pliki zdalne WGET, których potrzebuję) i podejrzewam, że jest o wiele lepszy sposób. Jestem ciekawy, co robią inni ludzie na moim stanowisku.
Czy używasz jakiejś formy systemu okienkowego i ekwiwalentu zdalnego pulpitu, aby uzyskać dostęp do skrzynki, czy to wszystko to wiersz poleceń? Zarządzanie zdalnymi skrzynkami systemu Windows jest proste, ponieważ można po prostu zdalnie podłączyć pulpit i przesyłać pliki przez sieć. Czy istnieje odpowiednik tego w świecie Linuksa?
Czy robisz zmiany w pliku konfiguracyjnym / poprawki skryptów bezpośrednio na komputerze? A może masz coś skonfigurowanego na lokalnym urządzeniu do zdalnej edycji tych plików? A może po prostu edytujesz je zdalnie, a następnie przenosisz przy każdym zapisie?
Jak przenosisz pliki tam iz powrotem między serwerem a środowiskiem lokalnym? FTP? Jakiś mapowany dysk przez VPN?
Naprawdę musiałbym wprowadzić kilka najlepszych praktyk dotyczących administrowania tymi skrzynkami. Wszelkie sugestie dotyczące usunięcia bólu będą mile widziane!
źródło
Odpowiedzi:
Rzadki? Co do diabła masz na myśli? Przepraszam za rantowanie, ale odrzucenie ssh, vim i wget jako bolesne jest prawie obraźliwe. Z twojego pytania wynika, że jesteś głównie programistą w swojej codziennej pracy, więc rozumiem pytanie. Ale szczerze mówiąc, nie zatrudniłbym administratora Linuksa, który nie czułby się dobrze z żadnym z trzech wymienionych przez ciebie narzędzi.
Do zadań administratora nigdy nie używam środowiska X. Nie potrzebujesz, zajmie to tylko zasoby systemowe i przez większość czasu stanowią one przeszkodę zamiast pomocy. Większość narzędzi konfiguracyjnych GUI (cóż, praktycznie wszystkie, naprawdę) oferuje tylko podzbiór opcji konfiguracji, którą można ustawić w pliku konfiguracyjnym za pomocą vima.
Zarządzanie systemem Linux jest nie mniej proste niż zarządzanie systemem Windows. Zdobycie odpowiedniego zestawu umiejętności zajmuje trochę czasu.
A odpowiednik sieciowego przesyłania plików? Dużo. scp, sftp, ftp, nfs, cifs / smb (protokoły udostępniania plików Windows), a następnie niektóre.
Zależy od tego, co robię. Większość rzeczy, które robię bezpośrednio w plikach konfiguracyjnych na komputerze (do tworzenia i testowania pudeł), a następnie wpycham plik do kanału konfiguracyjnego na naszym serwerze satelitarnym, po czym wdrażam plik bezpośrednio na wszystkich serwerach (w przypadku pudeł produkcyjnych) ). Naprawdę, vim jest skarbem. To znaczy, kiedy dowiesz się, jak prawidłowo z niego korzystać.
scp do końca i może trochę sftp, i sugeruję, żebyś też to zrobił. Nigdy nie używaj FTP do przenoszenia poufnych plików (np. Plików konfiguracyjnych) w sieci publicznej. Nie używam mapowanej sieci, ponieważ ponownie wszystko, czego potrzebuję, to serwer. Jeśli masz na myśli pliki c, a nie pliki konfiguracyjne, zwykle używam czegoś takiego jak svn lub git, a następnie wypycham moje zmiany do pudełka.
Już ich używasz: ssh, scp, wget i vim. To nie jest ból. Mogą wystąpić bóle ząbkowe, podczas gdy ty odkryjesz, jak silne są one. Ale, aby przywrócić analogię Windows, czuję się poważnie utrudniony, gdy muszę korzystać z okna Windows. Dla ciebie jest na odwrót. Po prostu jesteś do tego przyzwyczajony. Daj trochę czasu, a przyjdzie do ciebie.
źródło
Wspomniałeś już o ssh, vim i wget, które są niezbędne i doskonałe. Niektóre dodatkowe narzędzia, które mogą ułatwić życie:
1. GNU Screen / byobu
„GNU Screen to darmowy multiplekser terminali, który pozwala użytkownikowi na dostęp do wielu oddzielnych sesji terminali w oknie pojedynczego terminala lub sesji terminalu zdalnego. Jest przydatny do obsługi wielu programów z wiersza poleceń oraz do oddzielania programów od powłoki, która się uruchomiła program." (Ze strony GNU_Screen na wikipedii)
Główną zaletą jest to, że możesz mieć jeden lub kilka wirtualnych terminali, które są dokładnie w takim samym stanie, w jakim je opuściłeś po powrocie (tj. Ponowne zalogowanie przez ssh). Jest to również dobre, gdy połączenie zostanie z jakiegoś powodu zerwane.
Ekran działa niezależnie od oprogramowania używanego do łączenia się z urządzeniem (działa na serwerze), więc dobrze łączy się z kitem lub większością innych programów terminalowych.
W tym artykule pokazano kilka ciekawych rzeczy, które możesz z tym zrobić: http://www.pastacode.de/extending-gnu-screen-adding-a-taskbar/en/
Dobrą alternatywą jest byobu, która jest ładnie wstępnie skonfigurowana w niektórych dystrybucjach: http://byobu.co/
2. Dowódca północy
Graficzne narzędzie do przeglądania oparte na konsoli do przeglądania plików i katalogów oraz manipulowania nimi.
Może także wykonywać bezpieczne zdalne przelewy. Istnieje wbudowany klient FISH i FTP.
Oznacza to, że masz 2 okna tekstowe obok siebie w konsoli wiersza poleceń, a jeden pokazuje zdalne okno, a drugie gdziekolwiek się podłączysz (którym może być również system lokalny). Następnie możesz nawigować po obu systemach plików obok siebie i zaznacz lub zbadaj poszczególne pliki lub drzewka plików, a także skopiuj lub przenieś je między lokalizacjami. FISH jest bezpieczny, FTP nie. Bardzo mocny i prosty dla początkujących.
3. rsync
Do szybkiego, bezpiecznego i niezawodnego przesyłania plików i synchronizacji między różnymi lokalizacjami
4. VCS
Wykorzystanie rozproszonego systemu kontroli wersji, takiego jak bazar, mercurial lub git, do aktualizacji kodu. Github lub Bitbucket oferują komercyjny hosting kodów, ale nie jest to konieczne, możesz również efektywnie z niego korzystać na własnych komputerach.
Joseph Kern: czy możesz wyjaśnić, jak dokładnie używasz git do zdalnej organizacji konfiguracji?
5. Klienci terminalowi
W systemach uniksowych są już na pokładzie, w systemie Windows można użyć Putty, Tera Term, Mind Term lub Pandora. Lub wykonaj instalację cygwin i ssh z okien terminala cygwin do zdalnych urządzeń (co ma więcej zalet, ale jest to pytanie o to, co wolisz).
6. Tunelowanie i spedycja portów
Pomocne może być bezpieczne przekierowanie niektórych portów na komputer lokalny. Na przykład możesz przekazać port mysql TCP 3306 lub postgres TCP 5432 i zainstalować lokalnie jakieś narzędzie do administrowania bazą danych.
Możesz budować tunele z maszyn Windwos z kitem (lub linią poleceń opartą na jego młodszym bracie), a cygwin i Mindterm mogą również przekierowywać porty. Jeśli jesteś lokalnie na maszynie uniksowej, możesz użyć ssh odr plink, aby utworzyć takie tunelowanie.
Aby stworzyć bardziej stabilne i trwałe tunelowanie dla różnych portów, polecam OpenVPN. Metoda tunelowania „klucza wstępnego” z jednego punktu do drugiego nie jest tak trudna do zainstalowania.
7. Posiadaj lokalny system uniksowy
Jeśli twój komputer lokalny to komputer Mac, masz go już, możesz otworzyć lokalną powłokę. Gdy stacja robocza jest oparta na systemie Windows, pomocne może być utworzenie lokalnego serwera typu uniksowego, który znajduje się w tej samej sieci lokalnej. Może to być inna maszyna w innym pomieszczeniu podłączonym do tego samego routera lub przełącznika. Lub jeśli chcesz tylko jedną maszynę, możesz zainstalować bezpłatny serwer vmware i stworzyć maszynę wirtualną, najlepiej ten sam system operacyjny, co maszyna zdalna. Zainstaluj na nim serwer samby i możesz „używać sieci” udziałów samby z pulpitu.
Jeśli jesteś serwerem ssh na serwerze lokalnym i otworzysz dla niego port 22 na routerze, możesz ssh w systemie lokalnym, gdy jesteś na zewnątrz.
Możesz budować tunele na zdalnych komputerach lub przesyłać i synchronizować pliki i całe drzewa plików za pomocą rsync. Możesz go użyć do testowania, do VSC, do rozwoju lokalnego, jako lokalny serwer WWW, do celów szkoleniowych.
Możesz pobierać kopie zapasowe ze zdalnych komputerów. Możesz tworzyć lokalne zadania cron, które automatycznie wykonują kopie zapasowe (np. Bazy danych, które chcesz regularnie zapisywać lokalnie)
8. X zdalny GUI
Jeśli pracujesz fizycznie w systemie Linux jak system, możliwe jest również uruchamianie aplikacji GUI na serwerach Linux, które rysują GUI na twoim komputerze lokalnym. Może to być graficzne narzędzie do porównywania plików lub prawie wszystko, co chcesz.
Chociaż nie jest to bardzo powszechne iw niektórych przypadkach nie jest konieczne używanie oprogramowania GUI do administrowania Linuksem, w niektórych przypadkach może okazać się przydatne, jeśli możesz.
Na zdalnej maszynie upewnij się, że w / etc / ssh / sshd_config ta linia istnieje:
Uruchom ponownie serwer ssh za pomocą
Następnie następnym razem się zalogujesz
Będziesz miał tunel X, spróbuj zainstalować xclock na zdalnym serwerze w celach testowych i wykonaj
xclock
sesję ssh, o której właśnie wspomniałem. Prosty zegar x do celów testowych powinien pojawić się w GUI Linuksa.Jest to również możliwe na komputerze Mac, jeśli zainstalujesz lokalne środowisko X.
9. Jeśli masz kilka podobnych pól lub zadań: użyj narzędzia konfiguracji systemu
Jeśli masz farmę serwerów lub wdrażasz duże chmury z wieloma redundantnymi lub w inny sposób równymi lub podobnymi maszynami, możesz tego użyć.
Prawdopodobnie nie miałoby to sensu, gdyby większość urządzeń była indywidualna lub posiadała różne systemy operacyjne lub różne wersje.
Istnieje kilka narzędzi:
chef
http://www.getchef.com/chef/ Patrz genialna odpowiedź Evana Andersona poniżej: /server//a/28789/45819puppet
inny duży gracz http://puppetlabs.com/salt
wygląda obiecująco http://www.saltstack.com/10. Wdróż kontenery aplikacji za pomocą
docker
To idzie nawet o krok dalej. Docker to projekt typu open source, który automatyzuje wdrażanie aplikacji w kontenerach oprogramowania: https://www.docker.io
11. Użyj Google Compute Engine z automatycznym zarządzaniem wdrażaniem
https://cloud.google.com/products/compute-engine/
Google oferuje maszyny wirtualne z systemem Linux z bardzo ekscytującymi możliwościami. Możesz szybko wdrażać duże klastry maszyn wirtualnych za pomocą narzędzi, w tym interfejsu API RESTful, interfejsu wiersza polecenia i konsoli internetowej. Możesz także użyć narzędzi, takich jak RightScale i Scalr, aby automatycznie zarządzać wdrożeniem .
źródło
cd /#sh:<user>@<server>:<directory>
zalogować się do zdalnego komputera w celu przeglądania i przesyłania plików, a ponieważ Ctrl-o tymczasowo przełącza cię do konsoli. Kolejne Ctrl-o przywróci Cię do MC jednym naciśnięciem klawisza!Jeśli szukasz ładnego GUI do zarządzania plikami za pośrednictwem SSH z Windows, spójrz na WinSCP: http://winscp.net
Nie administruję żadnymi instancjami EC2, ale ogólnie, jeśli mam więcej niż jedną maszynę pełniącą rolę, spróbuję napisać skrypt wykonujący pracę na wszystkich podobnych polach, zamiast wprowadzać zmiany box-for-box .
Chciałbym zacząć korzystać z Puppet ( http://reductivelabs.com/products/puppet/ ), ponieważ sprawia, że administracja systemem przypomina ćwiczenie zarządzania konfiguracją. Nie miałem jeszcze wolnych cykli, aby przyjrzeć się temu szczegółowo, ale słyszałem bardzo dobre rzeczy.
źródło
Musisz wziąć pod uwagę narzędzie do zarządzania konfiguracją systemu, takie jak Chef.
Z trudem zarządzam systemami ręcznie za pośrednictwem sesji SSH. Cały kod aplikacji i projektów przechowuję w repozytorium kodu źródłowego, do którego mogę uzyskać dostęp z systemów, które je uruchamiają, powiedzmy strony internetowe na EC2. Podczas pracy w chmurze niezbędna jest zautomatyzowana infrastruktura.
Podstawowy przebieg pracy wygląda następująco. Po pierwsze, dla kodu aplikacji i danych konfiguracyjnych:
Do konfiguracji dodaj:
Systemy są konfigurowane jak instalacje pakietów, tworzenie użytkowników, pliki konfiguracyjne generowane z szablonów itp.
[Prawie] nigdy nie edytuję ręcznie plików konfiguracyjnych, danych aplikacji ani niczego innego w zdalnych systemach. Zmiany są wprowadzane przez moje lokalne repozytorium i wypychane do głównego. Wiem, że moje systemy będą konfigurowane poprawnie za każdym razem, bez względu na to, czy muszę zabić instancję i uruchomić ją ponownie.
Pliki potrzebne do konfiguracji są podawane bezpośrednio z serwera Chef, który jest tylko aplikacją internetową (merb, działającą w Apache + Passenger). Dostęp dla klientów jest kontrolowany poprzez otwartą autoryzację.
Moja konfiguracja obejmuje zaczepy do Nagios i Munin, więc otrzymuję monitorowanie i trendy bez konieczności ręcznego robienia czegokolwiek, aby je skonfigurować.
Najlepsze praktyki w dzisiejszych czasach dotyczą automatycznego zarządzania konfiguracją. Jeśli nadal robisz rzeczy ręcznie, pracujesz zbyt ciężko.
źródło
Co jest nie tak z ssh, vim i wget? Klejnoty nieznane większości użytkowników systemu Windows. :-)
Czasami używam gVim zdalnie przez FTP lub SFTP.
Jeśli wolisz używać GUI na komputerze z systemem Linux, możesz uruchomić X Server (patrz Cygwin dla jednego) na lokalnym hoście i przesłać ekran z powrotem przez połączenie ssh.
Nigdy nie uważałem rozwiązania VPN wartego kosztów lub problemów z administrowaniem Linuksem.
Jeśli pracujesz nad programowaniem i chcesz uruchomić zadania deweloperskie na serwerze, po prostu skonfiguruj klienta kontroli wersji na serwerze, zaloguj się zdalnie, zsynchronizuj klienta i uruchom proces.
źródło
Czy to trolling jest przeznaczony?
Zdalny administrator okien Windows nie jest trywialny. Zdalne administrowanie unixowymi skrzynkami polega na tym, że zostały zaprojektowane do zdalnego zarządzania i do pracy w sieci. W przypadku systemu Windows był to przykręcony do systemu, który nie został zaprojektowany od zera do pracy w sieci.
Jest to anegdota, ale z doświadczenia różnych firm wynika, że stosunek liczby użytkowników do serwerów w systemie Linux jest znacznie wyższy niż w przypadku systemu Windows. Po prostu dlatego, że automatyzacja w systemie Windows nie jest trywialna, a GUI zawsze będzie wolniejsze niż skrypty. To powiedziawszy, są administratorzy Windows, którzy mogą sprawić, by infrastruktura Windows była łatwa w zarządzaniu, jednak ci administratorzy są bardzo rzadcy.
Wszystkie potrzebne narzędzia są domyślnie dostępne w każdej dystrybucji Linuksa. Jeśli chcesz graficznego logowania, zrób to, po prostu marnuje procesor i pamięć i da ci te same problemy, co z systemem Windows. I jak już powiedziano, w przypadku więcej niż kilku pudeł należy rozważyć marionetkę, szefa kuchni, cfengine lub jedno z wielu innych dostępnych narzędzi.
źródło
Mówisz, że używasz SSH do zarządzania „kilkoma” skrzynkami. Zdecydowanie poleciłbym ClusterSSH do pisania tych samych poleceń jednocześnie do wszystkich (zakładając, że mają one podobny cel).
http://www.linux.com/learn/tutorials/413853:managing-multiple-linux-servers-w--clusterssh
Użycie jest tak proste, jak „cssh -l nazwa użytkownika clustername”, który otworzy wiele okien uxterm, którymi możesz zarządzać jednocześnie lub osobno. Klaster jest definiowany przez listę adresów IP w pliku konfiguracyjnym. O ile mi wiadomo, brakuje tylko obsługi X.
EDYCJA: Przeprowadziłem migrację do Terminatora, ponieważ układ wielu terminali można łatwo zapisać i przywrócić, aw razie potrzeby dostajesz 10 tuneli X jednocześnie. Ułatwia konfigurację zarówno serwera, jak i komputera klienckiego w tym samym czasie.
Ponadto Fabric jest przydatny podczas aktualizacji oprogramowania na moich klientach, w zasadzie zastępując wszystkie te pliki zip / scp / unzip / cp.
źródło
Używam:
Poddanie moich konfiguracji kontroli wersji było prawdopodobnie najmądrzejszą rzeczą, jaką zrobiłem. Używam narzędzi opartych na SSH tak często, jak to możliwe, aby zmniejszyć ślad administracyjny i powierzchnię ataku.
Obecnie wszystkie moje repozytorium git są lokalne. W przyszłości przeniosę konfiguracje do zdalnych repozytoriów.
źródło
Nie zapomnij o użyciu Webmina , internetowego interfejsu do administrowania systemem w systemach Unix / Linux.
źródło
SSH zawsze mi wystarczało. Istnieją inne opcje. X11 to zasadniczo zdalny pulpit, choć z natury niepewny, ponieważ sam nie jest szyfrowany. Można go jednak tunelować przez połączenie SSH (i zyskujesz, że nie będziesz musiał otwierać dodatkowych portów). Zakłada się oczywiście, że masz zainstalowane środowisko X na serwerze.
SFTP (który jest ftp nad SSH, więc po raz kolejny nie trzeba otwierać żadnych dodatkowych portów) może być użyty do umieszczenia plików na serwerze zamiast ciągnięcia ich dobrego klienta Windows Sftp można znaleźć na http://filezilla-project.org/
źródło
Przesyłam ssh do pudełka i zmieniam w linii poleceń oraz w edytorach takich jak vi / nano, gdy zmiana jest prosta. Do bardziej złożonych zmian w pliku, takich jak edycja wielu kodów źródłowych jednocześnie, używam BBEdit w Mac OS X. Może uzyskać dostęp do systemu plików za pomocą SCP. Jestem pewien, że istnieje taki edytor dla systemu Windows i Linux. sshfs to sposób na zdalny dostęp do systemu plików za pomocą ssh.
źródło
Zdecydowanie PuTTY; podobnie jak klient ssh, istnieje również klient SCP oparty na systemie Windows.
źródło
Wiersz poleceń przez ssh dla Linuksa (ponieważ nie mają nawet X11 zainstalowanego) oraz połączenie ssh i ARD dla moich komputerów Apple.
Pamiętaj, że nigdy nie używam Pulpitu zdalnego Apple do przesyłania plików, ponieważ AFP przez TCP jest absurdalnie wolny ; Po prostu używam
scp
.źródło
Jeśli chcesz uzyskać zdalny dostęp graficzny, prawie na pewno chcesz skonfigurować VNC.
Jeśli chcesz edytować pliki zdalnie przez SSH, masz kilka opcji:
mc
), aby przenosić pliki tam iz powrotemPo edycji pliku użyj SSH, aby na przykład rozpocząć kompilację.
Inną rzeczą do rozważenia jest użycie systemu kontroli wersji. bzr jest naprawdę fajny; jest łatwy w konfiguracji i zaprojektowany tak, aby był łatwy w użyciu. Możesz pracować na jednym komputerze, wcisnąć aktualizację, pobrać aktualizację na serwerze, wykonać polecenia i przywrócić, jeśli coś pójdzie nie tak.
źródło
SSH wykonuje tę pracę przez większość czasu. Nauka dostępnych narzędzi wiersza poleceń jest warta poświęcenia czasu. Jeśli są narzędzia GUI, których chcę użyć, po prostu używam VNC .
Aby przenosić pliki, zwykle instaluję udział CFIS / SAMBA na moim komputerze lokalnym.
źródło
W przypadku prostych zmian SSH i SCP załatwią sprawę. Jeśli chcesz wprowadzić zmiany na większej liczbie komputerów, powinieneś spojrzeć na system zarządzania konfiguracją. Będzie mógł uruchomić / zatrzymać usługę, zmienić zawartość plików konfiguracyjnych i sprawdzić, czy systemy są w znanym stanie.
Wolę używać Bcfg2, ale popularne są również Puppet i CFEngine .
Mam Bcfg2 działający co godzinę na wszystkich moich serwerach, chociaż można go również uruchomić ręcznie. Istnieje centralne repozytorium kontrolowane przez wersję wszystkich plików konfiguracyjnych systemu, dzięki czemu możemy śledzić wszelkie wprowadzane modyfikacje. System działa bardzo dobrze i jest ogromnym krokiem od ręcznego logowania do serwerów i dostosowywania.
źródło
Często używam Komodo przez łącze SFTP .
źródło
Administrowanie systemami Windows zawsze było „ciężkie”: oznacza to, że konieczne jest pełne środowisko okienkowe, które wymaga albo bycia na miejscu, albo aplikacji obciążającej sieć, takich jak Pulpit zdalny lub VNC.
UNIX został zaprojektowany z myślą o pracy w sieci - więc narzędzia są zaprojektowane do pracy w sieci, a nie do ładnego wyglądu. Serwer UNIX nigdy nie powinien mieć skonfigurowanego środowiska okienkowania (zwykle X11).
Minimalistyczny interfejs SSH, wget i vim jest znacznie bardziej sprzyjający dla sieci - vi faktycznie został zaprojektowany do pracy na linii modemowej 300 bodów.
Rzeczywiście istnieją narzędzia graficzne, które pomogą ci w pracy ze zdalnymi systemami UNIX i Linux (wsp był jeden; gvim może być inny).
Zwykłym sposobem administrowania systemami UNIX jest zalogowanie się do komputera i praca na samym komputerze. Nie ma potrzeby przenoszenia plików tylko w celu ich edycji. Jedyne, o czym należy pamiętać, to upewnić się, że konfiguracja jest dobra i przetestować ją w miarę możliwości.
źródło
SSH, aby uzyskać dostęp, scp, jeśli muszę przesłać ograniczoną liczbę plików. Udostępnione katalogi przez SMBFS / SAMBA, jeśli NAPRAWDĘ tego potrzebujemy. Zazwyczaj jest to strata czasu. Niektórzy z naszych mniej * kompetentnych pracowników używają webmin zablokowanego do dostępu do lokalnej podsieci przez HTTPS.
źródło
Shellinabox
Emulacja terminala u klienta
Butterfly to także serwer WWW (napisany w języku python), który obsługuje w pełni funkcjonalny emulowany terminal internetowy po stronie klienta.
źródło