Bagaimana Anda mengelola kotak EC2 Linux Anda?

8

Saya memiliki beberapa gambar Linux EC2 yang melakukan pekerjaan pemrosesan malam untuk salah satu proyek saya. Dari waktu ke waktu, saya harus masuk, membuat beberapa perubahan kode, mengkonfigurasi beberapa hal, dan menggabungkan kembali gambar.

Toolset saya untuk operasi ini sangat jarang (SSH ke dalam kotak, mengedit file dalam VIM, WGET file jarak jauh yang saya butuhkan), dan saya curiga ada cara yang jauh lebih baik untuk melakukannya. Saya ingin tahu apa yang dilakukan orang lain di posisi saya.

  • Apakah Anda menggunakan beberapa bentuk sistem Windowing dan setara remote-desktop untuk mengakses kotak, atau apakah itu semua baris perintah? Mengelola kotak EC2 Windows adalah sepele, karena Anda dapat meremote desktop dan mentransfer file melalui jaringan. Apakah ada yang setara dengan ini di dunia Linux?

  • Apakah Anda melakukan perubahan konfigurasi / skrip tweak langsung pada mesin? Atau apakah Anda memiliki sesuatu yang diatur pada kotak lokal Anda untuk mengedit file-file ini dari jarak jauh? Atau apakah Anda hanya mengeditnya dari jauh kemudian mentransfernya di setiap penyimpanan?

  • Bagaimana Anda memindahkan file bolak-balik antara EC2 dan lingkungan lokal Anda? FTP? Semacam Drive yang Dipetakan melalui VPN?

Saya benar-benar perlu menerapkan beberapa praktik terbaik untuk mengelola kotak-kotak ini. Setiap saran untuk menghilangkan rasa sakit akan sangat disambut!

EDIT: Jelas, saya tidak jelas di atas, karena dua tanggapan pertama berkisar pada mengelola dan mengkonfigurasi Instance EC2. Saya hanya ingin tahu cara remote desktop ke Linux Server yang sedang berjalan sehingga memindahkan file dan mengeditnya tidak begitu menyakitkan.

Jason Kester
sumber
Anda mungkin mendapat jawaban tentang mengelola dan mengonfigurasi instance EC2 karena judul Anda adalah "Bagaimana Anda mengelola kotak EC2 Linux Anda?"
Bill Weiss

Jawaban:

13

Saya tidak melakukan banyak administrasi sistem manual lagi. Saya melihat infrastruktur saya sebagai entitas yang dapat diprogram, dan memperlakukannya seperti itu, dengan mengkonfigurasi sistem dengan alat yang mengotomatisasi manajemen konfigurasi, pemeliharaan simpul EC2, dll. Alat di kotak alat saya:

  • Ruby (bahasa skrip / alat favorit saya)
  • Git (kontrol versi)
  • Koki Opscode (ditulis dalam Ruby) (1)
  • Capistrano (pemeliharaan massal ad hoc)
  • Alat EC2 API Amazon misalnya dan pemeliharaan gambar.
  • Permata AWS Rightscale (binding Ruby untuk EC2)

(1) - Pengungkapan, saya bekerja untuk Opscode. Alat lain mengisi ruang ini seperti Reductive Lab's Puppet.

Saya melakukan bundel AMI ketika saya membuat simpul yang saya butuhkan untuk fungsi tertentu. Misalnya, jika saya membuat server aplikasi Rails, saya akan menginstal semua paket prasyarat untuk menghemat waktu saat membangun.

Ketika semuanya gagal, saya masuk ke sistem dengan SSH. Saya melakukan administrasi sistem manual selama bertahun-tahun, ini topi tua.

Apakah Anda menggunakan beberapa bentuk sistem Windowing dan setara remote-desktop untuk mengakses kotak, atau apakah itu semua baris perintah?

Saya tidak menginstal GUI di server kecuali paket memiliki ketergantungan dan satu akan diinstal secara otomatis.

Apakah ada yang setara dengan ini di dunia Linux? (mentransfer file)

Saya biasanya melakukan dua jenis transfer file / pemeliharaan file.

  • Instalasi paket
  • File konfigurasi

Untuk paket yang berasal dari platform, saya menggunakan alat manajemen paket standar seperti APT atau YUM. Untuk pemasangan sumber (something.tar.gz) Saya biasanya mengunduh melalui wget.

File konfigurasi biasanya merupakan template ERB yang dikelola oleh Chef.

Saya menggunakan SSH dan SCP / SFTP untuk mentransfer file secara manual.

Apakah Anda melakukan perubahan konfigurasi / skrip tweak langsung pada mesin? Atau apakah Anda memiliki sesuatu yang diatur pada kotak lokal Anda untuk mengedit file-file ini dari jarak jauh? Atau apakah Anda hanya mengeditnya dari jauh kemudian mentransfernya di setiap penyimpanan?

Saya menyimpan semua yang berhubungan dengan mengelola sistem dalam repositori kontrol perangkat lunak. Inilah alur kerja saya yang khas ketika memperbarui konfigurasi pada satu atau lebih sistem. Saya mulai dari workstation lokal saya.

  • Tarik dari repositori master Git untuk perubahan orang lain.
  • Edit file secara lokal (seperti, perbarui file konfigurasi).
  • Lakukan perubahan, tekan untuk menguasai.
  • Di server Chef (masuk melalui SSH), tarik perubahan terbaru yang baru saya lakukan.
  • Menyebarkan konfigurasi ke tempat yang sesuai di server Chef (saya menggunakan Rake untuk ini).
  • Klien Chef bekerja secara berkala, sehingga mereka akan menerima perubahan setiap 30 menit. Jika saya butuh sesuatu segera, saya menjalankan chef-client secara manual.
  • Verifikasi perubahan!

Bagaimana Anda memindahkan file bolak-balik antara EC2 dan lingkungan lokal Anda? FTP? Semacam Drive yang Dipetakan melalui VPN?

Ada beberapa lokasi tempat file yang saya gunakan pada node EC2 dapat disimpan.

  • Server koki. Template konfigurasi terutama, beberapa paket kecil juga.
  • GitHub. Kami menyimpan kode kami (proyek sumber terbuka) di GitHub. Node EC2 dapat mencapai ini dengan mudah (seperti untuk checkout versi terbaru dari sesuatu).
  • Ember Amazon S3. Beberapa hal disimpan dalam ember.

Saya melakukan banyak pekerjaan di EC2, terutama menguji lingkungan dan perubahan. Sebagai hasil dari alat dan alur kerja saya, saya menghabiskan lebih banyak waktu mengerjakan hal-hal yang benar-benar saya pedulikan dan lebih sedikit berurusan dengan file individual dan memikirkan konfigurasi tertentu.

jtimberman
sumber
"Saya menggunakan alat manajemen paket standar seperti APT atau YUM" - apt-get / yum selalu memilih yang terbaru. Bagaimana Anda mengelola jika Anda harus menginstal versi lain dari paket (dibuat perlu oleh kebutuhan khusus aplikasi Anda)? Atau pernahkah Anda menghadapi ini?
talonx
6

Semua perangkat lunak kami dikerahkan melalui RPM. Setiap tipe instance EC2 dijelaskan oleh file kickstart (yang berisi daftar RPM yang akan diinstal ...). Pengaturan kickstart berarti mesin yang berfungsi untuk setiap jenis instance dapat dibangun dari awal dalam waktu sekitar 10 menit.

Kami kemudian memiliki program yang memanggil anaconda (penginstal Red Hat) untuk mengambil file kickstart, menginstal sistem ke direktori, lalu bundel direktori dan dorong ke S3 sebagai Gambar Mesin Amazon. Ini semua satu langkah, jadi saya cukup ketik:

kickstart2ami webserver.ks

Karena mesin dapat sepenuhnya dibangun kembali, diunggah, dan dijalankan dalam waktu sekitar 40 menit, lebih mudah untuk membuat gambar mesin baru daripada melakukan sysadmin pada instance EC2 (sekali pakai) yang sebenarnya. Oleh karena itu, tidak ada sysadmin yang benar-benar dilakukan pada instance EC2.

tfh1985
sumber
Jadi, Anda benar-benar membangun kembali seluruh kotak dari awal setiap kali Anda meluncurkannya? Aduh. Bahkan pekerjaan kecil yang dilakukan kotak saya memiliki selusin dependensi acak dan banyak kode kustom dalam 3 bahasa. Butuh waktu satu bulan untuk mengubah pengaturannya, jadi saya tidak bisa membayangkan skrip rumit yang akan mereproduksi semua itu dalam sekali jalan. Bagaimana Anda membuat dan menguji naskah Anda itu?
Jason Kester
semua kode dikemas ke dalam paket RPM ( en.wikipedia.org/wiki/RPM_Package_Manager ), sehingga segala kerumitan memasang berbagai bagian kode diabstraksi dalam paket. Sebagian besar upaya kemudian dalam mengemas kode. Saya biasanya menganggap segala sesuatu yang diinstal bukan melalui manajemen paket untuk dibakar. Kickstart hanya menginstal daftar paket-paket ini, sehingga tugasnya cukup sederhana. Karena, tidak ada konfigurasi ajaib / tweaker, tidak ada mesin yang istimewa atau berharga. "kickstart2ami" hanya memanggil anaconda, lalu mengunggah / mendaftar alat ec2, dengan beberapa lem.
tfh1985
1
Bisakah Anda membagikan skrip kickstart2ami Anda?
Noah Campbell
@JasonKester Apa pun yang penting yang "memerlukan satu bulan penyesuaian untuk mengaturnya dengan benar" pasti patut untuk mendokumentasikan langkah-langkah untuk mereproduksi. Apa cara yang lebih baik untuk mendokumentasikannya selain dengan menulisnya?
Skyhawk
3

Saya suka NX untuk akses gui jarak jauh. Sangat terdokumentasi dengan baik juga.


sumber
3

Saya menggunakan nautilus untuk sedikit manajemen file dan ssh untuk perintah. Plug tepat ke sistem Anda seperti Anda berada di dalamnya secara fisik di pusat data. Jika Anda melakukannya dari kotak windows, maka konektivitas semacam ini tidak akan berfungsi karena vfs di windows terbatas.

Jason Mitchell
sumber
2

Saya pikir Anda tidak memerlukan Remote Desktop untuk tugas-tugas ini.

Seperti yang disebutkan orang lain, Anda dapat menggunakan SFTP untuk mentransfer file antar kotak. Gunakan klien WinSCP untuk terhubung melalui sftp, yang juga dapat Anda gunakan untuk mengedit file pada mesin windows Anda (dengan mengklik dua kali pada mereka) seolah-olah itu ada di mesin lokal Anda. Anda juga dapat menggunakannya untuk menyalin / memindahkan file dari jarak jauh.

Anda juga dapat mempertimbangkan untuk menggunakan Midnight Commander (mc) pada ssh console yang dapat mempercepat operasi file. Untuk menginstal gunakan perintah yum install mcatau apt-get install mc. Setelah itu Anda bisa memulainya dengan mengetik mcdi terminal. Ini juga memiliki built in viewer dan editor yang lebih mudah daripada vim.

Jika Anda benar-benar ingin memiliki GUI - yang biasanya tidak kami miliki di server - Anda harus menginstal lingkungan X dan menghubungkannya dengan VNC. Dalam kasus seperti itu, kami terhubung ke server VNC melalui terowongan ssh yang menambahkan keamanan lebih untuk itu.

Attila Fulop
sumber
1

Untuk menjawab pertanyaan Anda tentang menyiapkan desktop jarak jauh dengan X, jika Anda menggunakan Debian, baca ini . Ini bukan dokumen terbaik tentang pengaturannya. Ini telah Anda instal terlalu banyak paket, tetapi punya ide yang tepat. Anda benar-benar hanya memerlukan driver video dummy untuk X, dan kemudian membuat VNC memulai desktop X.

supercheetah
sumber
0

Jika Anda menggunakan ubuntu: kami sedang mempertimbangkan menggunakan lansekap untuk ini, ini merupakan produk komersial oleh tim ubuntu (kanonik) dan akan diintegrasikan dengan perintah-perintah EC2.

hoberion
sumber
Terima kasih, tapi itu tampaknya menjadi alat untuk mengelola instance EC2, daripada desktopping jarak jauh ke dalam kotak individual, yang saya cari alat untuk dilakukan.
Jason Kester
0

Anda dapat mencoba sesuatu seperti capistrano tetapi jika itu tidak cukup untuk apa setelah Anda maka sepertinya Anda adalah kandidat untuk beberapa jenis manajemen konfigurasi.
Wayang, reductivelabs.com/products/puppet/, benar-benar menonjol di bidang ini, tetapi mungkin sedikit berlebihan bagi Anda kecuali Anda memiliki rencana untuk menjadi lebih besar dan nilainya kerja keras di depan.
Jika Anda menggunakan salah satu distro debian / ubuntu maka saya akan checkout Slack Roles.
Ini adalah pembungkus mewah untuk rsync dan dan shell script. Ini memiliki sangat sedikit pembelajaran di muka dan bekerja dengan baik namun saat Anda tumbuh itu bisa menjadi sedikit tidak jelas.

aussielunix
sumber