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.