#命令管理虚拟机
https://askubuntu.com/questions/445284/how-to-start-a-virtualbox-machine-via-command-line-without-gui
vboxmanage list vms
vboxmanage startvm "k8s-node1" --type headless
vboxmanage controlvm "k8s-node1" poweroff
package main
import (
"flag"
"fmt"
vbox "github.com/pyToshka/go-virtualbox"
)
/**
vboxmanage list vms
vboxmanage startvm "k8s-node1" --type headless
vboxmanage controlvm "k8s-node1" poweroff
*/
//啓動順序
var starts []string = []string{
"DBSMaser", "DBSSlave", "DBSThird", "nginx-master", "nginx-backup", "k8s-node1", "k8s-node2", "k8s-node3", "k8s-master", "k8s-slave",
}
var value string
func main() {
flag.StringVar(&value, "c", "list", "-c [list|start|stop|status]")
flag.Parse()
switch value {
case "list":
printVmsInfo()
case "start":
runVms(true)
case "stop":
runVms(false)
case "status":
vmStatus()
default:
fmt.Println("Unknown command")
}
}
func printVmsInfo() {
vms, err := vbox.ListMachines()
if err != nil {
fmt.Println("get vms list failed", err)
return
}
fmt.Printf("vmName\t\t vmState\t vmCPUs\t vmMem(m)\n")
for _, vm := range vms {
if isIn(vm.Name) {
fmt.Printf("%s\t\t %s\t %v\t %v\n", vm.Name, vm.State, vm.CPUs, vm.Memory)
}
}
}
func runVms(starting bool) {
vms, err := vbox.ListMachines()
if err != nil {
fmt.Println("get vms list failed", err)
return
}
for _, vm := range vms {
if isIn(vm.Name) {
if starting {
fmt.Println("start", vm.Name)
vm.Start()
} else {
fmt.Println("stop", vm.Name)
vm.Stop()
}
}
}
}
func vmStatus() {
vms, err := vbox.ListMachines()
if err != nil {
fmt.Println("get vms list failed", err)
return
}
for _, vm := range vms {
if isIn(vm.Name) {
fmt.Println(vm.Name, "\t", vm.State)
}
}
}
func isIn(vm string) bool {
for _, v := range starts {
if vm == v {
return true
}
}
return false
}
vm啓動虛擬機管理
最新推荐文章于 2024-09-03 22:22:10 发布