Ubuntu 16.04: Peningkatan tanpa pengawasan berjalan secara acak

15

Saya telah mengonfigurasi peningkatan tanpa pengawasan untuk menginstal paket keamanan dan memberi tahu melalui surat ketika melakukannya.

Saya perhatikan bahwa instalasi terjadi pada waktu yang sangat acak. Saya tahu bahwa versi terbaru menambahkan penundaan acak hingga 30 menit mulai dari waktu eksekusi cron.daily.

Namun penundaan yang saya alami jauh lebih besar dari itu. Saya melihat peningkatan tanpa pengawasan dijalankan pada jam 9 pagi, jam 3 sore, jam 12 siang ... Lognya menunjukkan hal yang sama, jadi bukan hanya pengiriman email yang membutuhkan waktu lebih lama.

Tugas pemutakhiran tanpa pengawasan adalah yang pertama di cron.daily, artinya tidak ada tugas sebelumnya dengan waktu eksekusi yang besar.

Adakah yang mengalami hal serupa?

daniel f.
sumber
Perilaku acak itu disengaja - untuk memperlancar permintaan alih-alih jutaan sistem yang memalu beberapa cermin pada waktu yang sama setiap hari. Pengguna desktop biasa seharusnya tidak memperhatikan perilaku sama sekali. Beberapa pengguna perusahaan ingin mengubah perilaku menjadi sesuatu yang sedikit lebih dapat diprediksi, dan tentu saja dapat melakukannya.
user535733
Ya, alasan di balik pilihan ini jelas. Hanya saja perilaku ini tidak dapat diterima untuk sistem produksi. Pada saat saya mengajukan pertanyaan ini, perilaku ini (dan perbaikannya) tidak didokumentasikan di mana pun
daniel f.

Jawaban:

20

Setelah debugging ini saya menemukan solusinya.

Akar penyebab masalah ini terletak pada kenyataan bahwa di bawah Ubuntu 16.04 dan yang lebih baru, peningkatan tanpa pengawasan menggunakan systemd - bukan cron - untuk menjadwalkan pembaruan dengan penundaan acak yang sangat besar:

/lib/systemd/system/apt-daily.timer dikonfigurasi dengan

OnCalendar=*-*-* 6,18:00
RandomizedDelaySec=12h

Ini berarti bahwa itu akan berjalan dua kali sehari, pukul 6:00 dan 18:00, dengan penundaan acak hingga 12 jam. Karena ini tidak selalu dapat diterima untuk lingkungan produksi, saya harus mengganti pengaturan ini.

Untuk menjaga agar file konfigurasi paket tidak tersentuh, saya mendefinisikan override saya di /etc/systemd/system/apt-daily.timer.d/override.conf( Pembaruan : harap baca hasil edit di bagian bawah jawaban ini untuk informasi lebih lanjut tentang nama file dan lokasi, karena sepertinya akan sedikit berubah).

Di sana saya atur

[Timer]
OnCalendar=
OnCalendar=06:00
RandomizedDelaySec=1h

untuk memiliki upgrade tanpa pengawasan berjalan pada pukul 6:00 ditambah penundaan acak hingga satu jam.

Kemudian saya cukup systemctl restart apt-daily.timerme- restart timer dengan (akhirnya perlu memuat ulang daemon).

Pembaruan tanpa pengawasan sekarang berjalan pada waktu yang dapat diprediksi lagi!

Sunting : Tampaknya untuk Ubuntu 18.04 hal-hal berubah sedikit. Override sekarang harus disimpan /etc/systemd/system/apt-daily-upgrade.timer.d/override.confdan terlihat seperti ini:

[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=1h

@PerlDuck telah menyebutkan cara membuat file override dengan nama dan lokasi yang tepat dalam komentar di bawah. Alih-alih membuat file secara manual, silakan pertimbangkan menjalankansudo systemctl edit apt-daily.timer

daniel f.
sumber
1
Mengapa Anda menghapus OnCalendar dulu?
jarno
2
Karena kalau tidak, itu hanya akan MENAMBAH timer baru pada jam 6 pagi, meninggalkan yang sudah ada juga. Karena saya ingin peningkatan tanpa pengawasan HANYA berjalan pada jam 6, saya harus menghapus jadwal terlebih dahulu.
daniel f.
Saya menambahkan "OnBootSec = 5min" untuk mengaktifkan menjalankan setelah boot juga, tetapi tidak berhasil. (juga menambahkan OnUnitActiveSec = 12j sehingga tidak berjalan terlalu sering.)
jarno
systemd, atau lebih tepatnya, pola pikir systemd, menyerang lagi. Saya mungkin harus memikirkan kembali untuk meningkatkan ke Xenial Xerus dalam produksi setelah permata ini menggigit saya.
Joe
2
@aniel f. Saya memiliki file apt-daily.timer di / lib / systemd / system / serta satu di /etc/systemd/system/timers.target.wants/ Namun saya tidak punya file di / etc / systemd / system / itu sendiri seperti kamu. Apakah Anda tahu jika saya harus membuat direktori apt-daily.timer.d dan override.conf di bawah / lib / systemd / system? Semua saran terima kasih dengan thx.
Purvez
5

Saya mencoba solusi Daniel tetapi upgrade masih berjalan pada waktu yang salah. Ternyata ada dua systemd override yang diperlukan:

Digunakan untuk unduhan

/lib/systemd/system/apt-daily.timer - ganti dengan /etc/systemd/system/apt-daily.timer.d/override.conf

Digunakan untuk meningkatkan

/lib/systemd/system/apt-daily-upgrade.timer - ganti dengan /etc/systemd/system/apt-daily-upgrade.timer.d/override.conf

Niels Rask
sumber
1
Kamu versi apa? Jadi, Anda harus mengganti kedua timer yang disebutkan pada saat yang sama?
daniel f.
Ubuntu 16.04.4 x64
Niels Rask
4

Dokumentasi debian resmi di https://wiki.debian.org/UnattendedUpgrades saat ini memiliki kesalahan di dalamnya yang menyesatkan banyak orang. Ia mengklaim bahwa Anda dapat mengganti waktu pemutakhiran dengan membuat file bernama

/etc/systemd/system/apt-daily-upgrade.d/override.conf

Namun jalur yang benar adalah

/etc/systemd/system/apt-daily-upgrade.timer.d/override.conf
Rolf Wojtech
sumber
1
Temuan yang bagus. IMHO, hal paling aman adalah menggunakan sudo systemctl edit apt-daily.timer. Ini akan membuka editor dengan file drop-in yang benar.
PerlDuck
2
Terima kasih PerlDuck, saya telah mengedit halaman Debian Wiki dengan saran Anda
Rolf Wojtech
Diperbaharui jawaban ini karena berguna - dan untuk memperbarui halaman wiki Debian!
Anthony Geoghegan