Bagaimana cara memutakhirkan mesin virtual secara massal di XenServer - Bagaimana-Untuk

Bagaimana cara memutakhirkan mesin virtual secara massal di XenServer

Pernah perlu menambahkan sumber daya tambahan ke banyak VM sekaligus di Xen? Begini cara saya melakukannya:

3 Langkah total

Langkah 1: Dapatkan daftar UUID yang dapat digunakan

Setiap tindakan di XenServer diterapkan pada UUID - host UUID, UUID SR, UUID VM, dll.
Oleh karena itu, untuk melakukan ini, Anda memerlukan daftar UUID VM dalam format yang dapat Anda gunakan. Ini dilakukan dengan kombinasi perintah xe vm-list, dan beberapa tipuan unix.
Untuk contoh ini, saya ingin menambahkan vCPU kedua ke semua VM di kumpulan ini. Mengetahui bahwa Anda harus mematikan VM untuk menambahkan vCPU, saya mematikan semuanya, yang berarti saya dapat menggunakan perintah
xe vm-list power-state = dihentikan untuk mendapatkan daftar - tetapi saya tidak dapat menggunakan ini dalam format yang dapat digunakan. Aktif ke langkah 2.

Langkah 2: Parsing hasil dari xe vm-list

Untuk memberi makan UUID kembali ke perintah lain untuk modifikasi, saya harus memotong hasil yang ditetapkan hanya UUIDS. Saya melakukan ini dengan kombinasi grep, gawk, dan cut:
xe vm-list power-state = dihentikan | grep uuid | gawk '{print $ 5}' | cud -d ":" -f 2

Ini HANYA mengembalikan UUID dari setiap hasil.

Langkah 3: Buat pernyataan untuk dan satukan

Langkah terakhir sebenarnya adalah membangun loop dan perintah yang ingin Anda tindak lanjuti. Karena saya menambahkan vCPU, saya menggunakan perintah xe vm-param-set. Sintaks penuh dari loop saya adalah:
untuk x dalam `xe vm-list power-state = dihentikan | grep uuid | gawk '{print $ 5}' | cut -d ":" -f 2`; do xe vm-param-set uuid = platform $ x: core-per-socket = 2 VCPUs-max = 2 VCPU-saat-startup = 2; selesai

Pernyataan pertama mengambil hasil dari perintah xe vm-list dan mem-parsingnya ke dalam variabel x. Setiap kali melalui loop, perintah xe vm-param-set dijalankan dengan uuid = $ x, yang merupakan nilai uuid saat ini di x dari pernyataan 1. Akhirnya, setelah iterated melalui semua UUID, loop berakhir.

Script bash cepat seperti ini bisa sangat berharga jika Anda memiliki banyak VM yang perlu Anda modifikasi dengan cepat.Saya menjalankan ini pada 150 VM Windows 7 dalam hitungan beberapa detik, dan akan membutuhkan waktu lebih lama daripada yang saya pikirkan untuk melakukannya dengan tangan. Saya harap ini membantu seseorang di masa depan.