Halo guys, Ridwan here..
Come again with a new notes update!
Bagi kita yang sehari-hari mengelola infrastruktur cloud, melakukan migrasi workload dari satu cluster OpenStack ke cluster OpenStack lainnya sering kali menjadi pekerjaan yang cukup tricky dan memakan waktu. Terutama jika kita berencana memindahkan environment dari arsitektur lama seperti Red Hat OpenStack Platform (RHOSP) ke arsitektur generasi terbaru, yaitu Red Hat OpenStack Services on OpenShift (RHOSO).
Nah, untuk mempermudah proses ini, kita bisa menggunakan tool bernama OS-Migrate. Tool ini pada dasarnya adalah kumpulan Ansible collection yang dirancang khusus untuk mengekstrak resource dari cloud sumber (source) dan mem-provision resource tersebut di cloud tujuan (target). Karena berbasis Ansible, otomatisasi migrasinya menjadi jauh lebih terstruktur, konsisten, dan mudah ditweak.
Konsep Dasar OS-Migrate
Secara umum, alur migrasi menggunakan OS-Migrate dibagi menjadi tiga tahap utama:
- Prasyarat: Persiapan awal seperti menyiapkan kredensial (auth) untuk kedua cloud dan file parameter konfigurasi.
- Pre-Workload Migration: Memindahkan resource pendukung (seperti network, subnet, security group, router, image, dll) ke target. Pada fase ini, workload (VM) di cloud asal masih berjalan normal tanpa gangguan (zero downtime).
- Workload Migration: Baru memindahkan VM & volume itu sendiri. Catatan: Di tahap ini akan ada downtime pada workload yang dipindahkan.
1. Instalasi
Pastikan sistem kalian (yang akan bertindak sebagai mesin eksekutor) sudah terpasang Ansible dan Python. Jalankan perintah berikut di terminal:
Install Ansible & Python$ sudo dnf install ansible $ sudo dnf install python3Install OS-Migrate via Ansible Galaxy & Dependencies
$ ansible-galaxy collection install os_migrate.os_migrate:1.0.3 --force ansible-galaxy $ ansible-galaxy collection install openstack.cloud $ pip3 install --upgrade openstacksdk python3-openstackclient --break-system-packages
2. File Parameter (os-migrate-vars.yml)
Sebelum mulai migrasi, kita perlu mendefinisikan kredensial akses untuk kedua lingkungan (RHOSP sebagai source, dan RHOSO sebagai target). Buat sebuah file bernama os-migrate-vars.yml lalu sesuaikan nilainya:
os_migrate_src_auth: auth_url: https://rhosp-keystone.example.com:5000/v3 password: srcpassword project_domain_name: Default project_name: src_project user_domain_name: Default username: src_user os_migrate_src_region_name: regionOne os_migrate_dst_auth: auth_url: https://rhoso-keystone.example.com:5000/v3 password: dstpassword project_domain_name: Default project_name: dst_project user_domain_name: Default username: dst_user os_migrate_dst_region_name: regionOne os_migrate_data_dir: /home/migrator/os-migrate-data
3. Export Variabel Environment
Agar eksekusi playbook lebih praktis (seperti one-liner command) dan kita tidak perlu mengetik panjang lebar berulang kali, jadikan direktori OS-Migrate dan base command-nya sebagai variabel environment (saya ubah `OSM_PROJECT-A` menjadi `OSM_PROJECT_A` agar sesuai standar variabel bash):
$ export OSM_PROJECT_A=/home/migrator/.ansible/collections/ansible_collections/os_migrate/os_migrate $ export OSM_CMD="ansible-playbook -v -i $OSM_PROJECT_A/localhost_inventory.yml -e @os-migrate-vars.yml"
4. Migrasi Tahap 1 — Pre-Workload Migration
Di OS-Migrate, setiap resource memiliki pola migrasi yang persis sama: export (dari source) → tersimpan di ansible host (berupa file yaml) → import (ke target).
Contoh eksekusi untuk memigrasikan Network:
Export dari RHOSP:$ $OSM_CMD $OSM_PROJECT_A/playbooks/export_networks.yml
Hasilnya akan tersimpan sebagai file networks.yml di dalam folder os_migrate_data_dir.
$ $OSM_CMD $OSM_PROJECT_A/playbooks/import_networks.yml
Pola export-import yang sama berlaku juga untuk resource lainnya seperti: subnets, routers, router_interfaces, security_groups, security_group_rules, images, keypairs, projects, users, user_project_role_assignments, hingga detached_volumes (volume yang saat ini tidak terpasang ke VM mana pun).
Kalian bisa melihat daftar lengkap playbook yang tersedia dengan cara mengecek isi direktori playbooks:
$ ls $OSM_PROJECT_A/playbooks
5. Migrasi Tahap 2 — Workload Migration (VM + Volume)
Proses ini sedikit berbeda dari sekadar export-import metadata. Karena memindahkan data block storage (volume) yang riil, proses ini membutuhkan VM perantara yang disebut Conversion Host di kedua sisi (source dan target). Conversion host inilah yang menangani transfer data secara peer-to-peer antar cluster cloud.
Catatan Penting: Kedua conversion host ini harus bisa saling terhubung satu sama lain meskipun berbeda cluster. Biasanya, koneksi ini dijembatani menggunakan migration network yang di-provisioning dalam bentuk provider network pada OpenStack.
Cara Kerjanya: VM di source dimatikan → volume dilepas (detach) → volume tersebut dipasang (attach) ke conversion host source → data ditransfer langsung melalui jaringan → conversion host target menerima dan menulis data tersebut ke volume target.
Berikut adalah gambar topology proses Workload Migration tersebut:
Langkah-langkah eksekusi migrasi VM:
- Deploy Conversion Host di kedua sisi
$ $OSM_CMD $OSM_PROJECT_A/playbooks/deploy_conversion_hosts.yml
- Export metadata VM dari RHOSP (Ini hanya mengekstrak metadata, belum memindahkan isi volume!)
$ $OSM_CMD $OSM_PROJECT_A/playbooks/export_workloads.yml
Hasilnya: akan terbentuk fileworkloads.ymldi direktori data. - (Opsional) Modifikasi file workloads.yml
Kalian bisa membuka file tersebut untuk mengubah parameter tertentu di sisi target, misalnya menyesuaikan spesifikasi flavor, mengganti nama VM, atau merapikan security group agar sesuai dengan standar di RHOSO. - Jalankan migrasi sesungguhnya
Pastikan koneksi jaringan pada provider network stabil, karena kedua cloud harus saling terhubung selama proses transfer data ini berlangsung.$ $OSM_CMD $OSM_PROJECT_A/playbooks/import_workloads.yml
- Bersihkan (Clean up) Conversion Host setelah selesai
Jangan lupa menghapus VM perantara ini untuk membebaskan kembali resource komputasi kalian setelah semua migrasi selesai.$ $OSM_CMD $OSM_PROJECT_A/playbooks/delete_conversion_hosts.yml
Penutup
Migrasi cluster OpenStack—apalagi dari RHOSP ke RHOSO—memang selalu punya tantangan tersendiri dan rawan bikin deg-degan. Tapi dengan pendekatan declarative & automated ala OS-Migrate ini, beban kerjaan kita jadi jauh lebih terukur dan rapi.
Semoga catatan singkat ini bisa jadi referensi berguna buat teman-teman yang lagi ancang-ancang mau eksekusi migrasi cloud-nya. Kalau kalian punya cerita pengalaman serupa atau mau berdiskusi soal konfigurasinya, langsung drop di kolom komentar ya!
Sampai ketemu di catatan RDW-Notes berikutnya. Tetap semangat, happy migrating, dan salam oprek! ☕




