[ English | Indonesia | 한국어 (대한민국) | español (México) | English (United Kingdom) | Deutsch | 中文 (简体, 中国) ]

Testing Changes dengan DevStack

Bagian penting dari pengembangan, tentu saja, dapat menguji perubahan yang Anda kembangkan dan memastikan bahwa mereka berfungsi dengan baik. Dalam ekosistem yang rumit seperti OpenStack, ada juga kebutuhan untuk dapat memverifikasi interoperabilitas kode Anda. Anda dapat membuat perubahan ke Cinder tetapi perubahan itu juga dapat memengaruhi cara Nova berinteraksi dengan API Cinder.

Pengembang membutuhkan cara mudah untuk menggunakan cloud OpenStack untuk melakukan pengujian perubahan fungsional dan interoperabilitas. Ini adalah tujuan dari DevStack.

Apa itu DevStack

DevStack adalah sekumpulan skrip modular yang dapat dijalankan untuk menggunakan cloud OpenStack dasar untuk digunakan sebagai demo atau lingkungan pengujian. Skrip dapat dijalankan pada satu node yang baremetal atau mesin virtual. Itu juga dapat dikonfigurasi untuk digunakan ke beberapa node. Penyebaran DevStack menangani tugas-tugas yang membosankan seperti mengkonfigurasi database dan sistem antrian pesan, sehingga memungkinkan bagi pengembang untuk secara cepat dan mudah menggunakan cloud OpenStack.

Secara default, layanan inti untuk OpenStack diinstal tetapi pengguna dapat mengonfigurasi layanan tambahan untuk digunakan. Semua layanan diinstal dari sumber. DevStack akan menarik layanan dari git master kecuali jika dikonfigurasikan untuk mengklon dari cabang stabil (misal. stable/pike).

Catatan

Dokumentasi lengkap DevStack dapat ditemukan here.

Mendapatkan dan Mengkonfigurasi DevStack

Untuk mendapatkan DevStack Anda harus mengkloningnya dari repositori devstack di bawah openstack.

git clone https://opendev.org/openstack/devstack

Disarankan sebelum melanjutkan lebih jauh untuk mengatur kata sandi dan alamat IP untuk lingkungan di mana Anda menjalankan DevStack. Ini dilakukan dengan mengkonfigurasi file local.conf di DevStack.

cd ./devstack
cp ./samples/local.conf local.conf
vi ./local.conf

Untuk menyederhanakan interaksi di masa depan dengan penyebaran Anda, Anda ingin mengatur variabel berikut:

  • ADMIN_PASSWORD

  • DATABASE_PASSWORD

  • RABBIT_PASSWORD

Pada beberapa distribusi Anda mungkin perlu mengatur HOST_IP. Apakah ini perlu tergantung pada konvensi penamaan apa yang digunakan untuk antarmuka jaringan di sistem operasi Anda.

Lebih jauh ke bawah file adalah bagian Using milestone-proposed branches. Ini adalah variabel yang dapat diubah jika Anda ingin mengkloning cabang selain master untuk satu atau lebih proyek.

Setelah perubahan Anda disimpan ke local.conf, Anda siap untuk deploy (mengerahkan) cloud OpenStack dengan DevStack.

Pengerahan DevStack

Setelah Anda memiliki file local.conf Anda yang dikonfigurasikan saat menjalankan DevStack cukup mudah.

Catatan

Perintah berikut perlu dijalankan sebagai pengguna dengan akses sudo dan NOPASSWD dikonfigurasi.

./stack.sh

Catatan

Perintah di atas dan contoh-contoh perintah selanjutnya menganggap Anda masih berada di direktori root klon DevStack Anda.

Pada titik ini DevStack mengambil alih mempersiapkan node Anda berfungsi sebagai cloud OpenStack. Berikut ini dilakukan:

  • Paket yang diperlukan (seperti mysql dan rabbitmq) diinstal

  • mysql dan rabbitmq dikonfigurasi

  • Proyek OpenStack dikloning ke /opt/stack/

  • File cadangan sementara yang diperlukan untuk mensimulasikan sistem dibuat di /opt/stack/data

  • Setiap database proyek dibuat dan diisi

  • Layanan OpenStack terdaftar dan dimulai

Log run stack.sh disimpan /opt/stack/logs/stack.sh.log.

Memverifikasi DevStack Deployment Anda

Jika OpenStack berhasil digunakan oleh DevStack Anda harus dapat mengarahkan browser web ke IP yang ditentukan oleh HOST_IP di local.conf dan mengakses Horizon.

../_images/horizon-login.png

Catatan

Kata sandi admin akan ditetapkan ke nilai yang Anda masukkan dalam file local.conf Anda untuk ADMIN_PASSWORD

Layanan proyek semuanya terdaftar dengan systemd. Setiap layanan diawali dengan devstack@. Karena itu Anda dapat memverifikasi melalui systemd bahwa proses Cinder Volume bekerja dengan perintah seperti:

systemctl status devstack@c-vol.service

Karena systemd menerima wildcard, status semua layanan yang terkait dengan DevStack dapat ditampilkan dengan:

systemctl status devstack@*

Log untuk layanan yang berjalan juga dapat dilihat melalui systemd. Untuk menampilkan log untuk layanan Cinder Volume, perintah berikut dapat digunakan:

journalctl -u devstack@c-vol.service

Referensi yang lebih lengkap tentang penggunaan systemd untuk berinteraksi dengan DevStack dapat ditemukan di halaman Using Systemd in DevStack.

Testing Changes dengan DevStack

Menggunakan DevStack untuk mengembangkan dan menguji perubahan itu mudah. Pengembangan dapat dilakukan di klon proyek di bawah /opt/stack/<project name>. Karena proyek adalah klon dari repositori git proyek, cabang dapat dibuat dan pengembangan dapat dilakukan.

DevStack menggunakan kode di direktori tersebut untuk menjalankan layanan OpenStack sehingga setiap perubahan dapat diuji dengan membuat perubahan kode di direktori proyek dan kemudian dengan me-restart layanan proyek melalui systemd.

Ini adalah contoh bagaimana proses itu akan terlihat. Dalam contoh ini perubahan dibuat untuk driver LVM Cinder:

cd /opt/stack/cinder/cinder/volume/drivers
vi lvm.py
*Brilliant Code Improvement Implemented*
sudo systemctl restart devstack@c-vol.service

Setelah pengujian dan pengembangan perubahan kode Anda selesai, Anda akan ingin mendorong perubahan kode Anda ke Gerrit untuk ditinjau. Karena proyek-proyek di /opt/stack sudah disinkronkan ke repositori git masing-masing, Anda dapat mengonfigurasi git review, komit perubahan Anda dan unggah perubahan ke Gerrit.

Menghentikan DevStack

Untuk mematikan instance DevStack yang berjalan pada node, perintah berikut harus digunakan:

./unstack.sh

Perintah ini membersihkan instalasi OpenStack yang dilakukan pada node. Ini termasuk:

  • Menghentikan layanan proyek, mysql dan rabbitmq

  • Membersihkan volume iSCSI

  • Menghapus mount LVM sementara

Menjalankan unstack.sh adalah hal pertama yang harus dicoba jika DevStack run gagal. Jika proses selanjutnya gagal, penghapusan komponen DevStack yang lebih menyeluruh dapat dilakukan dengan perintah berikut:

./clean.sh

Jalankan clean.sh melakukan langkah-langkah untuk unstack.sh plus pembersihan tambahan:

  • Menghapus file konfigurasi untuk proyek dari /etc

  • Menghapus file log

  • Pembersihan hypervisor

  • Penghapusan file .pyc

  • Pembersihan basis data

  • etc.