以前に、acli で AHV 上にある VM の一括削除をしてみました。
しかし、コマンドライン1行での実行だと柔軟性があまりないので、今回は Bash スクリプトを作成して、リスト ファイルにない VM を一括削除してみます。
今回のスクリプト
実行例
Nutanix CE の CVM に SSH ログインしています。
今回は、VM が 4つある状態です。
CVM$ acli vm.list VM name VM UUID demo-vm-01 4e7e32d0-7464-4820-8109-c64d81865564 lab-ntnx-pc-01 19192d75-ae55-4908-aae6-a9fd3a300d3c vm01 91fba0da-1c93-4439-9ca4-b522bcee3db8 vm02 31052a39-519f-4042-9501-4457cda82c02
スクリプトをダウンロードします。
CVM$ curl -O https://gist.githubusercontent.com/gowatana/2433eb1238ff56f22cca842ef5cc98e5/raw/cleanup_ahv_vm.sh CVM$ ls -l cleanup_ahv_vm.sh -rw-------. 1 nutanix nutanix 452 Jan 29 23:22 cleanup_ahv_vm.sh
削除しない VM のリスト ファイルを作成します。
CVM$ echo demo-vm-01 > ./keep_vm_list.txt CVM$ echo lab-ntnx-pc-01 >> ./keep_vm_list.txt CVM$ cat ./keep_vm_list.txt demo-vm-01 lab-ntnx-pc-01
VM リスト ファイルを指定して、スクリプトを実行します。この時点では VM を残す(keep)か、削除する(delete)か表示されます。
CVM$ bash cleanup_ahv_vm.sh ./keep_vm_list.txt demo-vm-01 => keep lab-ntnx-pc-01 => keep vm01 => delete vm02 => delete
スクリプトに delete オプションをつけて実行ると、VM を削除します。
CVM$ bash cleanup_ahv_vm.sh ./keep_vm_list.txt delete demo-vm-01 => keep lab-ntnx-pc-01 => keep vm01 => delete vm01: pending vm01: complete vm02 => delete vm02: pending vm02: complete
リスト ファイルに記載されている VM 以外だけが残りました。
VM name VM UUID demo-vm-01 4e7e32d0-7464-4820-8109-c64d81865564 lab-ntnx-pc-01 19192d75-ae55-4908-aae6-a9fd3a300d3c
以上。