Rabu, 22 Juli 2026

Migration RHOSP ke RHOSO: Pengalaman Migrasi OpenStack dengan OS-Migrate

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:

  1. Prasyarat: Persiapan awal seperti menyiapkan kredensial (auth) untuk kedua cloud dan file parameter konfigurasi.
  2. 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).
  3. 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 python3
Install 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.

Import ke RHOSO:
$ $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:

  1. Deploy Conversion Host di kedua sisi
    $ $OSM_CMD $OSM_PROJECT_A/playbooks/deploy_conversion_hosts.yml


  2. 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 file workloads.yml di direktori data.
  3. (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.
  4. 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
  5. 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! ☕

Share: