Kami sedang berupaya untuk melakukan pembaruan otomatis untuk server berbasis RHEL / RHEL kami.
Gagasan awal: Menggunakan Puppet, kami menonaktifkan repositori default dan menunjuk ke milik kami. Kemudian, kami menggunakan ensure => latest
paket yang ingin kami perbarui secara otomatis.
Masalah: Kami melihat beberapa layanan memulai kembali setelah pembaruan (duh).
Pertanyaan: Apakah ada yang punya saran tentang cara mengotomatiskan pembaruan dan strategi Linux dengan lebih baik untuk mengurangi layanan restart otomatis? Kami lebih suka solusi yang mencakup Wayang tetapi, jika kami perlu menggunakan layanan lain, itu bukan pemecah kesepakatan.
Edit
Solusi yang mungkin: Saya mengajukan solusi yang mengimplementasikan banyak dari apa yang disarankan @ voretaq7 dan @ewwhite. Sepertinya ini adalah rute yang saya tempuh untuk saat ini. Jika Anda memiliki saran lain, silakan komentar atau kirimkan jawaban.
sumber
Apakah ada masalah dengan memulai kembali layanan setelah pembaruan paket? Uji dalam skala kecil sebelum Anda menyebarkan untuk melihat apakah ada masalah. Saya baru-baru punya masalah jelek dengan paket rpmforge dari DenyHosts . Itu benar-benar mengubah lokasi konfigurasi dan direktori kerja antara revisi dari pembaruan yum. Itu perilaku yang benar-benar tidak diinginkan. Biasanya, dalam revisi RHEL yang sama, tidak ada terlalu banyak masalah, tetapi Anda tidak akan pernah bisa yakin tanpa menguji dan mengamati efeknya dengan cermat.
Pilihan lain adalah memperbarui layanan secara selektif. Apakah Anda selalu membutuhkan paket terbaru, misalnya? Ini kembali ke memahami alasan Anda untuk menjalankan pembaruan. Apa tujuan sebenarnya?
Keuntungan menjalankan repo Anda sendiri adalah Anda dapat melakukan rilis atau peluncuran dan mengatur jadwal. Bagaimana jika Anda memiliki vendor perangkat keras atau perangkat lunak yang membutuhkan RHEL 5.6 dan akan rusak di bawah 5.7? Itulah salah satu manfaat mengelola paket Anda sendiri.
sumber
@Beaming Mel-Bin
Penyederhanaan akan menghilangkan kebutuhan untuk menggunakan ssh untuk alat loop, untuk memulai / menghentikan boneka.
Pertama-tama Anda perlu mengubah manifes Anda untuk memasukkan variabel yang disebut "noop" yang nilainya bersumber dari ENC.
Jadi Anda akan memiliki sesuatu seperti ini di kelas:
Di mana
noop_status
diatur dalam ENC Anda. Saat Anda menetapkan nilainoop_status
ketrue
, manifes akan berjalan dalam mode hanya di atas.Jika Anda memiliki 100 atau 1000 host, Anda dapat menggunakan ENC seperti Dasbor atau Foreman yang memungkinkan Anda mengubah parameter secara massal untuk banyak host, dengan mewarisi mereka di level "Hostgroup" atau "Domain". Anda kemudian dapat menetapkan nilai ke "false" untuk sejumlah kecil host pengujian, mengesampingkan nilai Hostgroup.
Dengan ini, setiap perubahan diterapkan hanya pada host terpilih.
Mengubah satu parameter di lokasi pusat dapat memengaruhi sejumlah host, tanpa perlu menghidupkan / mematikan boneka dengan ssh untuk alat loop. Anda dapat membagi host Anda dalam beberapa grup untuk keselamatan / manajemen.
Juga perhatikan bahwa alih-alih nomor versi paket yang mengkode keras dalam manifes, Anda dapat memasukkannya ke dalam ENC. Dan seperti di atas, Anda dapat secara selektif menerapkan perubahan dan mengelola peluncuran.
Jika Anda ingin lebih granularity (dan kompleksitas) Anda bahkan dapat memiliki parameter per kelas, suka
noop_status_apacheClass
dan sebagainya.Ini mungkin lebih sulit untuk dikelola jika Anda
include
kelas di kelas lain.sumber
Solusi yang mungkin berdasarkan jawaban @ voretaq7:
Nomor versi keras kode paket dalam
puppet
manifes dan mengelola paket dalam repositori kami sendiri.Ketika kami membutuhkan versi baru dari paket untuk melakukan sesuatu yang ditawarkannya (mis. Peningkatan keamanan, fitur yang dibutuhkan oleh pelanggan kami, dll.), Kami mengunduh paket ke repositori.
Uji paket yang diperbarui pada server uji.
Setelah pembaruan diuji, gunakan sesuatu seperti
func
ataupssh
untuk mematikanpuppet
agen pada node yang terpengaruh.Perbarui
puppet
manifes untuk memastikan bahwa versi baru paket diinstal pada node yang terpengaruh.Akhirnya, jalankan
puppet agent --onetime && reboot
di server menggunakanfunc
ataupssh
Tolong beri komentar dan beri tahu saya jika Anda menemukan kekurangan dalam solusi ini atau apa pun yang dapat disederhanakan.
sumber