Pembaruan Otomatis dan Pemulihan Manual

Fedora CoreOS menyediakan pembaruan dan pemulihan (rollbacks) atomik melalui [OSTree](https://ostreedev.github.io/ostree/).

Secara default, OS melakukan pembaruan otomatis terus-menerus melalui dua komponen:

  • [rpm-ostree](https://github.com/coreos/rpm-ostree) menangani banyak deployment OSTree di disk dan dapat beralih di antara deployment tersebut saat boot.

  • Zincati terus-menerus memeriksa pembaruan OS dan menerapkannya melalui rpm-ostree.

Kehati-hatian terhadap pembaruan

Agen lokal Zincati secara berkala memeriksa layanan jarak jauh untuk melihat kapan pembaruan tersedia. Nilai “rollout wariness” yang disesuaikan (lihat [dokumentasi](https://coreos.github.io/zincati/usage/auto-updates/#phased-rollouts-client-wariness-canaries)) dapat disediakan untuk memberi tahu server seberapa cepat atau hati-hati sebuah node dalam menerima pembaruan.

Parameter rollout_wariness dapat diatur ke nilai pecahan antara 0.0 (paling cepat menerima) dan 1.0 (paling berhati-hati). Untuk menerima pembaruan paling awal dalam siklus rollout bertahap, node dapat dikonfigurasi dengan nilai rendah (misalnya 0.001). Ini dapat dilakukan selama proses provisioning menggunakan potongan konfigurasi [Butane](xref:producing-ign.adoc) seperti ditunjukkan di bawah ini:

Contoh: mengonfigurasi tingkat kehati-hatian pembaruan Zincati
variant: fcos
version: 1.6.0
storage:
  files:
    - path: /etc/zincati/config.d/51-rollout-wariness.toml
      contents:
        inline: |
          [identity]
          rollout_wariness = 0.001

Finalisasi pembaruan sistem operasi

Untuk menyelesaikan pembaruan sistem operasi, mesin harus melakukan reboot. Karena tindakan ini dapat mengganggu layanan yang sedang berjalan, Zincati memungkinkan administrator klaster mengontrol kapan node diizinkan untuk reboot dalam rangka finalisasi pembaruan.

Strategi finalisasi berikut tersedia:

  • Segera setelah pembaruan diunduh dan disiapkan secara lokal, lakukan reboot langsung untuk menerapkannya.

  • Gunakan pengelola kunci (lock-manager) eksternal untuk mengoordinasikan proses reboot pada sekumpulan mesin.

  • Izinkan reboot hanya dalam jendela pemeliharaan (maintenance window) yang dikonfigurasi, didefinisikan berdasarkan jadwal mingguan dalam waktu UTC.

Strategi finalisasi spesifik dapat dikonfigurasi pada setiap node.

Potongan konfigurasi [Butane](xref:producing-ign.adoc) di bawah ini menunjukkan cara mendefinisikan dua jendela pemeliharaan pada akhir pekan, dimulai pada pukul 22:30 UTC dan berlangsung selama satu jam setiap kali:

Contoh: mengonfigurasi strategi pembaruan Zincati
variant: fcos
version: 1.6.0
storage:
  files:
    - path: /etc/zincati/config.d/55-updates-strategy.toml
      contents:
        inline: |
          [updates]
          strategy = "periodic"
          [[updates.periodic.window]]
          days = [ "Sat", "Sun" ]
          start_time = "22:30"
          length_minutes = 60

Untuk detail lebih lanjut mengenai finalisasi pembaruan, lihat [dokumentasi Zincati](https://coreos.github.io/zincati/usage/updates-strategy/).

Rollback Manual

Ketika pembaruan selesai, deployment OS sebelumnya tetap tersimpan di disk. Jika pembaruan menimbulkan masalah, Anda dapat menggunakannya sebagai cadangan. Ini adalah operasi manual yang memerlukan intervensi manusia dan akses ke konsol.

Rollback sementara

Untuk sementara waktu mem-boot deployment OS sebelumnya, tahan tombol Shift selama proses boot OS. Ketika menu bootloader muncul, pilih entri OS yang relevan di menu tersebut.

Rollback permanen

Untuk secara permanen kembali ke deployment OS sebelumnya, masuk ke node target dan jalankan perintah berikut:

# Hentikan layanan yang melakukan pembaruan otomatis
sudo systemctl stop zincati.service

# Menandai deployment OS sebelumnya sebagai default, dan langsung mem-boot ulang ke dalamnya
sudo rpm-ostree rollback -r

Harap diperhatikan bahwa Zincati akan tetap mencari pembaruan dan meningkatkan ke deployment OS baru yang tersedia, selain dari yang baru saja Anda kembalikan.

Jika Anda mau, Anda dapat mematikan pembaruan otomatis untuk sementara waktu. Nantinya, Anda dapat mengaktifkannya kembali agar mesin dapat mengikuti alur pembaruan seperti biasanya:

# Nonaktifkan Zincati untuk menonaktifkan pembaruan otomatis di masa depan
sudo systemctl disable --now zincati.service

[...]

# Aktifkan kembali nanti untuk menyelaraskan dengan ujung aliran
sudo systemctl enable --now zincati.service