Instalasi
Condensa didistribusikan sebagai satu binary mandiri: web UI tertanam di dalamnya, database menggunakan SQLite, dan konfigurasi dilakukan lewat environment variable. Kubernetes tidak diperlukan — hanya terlibat bila target migrasinya adalah Awanio CEP.
Persyaratan
- Server Linux x86_64 (VM juga bisa)
- Akses jaringan dari server Condensa ke:
- VMware vCenter/ESXi (port 443)
- target migrasi — API Awanio Cockpit atau Vapor (lihat Integrasi)
- Ruang disk untuk staged transfer (hanya dipakai oleh fallback staged dan upload OVA/VHD): ukur direktori staging sesuai disk terbesar yang akan dimigrasikan
Dependensi jalur data
Condensa memindahkan data disk lewat salah satu dari dua jalur, dan masing-masing punya prasyarat sendiri. Engine-nya dipilih otomatis per migrasi, jadi ada baiknya mengetahui jalur mana yang akan dipakai sebelum memulai transfer besar.
| Jalur data | Aliran data | Warm migration | Prasyarat |
|---|---|---|---|
| VDDK langsung (disarankan) | ESXi → host target | Didukung | Di host target (Vapor): nbdkit dengan plugin VDDK, library VDDK dari VMware, plus qemu-nbd dan nbdfuse |
| Staged (fallback, hanya target Cockpit) | ESXi → Condensa → target | Tidak didukung | Di host Condensa: qemu-img (paket qemu-utils) |
Di host target (Vapor): VDDK
Tanpa VDDK, warm migration mustahil dan semua migrasi jatuh ke jalur staged. Pasang lewat UI Vapor (System → Third-party libraries) atau Ansible role, lalu pastikan badge-nya berbunyi installed. Log migrasi menyebutkan engine yang terpilih:
Target host supports VDDK; using direct VDDK pullBila yang muncul Target host has no VDDK (nbdkit not found), berarti jalur staged yang dipakai.
Di host Condensa: qemu-img
Jalur staged mengonversi setiap disk hasil ekspor menjadi qcow2 di dalam Condensa, sehingga qemu-img harus tersedia di sana:
sudo apt-get install -y qemu-utils # Debian/Ubuntu
sudo dnf install -y qemu-img # RHEL/RockyCondensa menolak memulai migrasi staged bila paket ini tidak ada, alih-alih gagal di tengah proses ekspor. Virtual appliance sudah menyertakannya.
Utamakan VDDK di target
Jalur staged menyalin setiap byte dua kali (sumber → Condensa → target) dan membutuhkan ruang staging sebesar disk terbesar. Memasang VDDK di target menghilangkan kedua beban itu sekaligus membuka warm migration — layak dilakukan sebelum memigrasikan VM besar.
Keterjangkauan jaringan untuk jalur staged
Saat jalur staged dipakai, target mengunduh disk yang sudah disiapkan dari Condensa melalui CONDENSA_PUBLIC_URL. URL itu harus terjangkau dari host target, bukan sekadar dari browser Anda: alamat di jaringan privat atau di balik NAT yang tidak bisa dirutekan target akan gagal di langkah unduh.
Menginjeksi CONDENSA_PUBLIC_URL saat instalasi
Kedua installer menerima nilai ini langsung, jadi Anda tidak perlu menyunting berkas environment secara manual di host baru. Berikan --public-url (atau ekspor CONDENSA_PUBLIC_URL sebelum menjalankan); prioritasnya --public-url > $CONDENSA_PUBLIC_URL > alamat utama host yang terdeteksi otomatis.
# Binary yang memasang dirinya sendiri
sudo ./condensa install --public-url http://condensa.example.com:8080
# Installer shell
sudo ./install.sh --public-url http://condensa.example.com:8080 ./condensa
# atau lewat environment:
sudo CONDENSA_PUBLIC_URL=http://203.0.113.10:8080 ./install.sh ./condensaFallback deteksi otomatis hanyalah tebakan terbaik dari hostname -I; ia salah di host NAT atau multi-homed, jadi set eksplisit di lokasi pelanggan. Memberikan --public-url saat upgrade hanya menimpa satu baris itu dan menjaga seluruh secret tetap utuh — solusi ketika instalasi pertama menebak keliru.
Tulis nilainya agar bisa dipakai target apa adanya: sertakan port kecuali port default skema (443 untuk https, 80 untuk http), pakai https:// setiap kali CONDENSA_TLS bukan off, dan tambahkan prefiks base-path bila Anda mengubah CONDENSA_BASE_PATH dari /condensa.
| Situasi | CONDENSA_PUBLIC_URL |
|---|---|
| Nama DNS, port HTTP default | http://condensa.example.com:8080 |
| IP publik | http://203.0.113.10:8080 |
TLS aktif (CONDENSA_TLS≠off) | https://condensa.example.com |
| Di balik prefiks base-path | http://10.20.0.5:8080/condensa |
1. Pasang binary
sudo install -m 0755 condensa-server /usr/local/bin/condensa-server
sudo mkdir -p /var/lib/condensa/staging /var/log/condensa /etc/condensa2. Buat kunci enkripsi
Kredensial provider (password vCenter, API token) disimpan terenkripsi AES-256-GCM. Kuncinya dibuat sekali dan dipegang oleh Anda — database yang bocor tidak membocorkan kredensial infrastruktur.
condensa-server -generate-keyAnda juga butuh kunci penanda-tangan JWT untuk token autentikasi. Server menolak start tanpa kunci ini (tidak ada default yang tidak aman), dan mengubahnya kemudian akan membatalkan sesi yang sedang berjalan:
openssl rand -base64 48Simpan keduanya di /etc/condensa/condensa.env:
sudo tee /etc/condensa/condensa.env <<'EOF'
CONDENSA_ENCRYPTION_KEY=<kunci-enkripsi-hasil-generate>
JWT_SECRET=<kunci-jwt-hasil-generate>
EOF
sudo chmod 600 /etc/condensa/condensa.envJaga kunci ini baik-baik
Kehilangan CONDENSA_ENCRYPTION_KEY berarti seluruh kredensial provider harus dimasukkan ulang. Cadangkan file ini bersama secret Anda yang lain.
3. Buat unit systemd
/etc/systemd/system/condensa.service:
[Unit]
Description=Condensa VM migration server
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/condensa-server
Environment=PORT=8080
Environment=DB_PATH=/var/lib/condensa/condensa.db
Environment=CONDENSA_UPLOAD_DIR=/var/lib/condensa/staging
Environment=CONDENSA_LOG_FILE=/var/log/condensa/condensa.log
Environment=CONDENSA_PUBLIC_URL=http://condensa.example.com:8080
# condensa.env holds CONDENSA_ENCRYPTION_KEY and JWT_SECRET (chmod 600)
EnvironmentFile=/etc/condensa/condensa.env
Restart=on-failure
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now condensaEnvironment variable
| Variabel | Wajib | Kegunaan |
|---|---|---|
CONDENSA_ENCRYPTION_KEY | Ya | Kunci AES-256 untuk kredensial provider at rest (-generate-key) |
JWT_SECRET | Ya | Kunci penanda-tangan token autentikasi (≥32 byte, mis. openssl rand -base64 48); server menolak start tanpanya |
PORT | Tidak (default 8080) | Port HTTP |
DB_PATH | Tidak | Lokasi file database SQLite |
CONDENSA_PUBLIC_URL | Untuk staged transfer / OVA | URL yang dipakai target untuk mengambil disk dari Condensa |
CONDENSA_UPLOAD_DIR | Untuk staged transfer / OVA | Direktori staging — ukur sesuai disk terbesar |
CONDENSA_LOG_FILE | Disarankan | Mengaktifkan halaman Logs di UI |
CONDENSA_ADMIN_USERNAME / CONDENSA_ADMIN_PASSWORD | Tidak | Membuat admin pertama secara non-interaktif (otomasi) |
CONDENSA_TLS | Disarankan | off, self-signed, atau on — lihat HTTPS |
CONDENSA_TLS_CERT / CONDENSA_TLS_KEY | Dengan CONDENSA_TLS=on | Rantai sertifikat PEM dan kunci privat |
CONDENSA_TLS_HOSTS | Tidak | Nama/alamat tambahan yang harus dicakup sertifikat self-signed |
CONDENSA_UPDATE_URL | Untuk update di tempat | Feed update bertanda tangan — lihat Update |
CONDENSA_UPDATE_PUBLIC_KEY | Dengan CONDENSA_UPDATE_URL | Kunci Ed25519 untuk memverifikasi feed |
HTTPS
Formulir login mengirim password dan setiap permintaan berikutnya membawa token sesi, jadi sajikan dashboard melalui TLS. Tersedia tiga mode:
CONDENSA_TLS | Perilaku |
|---|---|
off (bawaan) | HTTP biasa. Gunakan hanya bila ada reverse proxy di depan yang menangani TLS. |
self-signed | Condensa menerbitkan sertifikatnya sendiri dan memperbaruinya otomatis. |
on | Memakai CONDENSA_TLS_CERT dan CONDENSA_TLS_KEY. |
Nilai yang tidak dikenali menyebabkan error saat startup, bukan diam-diam kembali ke plaintext.
Sertifikat self-signed
Sebagian besar instalasi diakses lewat alamat IP di jaringan privat, di mana tidak ada otoritas sertifikat yang bisa menerbitkan apa pun:
CONDENSA_TLS=self-signedSertifikat disimpan di samping database, mencakup loopback, hostname, dan setiap alamat antarmuka, serta diterbitkan ulang otomatis saat mendekati kedaluwarsa atau saat host mendapat alamat baru. Browser memperingatkan pada kunjungan pertama sampai Anda mempercayainya — satu klik sekali, dibanding mengirim kredensial terbuka di setiap permintaan.
Tambahkan nama yang tidak berasal dari antarmuka:
CONDENSA_TLS_HOSTS=condensa.internal.example.com,10.20.0.5Sertifikat yang Anda sediakan
CONDENSA_TLS=on
CONDENSA_TLS_CERT=/etc/condensa/tls/fullchain.pem
CONDENSA_TLS_KEY=/etc/condensa/tls/privkey.pemUser service harus bisa membaca kedua berkas itu.
Transfer yang menarik data dari Condensa
Dua jalur migrasi membuat target mengunduh image disk dari Condensa lewat CONDENSA_PUBLIC_URL: jalur staged ke Cockpit, dan Awanio CEP (CDI). Pengunduh itu memverifikasi sertifikat, sehingga sertifikat self-signed akan ditolak kecuali target mempercayainya. Gunakan sertifikat bertanda tangan CA untuk jalur tersebut.
Migrasi VDDK langsung — bawaan untuk target Cockpit dan Vapor — menarik data dari VMware, bukan dari Condensa, jadi tidak terpengaruh.
Jangan lupa set CONDENSA_PUBLIC_URL ke URL https:// saat TLS aktif.
4. Menjalankan pertama kali
Buka http://<server>:8080. Pada database yang masih kosong Condensa menampilkan setup wizard untuk membuat akun administrator pertama dan langsung login. Untuk deployment terskrip, gunakan CONDENSA_ADMIN_USERNAME dan CONDENSA_ADMIN_PASSWORD — admin dibuat saat startup.
Setelah setup:
- buat akun tambahan di tab Users (khusus admin). Role
memberadalah role operator: bisa melihat provider serta membuat, menjalankan, dan membatalkan migrasi; pengelolaan provider, penghapusan, administrasi user, dan audit log tetap khusus admin. - setiap aksi penting keamanan (login dan kegagalannya, perubahan user dan provider, siklus hidup migrasi) tercatat di tab Audit Log.
5. Hubungkan provider
Lanjutkan ke Integrasi untuk mendaftarkan sumber VMware serta target Awanio Cockpit atau Vapor.
Update
Update tidak pernah menyentuh /var/lib/condensa maupun /etc/condensa, sehingga provider Anda, kredensialnya yang terenkripsi, riwayat migrasi, pengguna, dan kedua secret tetap utuh. Anda tidak perlu mengatur ulang apa pun.
Dari dashboard
Saat ada rilis baru, administrator melihat pemberitahuan dengan tombol Install update. Condensa mengunduh rilis, memverifikasinya, memasangnya, lalu restart — beberapa detik tidak dapat diakses. Tombol itu menolak bekerja saat ada migrasi berjalan, karena restart akan membatalkannya.
Instalasi yang dipasang dengan Condensa 1.1.8 atau lebih baru sudah terprakonfigurasi memeriksa enterprise portal — tanpa kunci, tanpa pengaturan apa pun. Sumbernya satu baris di /etc/condensa/condensa.env; kosongkan untuk mematikan pemeriksaan update:
CONDENSA_UPDATE_URL=https://enterprise.awan.io/api/v1/products/condensa/releases/latestInstalasi yang dipasang sebelum 1.1.8 mendapat perilaku yang sama setelah satu upgrade manual berikutnya; baris di atas juga bisa ditambahkan sendiri.
Dari command line
sudo condensa update --check # laporkan yang tersedia, tanpa mengubah apa pun
sudo condensa update # pasang rilis terbaru lalu restart
sudo condensa update --to 1.1.7 # pasang rilis tertentuTambahkan --force untuk update saat ada migrasi berjalan — migrasi itu akan terputus dan gagal.
Yang diperiksa updater
Sebelum apa pun menggantikan binary yang sekarang berfungsi:
- rilis harus berasal dari sumber tepercaya — TLS ke portal yang dikonfigurasi, atau, untuk feed air-gapped, tanda tangan Ed25519 yang cocok dengan kunci Anda;
- SHA-256 berkas yang diunduh harus sama dengan yang dipublikasikan feed;
- binary yang diunduh harus bisa dijalankan dan melaporkan versi yang dijanjikan — ini menangkap unduhan terpotong atau salah arsitektur yang akan membuat service gagal start;
- tidak boleh ada migrasi berjalan, kecuali dipaksa.
Binary yang digantikan disimpan sebagai condensa.previous, jadi rollback cukup menyalin berkas dan restart.
Mengganti binary secara manual
Tetap didukung dan tidak berubah — migrasi database berjalan saat startup:
sudo install -m 0755 condensa /usr/local/bin/condensa
sudo systemctl restart condensaInstalasi air-gapped
Host yang tidak bisa menjangkau enterprise portal tetap bisa update di tempat, dengan dua cara.
Manual (paling sederhana): bawa masuk tarball rilis lewat jalur transfer terkontrol Anda, cocokkan SHA-256-nya dengan nilai di halaman rilis portal, lalu:
tar -xzf condensa-<versi>-linux-amd64.tar.gz
sudo ./condensa installUpgrade mempertahankan database, provider, kredensial, dan pengaturan.
Otomatis, dari mirror internal: Awanio menyertakan, sebagai bagian dari delivery, feed bertanda tangan (updates.signed.json) beserta kunci publik untuk memverifikasinya. Host feed dan tarball rilis di server https internal, lalu konfigurasi tiap instalasi:
CONDENSA_UPDATE_URL=https://releases.internal.example.com/condensa/updates.signed.json
CONDENSA_UPDATE_PUBLIC_KEY=<kunciA>,<kunciB>Jika sertifikat mirror berasal dari CA internal, tambahkan CA itu ke trust store OS tiap host Condensa. Feed ditandatangani Ed25519, sehingga mirror yang dibobol tidak dapat mengubah apa yang diterima instalasi; semua pemeriksaan updater lainnya tetap berlaku.