Selasa, 22 September 2026

Akses Graphical Console VM dari Cockpit Web-U

 Halo guys, Ridwan di sini.

Datang lagi dengan update catatan terbaru!

Singkat cerita saya iseng-iseng create VM di atas layanan VPS yang saya sewa ini, ternyata berhasil running well melalui command virsh (KVM/libvirt). Tapi karena environment VPS ini sifatnya headless atau full CLI, sempat agak PR pas butuh akses interactive console atau monitor display saat proses instalasi OS guest berlangsung. Biasanya kan kita harus forward port VNC via SSH tunnel atau pasang client remote viewer yang dapat diakses secara publik.

Ternyata ada solusi yang jauh lebih praktis dan native: Cockpit dengan add-on Cockpit Machines.
Dengan modul ini, kita bisa:

  1. Memantau resource VM (CPU, Memory, Storage, Network I/O) secara realtime.

  2. Melakukan lifecycle management (Start, Stop, Force Off, Reboot, Snapshot).

  3. Yang paling penting: membuka Graphical Console (VNC/SPICE) maupun Serial Console langsung dari browser tanpa software tambahan!


Nah, di catatan kali ini saya mau share step-by-step cara pasang dan konfigurasinya di RHEL 10.

1. Install Paket 'cockpit-machines' dan KVM Stack

Pastikan repositori sistem aktif, lalu pasang modul cockpit-machines beserta dependensi KVM/libvirt:

sudo dnf install -y cockpit-machines libvirt-daemon-kvm qemu-kvm virt-install



2. Aktifkan Service Virtualization Daemon (libvirtd)

Agar Cockpit dapat berinteraksi dengan hypervisor KVM, pastikan daemon libvirtd sudah aktif dan berjalan:

sudo systemctl enable --now libvirtd

Verifikasi status servicenya:

systemctl is-active libvirtd

(Pastikan outputnya menunjukkan status active).


3. Tambahkan User ke Group libvirt

Jika kalian login ke Cockpit menggunakan non-root user dan ingin mengelola VM tanpa pop-up privilege terus-menerus, masukkan user ke grup libvirt:

sudo usermod -aG libvirt $USER


4. Akses Web Console via Cockpit

Setelah paket terpasang, kalian tidak perlu restart service Cockpit karena modul baru akan langsung terdeteksi otomatis:

  1. Buka browser dan akses Cockpit server kalian:

    https://<ip-server>:9090

    (Atau sesuaikan jika port Cockpit sudah kalian custom, misalnya port 80).


  2. Login menggunakan user Linux kalian. Jika diminta, klik Turn on administrative access di pojok kanan atas agar memiliki izin root/system scope.


  3. Di panel navigasi sebelah kiri, kalian akan melihat menu baru: Virtual Machines.

  4. Klik menu tersebut. Semua VM yang sebelumnya dibuat via command virsh (di scope qemu:///system) akan otomatis terdeteksi dan terdaftar di sana.


  5. Klik nama VM yang ingin dilihat, lalu masuk ke tab Console. Sekarang kalian bisa langsung berinteraksi dengan layar VM via browser, baik itu tampilan GUI installer maupun login prompt serial!



Catatan Tambahan: VM Tidak Muncul?

Jika VM yang dibuat via virsh belum muncul di dashboard Cockpit, pastikan VM tersebut dibuat di bawah scope system:

sudo virsh list --all

Cockpit membaca koneksi libvirt default di qemu:///system. Jadi selama VM kalian berada di scope system dan Cockpit dijalankan dengan administrative access, VM pasti langsung terbaca tanpa perlu konfigurasi ulang.

Sekian catatan singkat kali ini, Semoga bermanfaat buat teman-teman yang lagi oprek virtualization di VPS atau homelab headless! Kalau ada kendala atau pertanyaan, feel free drop di kolom komentar ya.

Cheers!

Share:

Kamis, 10 September 2026

Supercharge Linux Terminal dengan Goose: Agentic AI & Integrasi Model LightspeedAI

Halo guys, Ridwan di sini.
Datang lagi dengan update catatan terbaru!

Bagi kita yang sering berkutat di dunia engineering, maupun operasional server, kehadiran Generative AI seperti ChatGPT, Claude, atau Gemini tentu sudah tidak asing lagi. Biasanya, kalau ketemu pesan error atau konfigurasi rumit, alurnya adalah: buka browser, salin error ke chatbot, tunggu respons, salin perintah yang disarankan, lalu balik ke terminal untuk dieksekusi secara manual. Kalau masih error, kita bolak-balik lagi menyalin log-nya. Cukup menyita waktu, bukan?

Nah, sekarang paradigma AI mulai bergeser ke arah Agentic AI atau AI Agent.
Di catatan kali ini, saya mau mengulas salah satu open-source tool AI agent lokal yang sedang naik daun dan sangat powerful untuk terminal, yaitu Goose (goose-docs.ai).


Apa itu AI Agent?

Biar mudah dipahami, mari kita bedakan antara Chatbot Konvensional dengan AI Agent:

  • Chatbot biasa (Passive): Bertindak seperti konsultan yang hanya memberi saran. Dia cuma tahu teks yang kita berikan, menuliskan perkiraan perintah shell, tapi tidak tahu kondisi riil server kita jika tidak kita tempelkan log-nya.
  • AI Agent (Active & Autonomous): Bertindak layaknya asisten atau rekan oprek yang duduk di sebelah kita dan memegang keyboard. Dia memiliki kapabilitas untuk:
  1. Membaca kondisi sistem: Membuka file, membaca konfigurasi, dan melihat log secara mandiri. 
  2. Mengeksekusi perintah: Menjalankan command Linux langsung di lingkungan shell kita. 
  3. Evaluasi mandiri (bisa Looping): Membaca hasil output atau error, lalu menentukan langkah perbaikan berikutnya sampai instruksi kita benar-benar tuntas.

Sederhananya: Jika chatbot memberi tahu "Coba ketik perintah ini",  AI agent akan berkata "Biar saya periksa dan jalankan perbaikannya untuk Anda".


Apa itu Goose ?

Goose adalah AI agent open-source yang dirancang untuk bekerja langsung di terminal lokal. Beberapa hal menarik yang bisa dilakukan dengan Goose:

  • Full CLI & Terminal Native: Berjalan langsung di shell kesayangan kalian (Bash/Zsh).
  • Mendukung MCP & Built-in Extensions: Bisa dipasangi tools tambahan, termasuk Developer Tools bawaan untuk akses penuh ke eksekusi bash/terminal.
  • Agnostik terhadap LLM Provider: Bebas memilih otak AI-nya, mulai dari Google Gemini, OpenAI, Anthropic Claude, model lokal via Ollama, hingga RHEL Lightspeed AI (support airgap  via Satellite).
  • Contextual Session: Memiliki memori percakapan per sesi, jadi kalian bisa memerintahkan tugas bertahap secara runut tanpa perlu mengulang konteks dari awal.



01. Instalasi Goose

Goose bisa diinstal pada distribusi Linux umum (non-RHEL), macOS, Windows, maupun secara native pada Red Hat Enterprise Linux (RHEL).

A. Instalasi di Ubuntu, Debian, macOS, Windows

Untuk Linux umum dan macOS, kalian cukup menggunakan one-line script resmi berikut:

  • Bagi pengguna macOS dengan Homebrew:

$ curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash

  • Atau pengguna Windows via Winget:
> winglet install Block.Goose


B. Instalasi di Red Hat Enterprise Linux (RHEL 10)

Menariknya, di ekosistem Red Hat, Goose sudah masuk sebagai paket enterprise yang didukung resmi melalui extensions repo. Paket ini mencakup goose-redhat, goose-proxy, dan modul SELinux yang sudah disesuaikan.

Aktifkan repo ekstensi dan instal paketnya:

$ sudo subscription-manager repos --enable=rhel-10-for-$(arch)-extensions-rpms
$ sudo dnf install -y goose-redhat

Pada proses instalasi, paket utama goose, goose-proxy, dan goose-proxy-selinux akan terpasang secara otomatis beserta dependensinya.



02. Mengaktifkan Extension (Developer Tools)

Agar Goose tidak cuma sekadar menjawab pertanyaan dan diizinkan mengeksekusi perintah shell lokal, kita wajib mengaktifkan extension Developer Tools. Jalankan perintah interaktif konfigurasi berikut :

$ goose configure

Ikuti langkah interaktifnya:

  1. Pilih: Add Extension
  2. Pilih: Built-in Extension
  3. Pilih: Developer Tools
  4. Masukkan timeout eksekusi (contoh: 100 detik)

Setelah selesai, file konfigurasi akan otomatis tersimpan rapi di ~/.config/goose/config.yaml.


03. Konfigurasi Provider & Model AI

Kalian bebas menentukan model LLM yang ingin digunakan sebagai otak dari Goose.

A. Menggunakan Google Gemini

Bagi kalian yang ingin menggunakan API Google Gemini:

  1. Jalankan goose configure.
  2. Pilih opsi Configure Providers.
  3. Pilih provider: Google Gemini.
  4. Masukkan GOOGLE_API_KEY kalian.
  5. Pilih model yang ingin digunakan, misalnya gemini-3-flash-preview atau gemini-2.5-flash.


B. Menggunakan Red Hat Lightspeed AI (RHEL Command Line Assistant)

Kabar baik bagi pengguna ekosistem Red Hat: Goose pada RHEL dapat langsung diintegrasikan dengan model provider dari Lightspeed AI (RHEL command line assistant / rhel_cla).

  1. Jalankan goose configure.
  2. Pilih Configure Providers → RHEL command line assistant. (tampa perlu input API, pastikan service CLAD sudah terinsta)
  3. Pilih model: RHEL-command-line-assistant.


Setelah tersimpan, mari kita uji langsung dengan perintah sederhana:

$ goose run -t "What is the current OS version and kernel release?"

Goose akan memulai sesi kerja (provider: rhel_cla), membaca lingkungan OS, lalu menampilkan hasilnya di layar terminal.
Reff : https://www.redhat.com/en/blog/supercharge-rhel-troubleshooting-agentic-ai-introducing-goose



04. Use Case Praktis Goose 

Kira-kira apa saja skenario nyata di mana Goose bisa sangat membantu?

  • Investigasi Masalah & Log Analysis: Saat ada service yang failed atau crash, cukup perintahkan: "Cek log error pada Nginx dalam 15 menit terakhir dan analisa penyebabnya".

  • Audit & Tuning Konfigurasi: Menganalisa parameter kernel di /etc/sysctl.conf atau memeriksa resource leak pada proses tertentu.

  • Otomasi Setup & Patching: Menugaskan Goose untuk memeriksa paket yang outdated, melakukan dependensi check, hingga konfigurasi firewalld rules baru secara interaktif.



05. Bonus: Goose Telegram Gateway (Kirim Perintah via Chat!)

Nah, ini bagian yang paling seru! Bagaimana kalau kita sedang di jalan, jauh dari laptop, tiba-tiba ada kendala di server?

Dengan membuat bot gateway Telegram sederhana yang meneruskan chat ke sesi Goose lokal di server, kita bisa mengelola server cukup dari aplikasi Telegram di smartphone.

Bisa dilihat dari alur interaksi di atas:

  1. Kita mengirim pesan di Telegram: "Tolong cek jam pada server, apakah sudah menggunakan GMT+7 ?"
  2. Goose di server langsung menjalankan perintah timedatectl, membaca output-nya, dan melaporkan bahwa server masih menggunakan zona UTC (+0000).
  3. Bot tidak hanya menginfokan status, tetapi juga langsung mengubah zona waktu server ke Asia/Jakarta (WIB) dan memberikan tautan dokumentasi resmi Red Hat sebagai referensi.
  4. Kita cukup memverifikasi kembali dengan mengetik: "Tolong tampilkan 'timedatectl' kembali".

Pendekatan ini benar-benar akan membawa kemudahan baru dalam remote & maintenance tanpa harus selalu membuka koneksi SSH terminal.


06. Penutup

Kehadiran Agentic AI seperti Goose membuktikan bahwa peran AI di dunia infrastruktur bukan lagi sekadar auto-complete sintaks atau pencari contekan perintah. Dengan integrasi langsung ke sistem operasi, AI Agent mampu menjadi tangan kanan yang mengeksekusi tugas-tugas repetitif dan troubleshooting secara cepat dan presisi.

Dengan menghemat waktu pada hal-hal teknis harian seperti penelusuran log panjang atau konfigurasi berulang, kita bisa lebih fokus pada hal-hal strategis seperti arsitektur, skalabilitas, dan keamanan sistem.

Bagi teman-teman yang penasaran, saya sangat menyarankan untuk mencoba Goose di lingkungan homelab atau development kalian.

Bagaimana menurut kalian? Apakah tertarik mencoba AI Agent langsung di terminal, atau malah tertarik menghubungkannya ke bot Telegram seperti di atas? Jangan sungkan untuk berbagi pandangan atau berdiskusi di kolom komentar di bawah ya!

Sampai jumpa di catatan RDW-Notes selanjutnya.

Tetap semangat dan salam oprek! ☕

Share:

Rabu, 26 Agustus 2026

Hands-on Instalasi Red Hat Satellite 6.19 (Solusi Anti-Ribet Kelola Puluhan Server RHEL)

 Halo guys, Ridwan disini..
Datang lagi dengan update catatan baru!


Bagi kita yang mengelola infrastruktur Linux dalam skala menengah hingga besar, pasti pernah merasakan betapa repotnya mengelola patch, berlangganan, dan provisi secara manual di puluhan bahkan ratusan server. Bolak-balik daftar berlangganan satu per satu, sinkronkan repo ke setiap mesin, atau periksa status patching secara manual di masing-masing host. Nah, Red Hat Satellite ini hadir sebagai solusi untuk semua itu. 

https://access.redhat.com/webassets/avalon/d/Red_Hat_Satellite-6.12-Satellite_Overview_Concepts_and_Deployment_Considerations-en-US/images/9aa9e8bb77bb90b52ef2187f97f98256/system-architecture-satellite.png 

Apa itu Red Hat Satellite?

Red Hat Satellite adalah alat manajemen infrastruktur yang memungkinkan kita mengelola siklus hidup konten (langganan, repositori, patching, penyediaan) dari satu lokasi pusat. Sederhananya, Satelit ini semacam "kontrol misi" untuk seluruh armada server RHEL kita. Beberapa hal yang bisa dilakukan:

  • Manajemen langganan terpusat
  • Manajemen konten & sinkronisasi repositori
  • Penyediaan server baru (Kickstart, PXE Boot)
  • Manajemen patch & pelaporan errata
  • Manajemen & konfigurasi grup host
  • Integrasi dengan Ansible, Puppet, dan lainnya

Cocok banget buat yang mengelola infrastruktur server RHEL dalam jumlah banyak, karena semuanya bisa dikelola dari satu titik tanpa perlu login ke setiap server satu per satu.

Sebelum instalasi dimulai, berikut spesifikasi yang dapat digunakan untuk pengujian ini:

Catatan:

  • Pastikan server dalam keadaan baru disediakan (tidak ada layanan lain yang berjalan)
  • Pastikan SELinux dalam mode enforcing atau permissive
  • Pastikan clock sudah tersinkronisasi (gunakan chrony)
  • Pastikan hostname sudah terkonfigurasi dengan FQDN

01. Pengaturan Hostname & /etc/hosts

Langkah pertama adalah mengatur hostname server agar sesuai dengan FQDN yang akan digunakan.

1. Atur server nama host & DNS Lokal (FQDN)

$ sudo hostnamectl set-hostname satellite.local.rdw
$ echo '192.168.122.146 satellite.local.rdw satellite' | sudo tee -a /etc/hosts

 

2. Verifikasi nama host & perbarui DNS lokal




02. Aktifkan Repositori

Selanjutnya, kita perlu mengaktifkan repositori Satelit yang diperlukan.

1. Cek repo Satelit yang Tersedia

$ sudo subscription-manager repos --list | grep -i satellite

2. Aktifkan repo yang diperlukan

$ sudo subscription-manager repos \
--enable satellite-6.19-for-rhel-9-x86_64-rpms \
--enable satellite-maintenance-6.19-for-rhel-9-x86_64-rpms \
--enable satellite-utils-6.19-for-rhel-9-x86_64-rpms

3. Buat cache baru

$ sudo dnf clean all && sudo dnf makecache



03. Memasang Paket Satelit

Sekarang saatnya menginstal paket Satellite. Proses ini akan menginstal banyak dependensi, jadi memastikan koneksi internet stabil.


1. Instal Satellite

Kita akan menggunakan eksekusi latar belakang dengan output ke file /tmp/satellite-install.log

$ sudo dnf install -y satellite > /tmp/satellite-install.log 2>&1 & 

2. Pantau proses instalasi
Untuk melihat perkembangannya:

$ watch tail -f /tmp/satellite-install.log

3. Verifikasi paket yang terinstal  

$ rpm -q satellite

  
04. Pemasang Satelit Jalankan

Setelah paket terinstall, saatnya menjalankan installer untuk konfigurasi awal.

1. Pemasang satelit Jalankan

$ sudo satellite-installer --scenario satellite \
--tuning development \
--foreman-initial-admin-username admin \
--foreman-initial-admin-password changeme \
--foreman-initial-organization 'My Organization' \
--foreman-initial-location 'Default Location' --verbose

Parameter:

  •  ` --scenario satellite `: Instal server Satellite
  • `--tuning development`: Gunakan tuning profile untuk development (hemat resource)
  • `--foreman-initial-admin-username`: Username admin awal
  • `--foreman-initial-admin-password`: Password admin awal
  • `--foreman-initial-organization`: Nama organization awal
  • `--foreman-initial-location`: Nama location awal
  • `--verbose`: Tampilkan log detail

2. Tunggu proses selesai
Proses ini akan memakan waktu 10-30 menit tergantung pada spesifikasi server. Jika berhasil, akan muncul output berikut :



05. Buka Port Firewall

Agar client bisa mengakses Satellite, kita perlu membuka port yang diperlukan di firewall.

1. Buka port untuk Satellite

$ sudo firewall-cmd --permanent \
--add-port=80/tcp \
--add-port=443/tcp \
--add-port=5647/tcp \
--add-port=8000/tcp \
--add-port=8443/tcp \
--add-port=9090/tcp

2. Reload Firewall Config Rules

$ sudo firewall-cmd --reload

3. Verifikasi Port

$ sudo firewall-cmd --list-ports


06. Verifikasi Layanan

Pastikan semua service Satellite berjalan dengan baik.

1. Cek status semua service

$ sudo foreman-maintain service status
$ sudo foreman-maintain service status | grep -E "Active:|running"

Atau cek satu per satu:

$ sudo systemctl status redis postgresql pulpcore-api pulpcore-content tomcat foreman httpd foreman-proxy




07. Akses Web Interface

Sekarang Satellite sudah bisa diakses melalui browser.

1. Buka browser dan akses




08. Import CA Certificate ke Client

Agar client bisa berkomunikasi dengan Satellite, kita perlu mengimport CA certificate.

1. Download dan install katello-ca-consumer
Di client server:

$ curl -k https://satellite.local.rdw/pub/katello-ca-consumer-latest.noarch.rpm -o /tmp/katello-ca-consumer.rpm
$ sudo rpm -ivh /tmp/katello-ca-consumer.rpm

  
2. Registrasi client ke Satellite

$ sudo subscription-manager register --org="My Organization" --activationkey="Default_Key"


09. Sync Repository

Setelah login ke web interface, kita perlu sync repository yang dikelola Satellite.

  1. Login ke Satellite Web UI
  2. Navigasi ke: Content → Products
  3. Pilih product repos yang ingin di-sync (contoh: Red Hat Enterprise Linux 9)
  4. Klik "Sync Now" untuk memulai proses sinkronisasi
  5. Tunggu proses selesai (bisa memakan waktu beberapa jam tergantung jumlah repository)

10. Penutup


Kehadiran Red Hat Satellite membuktikan betapa pentingnya manajemen terpusat dalam mengelola infrastruktur perusahaan Linux. Dengan Satellite, kita tidak perlu lagi bolak-balik login ke setiap server hanya untuk memeriksa status patch atau mendaftar berlangganan. Semuanya bisa dikelola dari satu titik.
Dengan menghemat waktu pada hal-hal berulang seperti langganan manual, patching manual, atau penyediaan manual, kita jadi bisa lebih fokus pada hal-hal yang lebih strategis seperti optimasi infrastruktur, pengerasan keamanan, dan perencanaan kapasitas.
Bagi teman-teman yang mengelola infrastruktur RHEL dalam jumlah banyak, saya sangat merekomendasikan untuk mencoba Red Hat Satellite. Meskipun setup awalnya memerlukan usaha dan sumber daya yang tidak sedikit, ROI yang diperoleh akan sangat signifikan dalam jangka panjang.
Bagaimana menurut kalian? Apakah ada yang sudah menggunakan Red Hat Satellite di lingkungan kerja kalian? Atau mungkin ada kendala saat melakukan instalasi? Jangan sungkan untuk berbagi pengalaman atau bertanya di kolom komentar di bawah ya!

Sampai jumpa di catatan RDW-Notes selanjutnya. 
Tetap semangat dan salam oprek! ☕

Share:

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:

Minggu, 19 Juli 2026

Install ShellGPT di Terminal dengan Google AI-Studio & Cloudflare WorkerAI

 Halo guys, Ridwan here..
Come again with a new notes update!

Bagi kita yang sehari-hari bekerja sebagai Systems Engineer atau mengelola infrastruktur, terminal Linux sudah seperti rumah kedua. Tapi, pasti pernah kejadian lupa syntax command, atau harus bolak-balik buka browser cuma buat nanya "command linux nya apa ya?" atau "gimana cara command nya ya?". Nah, ShellGPT ini basically bikin kita nggak perlu keluar dari terminal buat itu semua.

Apa itu ShellGPT ?
ShellGPT adalah CLI tool berbasis Python yang menghubungkan terminal kita langsung ke Large Language Model (LLM),Simpelnya, sgpt ini semacam "asisten AI" yang nempel di shell kita. Default-nya pakai backend API dari OpenAI, Tetapi kita bisa juga menggunakan API dari Cloudflare Worker AI, Google AI Studio, atau lainnya.  

Beberapa hal yang bisa dilakukan:

  • Nanya command Linux tanpa perlu buka browser
  • Generate & langsung execute shell command (--shell)
  • Generate snippet code (--code)
  • Chat mode dengan history tersimpan (--chat)
  • Shell integration, jadi bisa muncul di command line kita cukup pakai hotkey

Cocok banget buat yang kerja di server / SysAdmin, karena workflow-nya tetap di CLI, tidak perlu pindah-pindah window. 

Prasyarat : 

  • Python 3.8 ke atas
  • Pip
  • API Key dari provider LLM (OpenAI, atau kompatible lainnya)


1. Cara Install ShellGPT di Linux

Saya coba di environment RHEL/Fedora based (pakai dnf), tapi command pip install-nya sendiri universal, tinggal sesuaikan package manager kalau kalian pakai Debian/Ubuntu (apt).
Jalankan perintah berikut secara berurutan di terminal:

  1.  Install pip untuk Python 3
    $ sudo dnf install python3-pip -y
  2. Buat alias agar command 'pip' mengarah ke 'pip3' 
    $ alias pip='pip3'
  3. Verifikasi versi pip
    $ pip3 --version
  4. Install ShellGPT menggunakan pip
    $ pip install shell-gpt litellm  
  5.  Setelah proses install selesai, cek dengan: 
    $ sgpt --version



2. Config API Key

Secara default, ShellGPT diset untuk menggunakan OpenAI. 
Namun, kita bisa dengan mudah mengubahnya menggunakan model LLM lain melalui file konfigurasi .sgptrc. Kalian bisa membuat atau mengedit file konfigurasinya yang berada pada direktori berikut :

~/.config/shell_gpt/.sgptrc

Default nya Menggunakan API dari OpenAI, yang dengan config seperti berikut :

OPENAI_API_KEY=your_api_key
API_BASE_URL=default
DEFAULT_MODEL=gpt-4o

OpenAI API ini berbayar (bukan gratis seperti ChatGPT versi web). 
Kalau mau opsi lain (termasuk yang lebih murah/gratis), ShellGPT sebenarnya tidak kaku harus ke OpenAI, kita bisa arahkan ke provider lain selama API-nya kompatibel. Dua yang sering saya pakai: Cloudflare Workers AI dan Google AI Studio (Gemini), atau lainnya.

  • Cloudflare Workers AI

Cloudflare Workers AI punya endpoint yang OpenAI-compatible, jadi tinggal arahkan OPENAI_BASE_URL ke endpoint akun Cloudflare kalian, dan isi DEFAULT_MODEL sesuai model yang tersedia di Workers AI (contoh di bawah pakai Gemma). 

Berikut adalah contoh config file .sgptrc, jika menggunakan API dari cloudflare worker

OPENAI_API_KEY="<cloudflare_api_token>"
OPENAI_BASE_URL="https://api.cloudflare.com/client/v4/accounts/<account_id>/ai/v1"
CHAT_CACHE_PATH=/tmp/chat_cache
CACHE_PATH=/tmp/cache
CHAT_CACHE_LENGTH=100
CACHE_LENGTH=100
REQUEST_TIMEOUT=60
DEFAULT_MODEL="@cf/google/gemma-4-26b-a4b-it"
DEFAULT_COLOR=magenta
ROLE_STORAGE_PATH=/home/ridwan/.config/shell_gpt/roles
DEFAULT_EXECUTE_SHELL_CMD=false
DISABLE_STREAMING=false
CODE_THEME=dracula
OPENAI_FUNCTIONS_PATH=/home/ridwan/.config/shell_gpt/functions
OPENAI_USE_FUNCTIONS=true
SHOW_FUNCTIONS_OUTPUT=false
API_BASE_URL=default
PRETTIFY_MARKDOWN=true
USE_LITELLM=false
SHELL_INTERACTION=true
OS_NAME=auto
SHELL_NAME=auto
  •   Google AI Studio (Gemini)

 Gemini model-nya bukan native di client OpenAI, ShellGPT butuh bantuan LiteLLM sebagai jembatan agar bisa terkoneksi ke Gemini. Berikut adalah contoh config file .sgptrc, jika menggunakan API dari Google AI Studio (Gemini) : 

OPENAI_API_KEY="<google_ai_studio_api_key>"
DEFAULT_MODEL=gemini/gemini-2.5-flash
USE_LITELLM=true
CHAT_CACHE_PATH=/tmp/chat_cache
CACHE_PATH=/tmp/cache
CHAT_CACHE_LENGTH=100
CACHE_LENGTH=100
REQUEST_TIMEOUT=60
DEFAULT_COLOR=magenta
ROLE_STORAGE_PATH=/root/.config/shell_gpt/roles
DEFAULT_EXECUTE_SHELL_CMD=false
DISABLE_STREAMING=false
CODE_THEME=dracula
OPENAI_FUNCTIONS_PATH=/root/.config/shell_gpt/functions
OPENAI_USE_FUNCTIONS=true
SHOW_FUNCTIONS_OUTPUT=false
PRETTIFY_MARKDOWN=true
SHELL_INTERACTION=true
OS_NAME=auto
SHELL_NAME=auto
API_BASE_URL=default

parameter = USE_LITELLM=true & DEFAULT_MODEL=Gemini/
ini yang bikin LiteLLM tau harus route request ke Gemini API, bukan ke OpenAI.

 

 

3. Cara Pakai ShellGPT 

Setelah API Key ke-config, kita udah bisa langsung pakai. 

Berikut beberapa cara pakai yang paling sering saya gunakan:

  •  Use Case #1: Membaca & Menganalisa Log File

Kadang-kadang, melihat puluhan hingga ratusan baris log file itu seperti mencari jarum dalam tumpukan jerami. Kita tahu ada masalah, tapi root cause-nya terselip di antara baris-baris informasi tersebut. Di sinilah sgpt menjadi pahlawan. 

$ tail -n 100 /var/log/secure | sgpt "analisa log ini, jelaskan apa saja yang terhadi"   
 
  • Use Case #2: Membaca & Menganalisa Output stderr dari Suatu Command 

Error message yang muncul saat kita menjalankan perintah terkadang membingungkan atau hanya memberikan solusi dasar. sgpt bisa membantu kita menerjemahkan error message tersebut ke dalam konteks solusi yang lebih actionable.

$ pip search apakek 2>&1 | sgpt "apa error yang terjadi pada command ini?"
 
  • Use Case #3: Command Assistence (Asisten Perintah)

Mengingat sintaks kompleks untuk perintah satu baris (one-liner) seringkali merepotkan. Alih-alih googling, kita bisa meminta sgpt untuk menghasilkan perintah Linux murni yang kita butuhkan secara spesifik, siap untuk dieksekusi. 

$ sgpt -s "perintah yang akan diterjemahkan menjadi command linux"

 

  •  Use Case #4: Create Code | Infrastructure as Code (IaC) Lebih Mudah

Menulis file konfigurasi atau deployment dari nol—seperti file YAML Kubernetes atau playbook Ansible—seringkali memakan waktu hanya untuk mengingat struktur indentasi dan parameter yang tepat. ShellGPT dengan parameter --code bisa langsung membantu kita.

Contoh pertama: Membuat Playbook Ansible

Kita bisa meminta playbook lengkap dengan instruksi yang sangat mendetail dalam bahasa manusia: 



 Contoh kedua: Membuat Deployment Kubernetes

Sama mudahnya, kita bisa meminta file deployment.yaml lengkap dengan parameter spesifik:

 

Penutup

Kehadiran ShellGPT membuktikan bahwa AI bukanlah ancaman yang akan menggantikan peran kita sebagai Systems Engineer atau SysAdmin, melainkan menjadi "asisten pintar" yang siap sedia 24/7. Mengingat kembali masa-masa awal saya belajar oprek komputer dan jaringan di lingkungan warnet belasan tahun lalu, rasanya luar biasa melihat seberapa jauh teknologi telah berkembang. Dulu, mencari root cause dari sebuah error atau menghafal syntax perintah yang rumit bisa memakan waktu berjam-jam sambil bolak-balik menyisir forum. Sekarang, bantuan itu secara harfiah ada di ujung jari, terintegrasi langsung di dalam terminal kesayangan kita.

Dengan menghemat waktu pada hal-hal repetitif seperti menulis boilerplate YAML, merangkai one-liner command, atau membaca log yang panjang, kita jadi bisa lebih fokus pada arsitektur, keamanan, dan optimasi sistem secara keseluruhan.

Bagi teman-teman yang sedang mendalami Linux atau yang sehari-hari bergelut dengan infrastruktur cloud, saya sangat merekomendasikan untuk mencoba ShellGPT. Jangan ragu untuk bereksperimen dengan berbagai prompt dan mengeksplorasi model LLM yang berbeda (seperti Gemini atau Gemma) sesuai dengan preferensi kalian.

Bagaimana menurut kalian? Apakah ada yang sudah mencoba mengadopsi AI CLI tool semacam ini di environment kerja kalian? Atau mungkin ada kendala saat melakukan konfigurasi? Jangan sungkan untuk berbagi pengalaman atau bertanya di kolom komentar di bawah, ya!

Sampai jumpa di catatan teknis RDW-Notes selanjutnya. Tetap semangat dan salam oprek! ☕

Share:

Selasa, 14 April 2026

Browser-Only Bastion: Akses CLI & GUI Tanpa VPN, SSH, RDP

Halo guys, Ridwan here..
Come again with a new notes update!

Sudah lama saya ingin punya cara akses server yang simpel tidak perlu install SSH client, RDP Client, tidak perlu setup VPN, tidak perlu bawa laptop khusus. Cukup buka browser, akses URL, dan langsung bisa kerja.

Untuk kalian yang belum paham, apa itu "Bastion"
Bastion host itu basically server yang jadi "pintu masuk" ke jaringan internal kita, Biasanya akses ke bastion butuh SSH client atau VPN. Nah, di setup ini, kita expose dua hal langsung ke browser:

  • Terminal shell  via ttyd, bisa ngetik command langsung dari browser
  • GUI browser (Firefox) via xpra, Firefox yang berjalan di server di-stream agar bisa akses WebApp Internal

Keduanya dibungkus Caddy sebagai reverse proxy (with auth), dengan Cloudflare di depannya untuk keamanan dan DNS management.

Arsitektur Singkat :

Semua service bind ke 127.0.0.1, jadi tidak langsung expose ke internet.
Cukup open satu port 80/443 melalui Caddy yang menjadi satu-satunya pintu masuk dari luar.

Ok, Penasaran cara install nya ?

1. Install ttyd

  • Download & install binary
$ wget https://github.com/tsl0922/ttyd/releases/latest/download/ttyd.x86_64
$ sudo chmod +x ttyd.x86_64 && mv ttyd.x86_64 /usr/local/bin/ttyd
  • Daftarkan menjadi Systemd (/etc/systemd/system/ttyd.service)
[Unit]
Description=ttyd Web Terminal
After=network.target

[Service]
ExecStart=ttyd -W -p 7681 -t fontSize=20 -t rendererType=canvas login
User=root
Restart=always

[Install]
WantedBy=multi-user.target

2. Install xpra + Firefox

  • Download & install binary
$ sudo apt install xpra firefox-esr
  • Daftarkan menjadi Systemd (/lib/systemd/system/xpra.service)
[Unit]
Description=Xpra Firefox Service
After=network.target

[Service]
User=root
Environment=DISPLAY=:100
ExecStart=/usr/bin/xpra start :100 \
    --bind-tcp=0.0.0.0:10000 \
    --html=on \
    --start-child="firefox --no-remote" \
    --exit-with-children \
    --daemon=no

Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target


3. Install Caddy Reverse_Proxy

  • Download & install binary
$ sudo apt install caddy

  • Edit Caddyfile ( /etc/caddy/Caddyfile )
gui.bastionmu.com {
    reverse_proxy localhost:10000
    
    basicauth /* {
        [Username] [Passwd-Hash]  ## Perhatikan ini - gunakan command "caddy hash-password"
    }
}

cli.bastionmu.com {
    reverse_proxy localhost:7681
    
    basicauth /* {
        [Username] [Passwd-Hash]   ## Perhatikan ini - gunakan command "caddy hash-password"
    }
}

Sesimple itu. Ganti bastion.example.com dengan domain kalian sendiri, dan Caddy akan otomatis urus certificate-nya !


4. Config Cloudflare (Opsional)

Opsi ini opsional, Tetapi jika bastion kalian memiliki IP Public ini menjadi hal wajib untuk dilakukan domain di-point ke server via Cloudflare dengan proxy mode aktif (ikon awan oranye). Btw, Real IP Addr nya jangan dikepoin ya guys ! 


 Beberapa benefit langsung yang kita dapat:

  • Real IP Addr server tersembunyi dari publik



















  • Basic DDoS / BruteForce Protection 

Web ini sudah di kasih "HTTP Authorization Header" untuk akses nya oleh Caddy, dengan Cloudflare kita bisa limit failed auth nya !
  • Bisa tambahkan Cloudflare Access untuk autentikasi Zero Trust tanpa modifikasi server.
  • Atau tambahkan Black/Whitelist IP, WAF Restrictions, IP/Bot Blocking, atau Security Features lainnya.

Hasilnya.. Setelah semua terpasang, ini yang bisa saya lakukan hanya dari browser:

  • ✅ Buka terminal server, cocok dari HP sekalipun
  • ✅ Akses Firefox yang berjalan di server, bisa browsing ke Aplikasi internal network
  • ✅ Semua tanpa install VPN client, tanpa SSH, RPD client, tanpa port forwarding tambahan yang ribet itu.
  • ✅ Bisa dibuka dari device apapun, laptop, tablet, HP, Head Unit Mobil Android.


Satu-satunya requirement di sisi client hanyalah Web Browser modern. Dan Spec/Flavor dari VM Bastion ini cukup low cost hanya "1 vCPU, 1 GiB Memory".

Sekian catatan kali ini,
Thank you sudah membaca tulisan ini.. Semoga bermanfaat!

Best Regards, 
Rdw

 

Share: