[ 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.
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.