Tag: bash

  • Script Perbaikan Ceph untuk Libvirt dan Agent CloudStack (Rocky Linux 9)

    Script Perbaikan Ceph untuk Libvirt dan Agent CloudStack (Rocky Linux 9)

    Saat testing integrasi Ceph sebagai primary storage CloudStack pada Rocky Linux 9, saya menemui kendala saat menambahkan storage dan membuat instance. Dua komponen masih menggunakan opsi auth_supported, yang ditolak library klien Ceph pada lab saya.

    Perbaikannya adalah mengganti opsi tersebut menjadi auth_client_required. Untuk memudahkan penerapan ulang, saya menyiapkan dua script di GitHub.

    Fungsi masing-masing script

    • Bagian A — fix-libvirt-rbd.sh: memperbaiki driver storage RBD libvirt untuk error failed to set RADOS option: auth_supported saat menambahkan primary storage.
    • Bagian B — fix-cloudstack-agent-rbd.sh: memperbaiki plugin KVM agent untuk error invalid conf option auth_supported saat konversi template atau disk instance.

    Keduanya melakukan pengecekan sederhana, menyediakan backup dan rollback, serta melewati pemasangan jika komponen aktif sudah menggunakan opsi baru.

    Persiapan

    Ceph, pool RBD, konfigurasi klien, dan keyring harus sudah tersedia. Pastikan akses dari host KVM berhasil:

    rbd --id cloudstack -p cloudstack-pool ls

    Default script memakai Rocky 9 x86_64, libvirt 11.10.0-12.7.el9_8, dan CloudStack agent 4.23.0.0. Sesuaikan versi, URL, path, dan nama layanan melalui variabel di atas script. Patch tidak membutuhkan secret Ceph.

    Unduh script

    wget https://raw.githubusercontent.com/rafiharli/cloudstack-ceph-rbd-fix/refs/heads/main/fix-libvirt-rbd.sh
    
    wget https://raw.githubusercontent.com/rafiharli/cloudstack-ceph-rbd-fix/refs/heads/main/fix-cloudstack-agent-rbd.sh

    Jalankan Bagian A

    Build sebaiknya dilakukan pada mesin Rocky dengan rilis, arsitektur, dan repository klien Ceph yang sesuai host KVM:

    sudo bash fix-libvirt-rbd.sh build

    Hasilnya ada di /root/libvirt-rbd-backport/fixed.rpm. Jika mesin build terpisah, salin RPM ke path yang sama pada host KVM dan unduh script A di host tersebut. Kemudian pasang:

    sudo bash fix-libvirt-rbd.sh install

    Bagian A hanya memasang subpaket driver RBD hasil build, kemudian me-restart libvirt dan menghentikan sementara agent yang aktif.

    Jalankan Bagian B

    Pada host KVM:

    sudo bash fix-cloudstack-agent-rbd.sh apply

    Script compile ulang satu class Java, memeriksa API dan bytecode, lalu mengganti plugin dan menghentikan sementara agent yang aktif. Jalankan pemasangan ketika tidak ada deployment atau migrasi berlangsung.

    Cek hasil dan rollback

    Tunggu host dan primary storage berstatus Up, lalu coba deployment. Pastikan instance Running dan ROOT volume berada di storage Ceph. Patch ini menangani error kompatibilitas opsi RBD; kapasitas host, template, dan offering tetap harus sesuai.

    Jika perlu mengembalikan perubahan, jalankan pada host KVM dengan direktori kerja yang sama:

    sudo bash fix-cloudstack-agent-rbd.sh rollback
    sudo bash fix-libvirt-rbd.sh rollback

    Update paket dapat menimpa patch lokal. Periksa kembali setelah update. Detail backup dan pemakaian tersedia di README repository.