この投稿は、[4枚目]Nutanix Advent Calendar 2019 の 8日目です。
Nutanix CE に VM をたくさん作成したので、まとめて削除してみます。
まず、現状の VM の様子です。gowatana-CitrixPVS~という名前の(実際には Citrix ととは関係ない)テスト VM がたくさん存在するので、これから削除します。
CVM$ acli vm.list VM name VM UUID demo-vm-01 4e7e32d0-7464-4820-8109-c64d81865564 gowatana-CitrixPVS01 e985ae18-f19e-41ef-a75d-d5da15b8d955 gowatana-CitrixPVS02 b10f434d-38ae-4bc2-8990-c57e98459bec gowatana-CitrixPVS03 b943ec8c-6c3b-451e-8224-b84344e87010 gowatana-CitrixPVS04 8f13754c-4bf5-4132-887d-c37df4007b30 gowatana-CitrixPVS05 2d85191d-5e22-4d78-8e01-ac4f7f739c02 gowatana-CitrixPVS06 65309f28-1cdb-4e0a-8a41-85dad7b88f4b gowatana-CitrixPVS07 0c5beaf6-7171-4147-b92c-7543832f0d79 gowatana-CitrixPVS08 56003ec2-d3c6-44d3-a9fa-5f2e93f442ed gowatana-CitrixPVS09 b17398cd-cb19-4cc1-b930-0947e577975b gowatana-CitrixPVS10 d5fc8447-c5f7-4c85-9e71-3e5050d8f259 gowatana-CitrixPVS11 39a425b1-71de-4a12-8fb7-cc69f33b4652 gowatana-CitrixPVS12 eba2282d-bc87-4c2a-b306-509121729cb8 gowatana-CitrixPVS13 c242814d-c693-4e29-9c48-72340f5999bb gowatana-CitrixPVS14 e950fe72-ee44-43a9-a003-12adcc80c227 gowatana-CitrixPVS15 90deca1d-cee7-4cec-9cbb-dbff91253020 gowatana-CitrixPVS16 6c9e606a-137f-4989-a7ed-f56e74012b43 gowatana-CitrixPVS17 c1f1af17-624d-4cc7-8074-b808e7f824a3 gowatana-CitrixPVS18 dfeb0235-306b-410b-9f73-997101f18299 gowatana-CitrixPVS19 dfe61da0-ff29-47d2-8e04-b7f9ccbfbaee gowatana-CitrixPVS20 da78336f-5be0-4638-a9aa-daa004fb7b12 gowatana-CitrixPVS21 515c060b-c215-49f0-b8d5-5fe6542564f3 gowatana-CitrixPVS22 70817549-6ff9-4698-ba83-249acb990f2b gowatana-CitrixPVS23 2f3e8ad0-cd51-4420-83ab-6a2a18f1b474 gowatana-CitrixPVS24 6f572876-5eb1-4933-8d39-d31a21b3166f gowatana-CitrixPVS25 d3114bf5-d475-422e-999f-b624b76ef606 gowatana-CitrixPVS26 4d023124-4de8-4197-9359-9a28d80ecb7b gowatana-CitrixPVS27 9dc553e0-514d-4579-9863-2585c6500229 gowatana-CitrixPVS28 923859dc-2d36-4466-a226-e47bdb804312 gowatana-CitrixPVS29 519361de-e4e9-4bfb-99f7-2a7aee5e2716 gowatana-CitrixPVS30 dd7bfcc9-bb83-4c01-9f36-677a078c2f0e gowatana-CitrixPVS31 8462cf39-4bfe-4041-9712-4ac8659b8445 gowatana-CitrixPVS32 15f2397b-02c5-4c2d-a7c5-821b5ee89fe9 gowatana-CitrixPVS33 0fcb24d0-14db-4906-8cc4-14095fa6d554 gowatana-CitrixPVS34 ed41b01c-5c18-433a-8747-45f9607685bc gowatana-CitrixPVS35 97c7f08c-e1e5-45bf-b6e9-23ac96666cf4 gowatana-CitrixPVS36 15d1724d-fa1f-41e8-a820-f3bedcd1b1b3 gowatana-CitrixPVS37 0467a69c-e589-4c1f-822c-3b5241fb2913 gowatana-CitrixPVS38 4429f648-88b8-44a7-a84d-b7eb5e7aaba6 gowatana-CitrixPVS39 d6a16c32-1572-40f0-9c95-c146e7d5471f gowatana-CitrixPVS40 f7e08a47-0069-4ff0-b986-1123065ee796 gowatana-CitrixPVS41 b1ccd88f-cc2e-49bf-8c50-de83f0166097 gowatana-CitrixPVS42 3b919066-58e3-41da-9e3c-4287312b0d3e gowatana-CitrixPVS43 6316c13a-901e-4c57-a903-275ff89da551 gowatana-CitrixPVS44 050fbffd-3da5-4703-9476-2407dfce6c91 gowatana-CitrixPVS45 1d2f9bbe-d00e-484d-9295-adc233e637e9 gowatana-CitrixPVS46 51543a54-3a3a-4c1c-a007-df41260815f9 gowatana-CitrixPVS47 82fd446d-2365-4f94-8e46-36ca71c14004 gowatana-CitrixPVS48 d98f3f11-e70e-4822-8656-539ea1aef07e gowatana-CitrixPVS49 f366c9c1-9169-4936-822f-665d7a9cd84d gowatana-CitrixPVS50 bb724f9b-70ef-48b5-bf50-8162a83cad93 lab-ntnx-pc-01 19192d75-ae55-4908-aae6-a9fd3a300d3c
まず、削除したい VM 名のリストを簡単に指定できる場合(VM の命名規則がそろっている場合など)です。
CVM$ for VM in {01..04}; do echo gowatana-CitrixPVS$VM; done gowatana-CitrixPVS01 gowatana-CitrixPVS02 gowatana-CitrixPVS03 gowatana-CitrixPVS04
下記のように削除することができます。
CVM$ for VM in {01..04}; do acli -y vm.delete gowatana-CitrixPVS$VM; done gowatana-CitrixPVS01: pending gowatana-CitrixPVS01: complete gowatana-CitrixPVS02: pending gowatana-CitrixPVS02: complete gowatana-CitrixPVS03: pending gowatana-CitrixPVS03: complete gowatana-CitrixPVS04: pending gowatana-CitrixPVS04: complete
ちなみに、acli の「-y」は、下記のような確認メッセージに自動応答するために付与しています。
CVM$ acli vm.delete gowatana-CitrixPVS01 Delete 1 VMs? (yes/no)
VM 名に規則がなかったとしても、VM 名のリストを指定してまとめて削除できます。
CVM$ for VM in gowatana-CitrixPVS05 gowatana-CitrixPVS06; do acli -y vm.delete $VM; done gowatana-CitrixPVS05: pending gowatana-CitrixPVS05: complete gowatana-CitrixPVS06: pending gowatana-CitrixPVS06: complete
逆に、特定の VM 以外を削除する場合について考えてみます。まず、下記のような、残したい VM のリストファイルを用意しておきます。
CVM$ cat /tmp/keep-vm-list.txt demo-vm-01 lab-ntnx-pc-01
そして、リストにない VM のみ削除するつもりです。
CVM$ acli vm.list | grep -E -v "^VM name|^$" | awk '{print $1}' | while read VM; do grep $VM /tmp/keep-vm-list.txt || echo $VM '=>' delete; done demo-vm-01 gowatana-CitrixPVS07 => delete gowatana-CitrixPVS08 => delete gowatana-CitrixPVS09 => delete gowatana-CitrixPVS10 => delete gowatana-CitrixPVS11 => delete gowatana-CitrixPVS12 => delete gowatana-CitrixPVS13 => delete gowatana-CitrixPVS14 => delete gowatana-CitrixPVS15 => delete gowatana-CitrixPVS16 => delete gowatana-CitrixPVS17 => delete gowatana-CitrixPVS18 => delete gowatana-CitrixPVS19 => delete gowatana-CitrixPVS20 => delete gowatana-CitrixPVS21 => delete gowatana-CitrixPVS22 => delete gowatana-CitrixPVS23 => delete gowatana-CitrixPVS24 => delete gowatana-CitrixPVS25 => delete gowatana-CitrixPVS26 => delete gowatana-CitrixPVS27 => delete gowatana-CitrixPVS28 => delete gowatana-CitrixPVS29 => delete gowatana-CitrixPVS30 => delete gowatana-CitrixPVS31 => delete gowatana-CitrixPVS32 => delete gowatana-CitrixPVS33 => delete gowatana-CitrixPVS34 => delete gowatana-CitrixPVS35 => delete gowatana-CitrixPVS36 => delete gowatana-CitrixPVS37 => delete gowatana-CitrixPVS38 => delete gowatana-CitrixPVS39 => delete gowatana-CitrixPVS40 => delete gowatana-CitrixPVS41 => delete gowatana-CitrixPVS42 => delete gowatana-CitrixPVS43 => delete gowatana-CitrixPVS44 => delete gowatana-CitrixPVS45 => delete gowatana-CitrixPVS46 => delete gowatana-CitrixPVS47 => delete gowatana-CitrixPVS48 => delete gowatana-CitrixPVS49 => delete gowatana-CitrixPVS50 => delete lab-ntnx-pc-01
実際の削除には、下記のようなコマンドラインを実行します。
CVM$ acli vm.list | grep -E -v "^VM name|^$" | awk '{print $1}' | while read VM; do grep $VM /tmp/keep-vm-list.txt || acli -y vm.delete $VM; done demo-vm-01 gowatana-CitrixPVS07: pending gowatana-CitrixPVS07: complete gowatana-CitrixPVS08: pending gowatana-CitrixPVS08: complete gowatana-CitrixPVS09: pending gowatana-CitrixPVS09: complete gowatana-CitrixPVS10: pending gowatana-CitrixPVS10: complete gowatana-CitrixPVS11: pending gowatana-CitrixPVS11: complete gowatana-CitrixPVS12: pending gowatana-CitrixPVS12: complete gowatana-CitrixPVS13: pending gowatana-CitrixPVS13: complete gowatana-CitrixPVS14: pending gowatana-CitrixPVS14: complete gowatana-CitrixPVS15: pending gowatana-CitrixPVS15: complete gowatana-CitrixPVS16: pending gowatana-CitrixPVS16: complete gowatana-CitrixPVS17: pending gowatana-CitrixPVS17: complete gowatana-CitrixPVS18: pending gowatana-CitrixPVS18: complete gowatana-CitrixPVS19: pending gowatana-CitrixPVS19: complete gowatana-CitrixPVS20: pending gowatana-CitrixPVS20: complete gowatana-CitrixPVS21: pending gowatana-CitrixPVS21: complete gowatana-CitrixPVS22: pending gowatana-CitrixPVS22: complete gowatana-CitrixPVS23: pending gowatana-CitrixPVS23: complete gowatana-CitrixPVS24: pending gowatana-CitrixPVS24: complete gowatana-CitrixPVS25: pending gowatana-CitrixPVS25: complete gowatana-CitrixPVS26: pending gowatana-CitrixPVS26: complete gowatana-CitrixPVS27: pending gowatana-CitrixPVS27: complete gowatana-CitrixPVS28: pending gowatana-CitrixPVS28: complete gowatana-CitrixPVS29: pending gowatana-CitrixPVS29: complete gowatana-CitrixPVS30: pending gowatana-CitrixPVS30: complete gowatana-CitrixPVS31: pending gowatana-CitrixPVS31: complete gowatana-CitrixPVS32: pending gowatana-CitrixPVS32: complete gowatana-CitrixPVS33: pending gowatana-CitrixPVS33: complete gowatana-CitrixPVS34: pending gowatana-CitrixPVS34: complete gowatana-CitrixPVS35: pending gowatana-CitrixPVS35: complete gowatana-CitrixPVS36: pending gowatana-CitrixPVS36: complete gowatana-CitrixPVS37: pending gowatana-CitrixPVS37: complete gowatana-CitrixPVS38: pending gowatana-CitrixPVS38: complete gowatana-CitrixPVS39: pending gowatana-CitrixPVS39: complete gowatana-CitrixPVS40: pending gowatana-CitrixPVS40: complete gowatana-CitrixPVS41: pending gowatana-CitrixPVS41: complete gowatana-CitrixPVS42: pending gowatana-CitrixPVS42: complete gowatana-CitrixPVS43: pending gowatana-CitrixPVS43: complete gowatana-CitrixPVS44: pending gowatana-CitrixPVS44: complete gowatana-CitrixPVS45: pending gowatana-CitrixPVS45: complete gowatana-CitrixPVS46: pending gowatana-CitrixPVS46: complete gowatana-CitrixPVS47: pending gowatana-CitrixPVS47: complete gowatana-CitrixPVS48: pending gowatana-CitrixPVS48: complete gowatana-CitrixPVS49: pending gowatana-CitrixPVS49: complete gowatana-CitrixPVS50: pending gowatana-CitrixPVS50: complete lab-ntnx-pc-01
VM が削除されました。
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
定期的に環境を初期化するデモ環境など、決められた VM 以外をまとめて削除する場合などに、自動化の一部として利用できるかなと思います。
ちなみに、 VM スナップショットもまとめて削除するには「acli vm.delete ~ delete_snapshots=true」といったコマンドラインにします。
以上。