Kami memiliki banyak server dan masih ingin memperbarui semuanya. Cara sebenarnya adalah bahwa salah satu sysadmin pergi dari server ke server dan membuat aptitude update && aptitude upgrade
- itu masih tidak keren.
Saya sedang mencari solusi yang masih lebih baik dan sangat cerdas. Bisakah boneka melakukan pekerjaan ini? Bagaimana Anda melakukannya?
debian
puppet
update
remote-access
Dennis Wisnia
sumber
sumber
Jawaban:
Anda dapat menggunakan
exec
jenis seperti:Sejujurnya, saya tidak mencobanya sendiri, tetapi saya pikir Anda hanya perlu membuat modul baru yang menyertakan definisi exec.
The
apt-get upgrade
perintah interaktif. Untuk membuatnya berjalan dengan tenang, Anda dapat menambahkan opsi-q=2
seperti yang ditunjukkan di atas.sumber
touch
file pada master boneka.jika semua host Anda adalah debian, Anda dapat mencoba paket upgrade tanpa pengawasan.
http://packages.debian.org/sid/unattended-upgrades
Di sini kami telah menggunakan boneka untuk mengelola mesin virtual debian kami, dengan boneka kami dapat mengaktifkan dan mengelola konfigurasi upgrade yang tidak diinginkan di semua server.
Baru-baru ini tim kami sedang menguji alat mcollective untuk menjalankan perintah di semua server, tetapi untuk menggunakan keterampilan ruby mcollective diperlukan.
[s] Guto
sumber
Saya akan merekomendasikan pergi untuk Wayang, facter dan mCollective.
mCollective adalah kerangka kerja yang sangat bagus di mana Anda dapat menjalankan perintah pada serangkaian host (dalam paralel) menggunakan facter sebagai filter.
Tambahkan ke bahwa proxy / cache lokal dan Anda akan diatur dengan baik untuk manajemen server.
sumber
Gunakan alat yang dibuat untuk menjalankan perintah tunggal di beberapa server. Dan maksud saya bukan berarti memiliki terminal trilyun terbuka dengan Terminator atau ClusterSSH, tetapi sebaliknya memiliki terminal tunggal ke server manajemen yang menjalankan alat yang cocok untuk pekerjaan itu.
Saya akan merekomendasikan func, Salt atau mCollective dalam konteks ini. Jika Anda sudah memiliki Wayang, pilih mCollective (terintegrasi dengan baik di Wayang). Jika tidak, dan Anda memiliki Python lama di komputer, Anda dapat menikmati func. Jika Anda menggunakan Python baru, coba Salt. Semua alat ini menjalankan perintah yang ditentukan pada baris perintah secara serempak, yang jauh lebih menyenangkan daripada loop ssh berurutan atau bahkan melakukan perintah aptitude yang sama di beberapa jendela Terminator ke beberapa server.
Anda pasti akan menyukai Garam .
sumber
Jadi saya kira ada banyak hal yang berkontribusi pada solusi yang baik:
Bandwidth : Pada dasarnya dua alternatif untuk menghemat bandwidth muncul di pikiran saya:
Administrasi : Saya akan mengkonfigurasi shell paralel seperti PDSH , PSSH , GNU Parallel dan mengeluarkan perintah pada semua klien, jika saya menguji perintah sebelumnya pada mesin contoh. Maka sangat tidak mungkin bahwa itu mungkin gagal pada semua yang lain. Atau Anda dapat mempertimbangkan pekerjaan cron pada semua klien, tetapi kemudian mungkin gagal secara otomatis, jadi saya lebih suka solusi pertama.
Jika Anda khawatir tentang simultan peningkatan, Anda dapat menjadwalkan perintah Anda
at
Logging : Seperti halnya shell paralel, Anda memiliki kemungkinan untuk mengarahkan ulang output. Saya akan menggabungkan stderr dan stdout dan menulisnya ke logfile.
sumber
Pembungkus ssh paralel saya sendiri: classh adalah alternatif dari berbagai alat Paralel dan ssh cluster di luar sana.
Anda mungkin menyukainya lebih baik atau Anda mungkin membencinya. Hanya ada tiga alasan saya menyebutkannya di sini:
subprocess.communicate()
metode Python --- jadi Anda hanya dapat menangkap sekitar 64K stdout dan, secara terpisah hingga 64K stderr, misalnya; juga setiap proses jarak jauh yang mencoba membaca dari stdin-nya hanya akan menunda sampai subproses ssh lokal terbunuh, secara otomatis oleh penanganan timeout classh )Sangat mudah untuk menulis skrip khusus, dengan Python, untuk menggunakan classh.py sebagai modul. Jadi sangat mudah untuk menulis sesuatu seperti:
Hanya itu yang ada untuk itu. Misalnya dalam loop selesai yang bersarang Anda dapat mengumpulkan daftar semua yang mengembalikan status keluar tertentu atau untuk memindai pesan kesalahan tertentu, dan mengatur pekerjaan tindak lanjut untuk menangani itu. (Pekerjaan akan berjalan secara bersamaan, default 100 pekerjaan setiap saat, sampai masing-masing selesai; jadi perintah sederhana pada beberapa ratus host biasanya selesai dalam beberapa detik dan skrip shell yang sangat kompleks dalam satu string perintah panjang ..) (katakanlah sekitar 50 baris atau lebih ... dapat menyelesaikan lebih dari beberapa ribu host dalam waktu sekitar 10 menit ... sekitar 10 ribu host per jam di lingkungan saya, dengan banyak dari mereka yang terletak secara interkontinen).
Jadi ini mungkin sesuatu yang dapat Anda gunakan sebagai ukuran ad hoc sampai konfigurasi boneka Anda diimplementasikan dan diuji dengan baik ... dan itu juga cukup membantu untuk melakukan survei ad hoc kecil dari host Anda untuk melihat mana yang menyimpang dari standar Anda di berbagai cara kecil.
sumber
Jawaban menggunakan exec cukup membantu.
Namun menurut manual apt-get itu bukan ide yang baik untuk menggunakan -q = 2 dengan cara ini (meskipun saya telah menggunakannya selama bertahun-tahun tanpa masalah)
Saya telah menggunakan skrip sendiri selama bertahun-tahun, menjalankan apt-get dengan cara berikut:
Hal-hal seperti boneka dan alat-alat lain yang disebutkan orang pasti dapat bekerja, tetapi sepertinya itu berlebihan untuk apa yang pada dasarnya hanya meniru beberapa perintah yang diketik oleh manusia. Saya percaya dalam menggunakan alat paling sederhana untuk pekerjaan tertentu, dalam hal ini skrip bash adalah sesederhana yang didapat tanpa kehilangan fungsionalitas.
sumber
Selama bertahun-tahun saya dengan senang hati meningkatkan dan menginstal paket menggunakan apt-dater . Ini adalah alat yang ringan dan efektif untuk manajemen paket jarak jauh. Ini menggunakan
screen
,sudo
danssh
.Untuk manajemen paket apt-dater mungkin solusi yang lebih mudah daripada alat manajemen konfigurasi.
apt-dater berguna untuk manajemen paket terpusat pada berbagai rasa GNU / Linux seperti Debian dan CentOS.
sumber
Anda bisa menggunakan Fabric . Fabric adalah pustaka Python (2.5-2.7) dan alat baris perintah untuk merampingkan penggunaan SSH untuk penerapan aplikasi atau tugas administrasi sistem.
sumber
gunakan webmin ,,, dan gunakan fitur cluster webmin, di mana Anda dapat menambahkan semua sistem ke satu konsol webmin dan mengeluarkannya perintah apa pun atau mengontrol semuanya dari satu tempat.
Atau
Gunakan Cluster ssh
Atau
PSSH
sumber
Solusi lain jika semua host Anda menjalankan Debian (atau turunannya) adalah dengan menggunakan paket cron-apt . Tetapi, seperti yang disarankan per dokumentasi, sedikit perhatian harus diambil.
Saat ini saya menggunakan cron-apt pada selusin server untuk melakukan semua pembaruan keamanan secara otomatis dan tanpa pengawasan. Untuk menghindari upgrade yang tidak diinginkan, saya hanya menggunakan cron-apt pada server yang menjalankan distribusi stabil Debian dan saya pastikan untuk mengkonfigurasi sumber apt saya jadi gunakan nama distribusi, wheezy , dan bukan aliasnya (stabil).
Konfigurasi cron-apt tertentu yang saya gunakan diringkas dalam satu file tindakan:
/etc/cron-apt/action.d/5-install
Pemutakhiran lainnya, dilakukan secara manual, menggunakan layar atau apa pun yang paling sesuai, karena mungkin memerlukan intervensi manual selama pemutakhiran.
sumber