在 VM 的應用上,有時候需要定期將 VM 環境到特定的狀態,如設定還原、連線數量清零 … 等等的維護。下面為透過 crontab 自動還原 VM 狀態並啟動的做法。
使用軟體:ESXi管理工具 (ex: VMware Host Client, VMware Workstation, … )、SSH Client (ex: putty)
Automatic Reset ESXi VM State (Snapshot)
1. 確保 ESXi 的 SSH 服務已啟用
2. 設定 VM 重啟後自動還原到最後一個快照 snapshots。這裡可以透過 VMware Workstation 設定 VM 選項裡的快照設定,或是透過VMware Host Client 在 VM 編輯設定的組態參數中,直接新增參數:anapshot.action : autoRevert
3. 使用 putty 等工具連線登入到 ESXi (由於屬於系統的核心設定,建議用 root 身分操作)
4. 登入後透過內建的 vim ,建立關閉指定 VM 的 script 執行檔 (進入vim 後按[A]即可編輯, 按[Esc]退出編輯模式, 按[Shift]+[:]後輸入 wq 即可存檔離開)
vi /power-off.shchmod 755 /power-off.sh
vmname=”您的虛擬機器名稱”vmid=$(vim-cmd vmsvc/getallvms | grep “$vmname” | awk ‘{print$1}’)stat1=$(vim-cmd vmsvc/power.getstate “$vmid” | grep “on”)if [ “$stat1” == “Powered on” ]thenvim-cmd vmsvc/power.off “$vmid”fi
5 建立啟動指定 VM 的 script 執行檔,並於編輯完成後授予執行的權限
vi /power-on.shchmod 755 /power-on.sh
vmname=”您的虛擬機器名稱”vmid=$(vim-cmd vmsvc/getallvms | grep “$vmname” | awk ‘{print$1}’)stat1=$(vim-cmd vmsvc/power.getstate “$vmid” | grep “off”)if [ “$stat1” == “Powered off” ]thenvim-cmd vmsvc/power.on “$vmid”fi
6. 編輯 crontab 排程設定檔,以設定定期執行的時間。這裡以每天晚上10點02分執行 power-off.sh 關閉 VM,並每隔16分鐘確保 VM 開啟為例。
vi /var/spool/cron/crontabs/root
2 14 * * * /power-off.sh*/16 * * * * /power-on.sh
7. 為了讓排程設定生效,需要重啟 crontab 服務。先確認目前 crontab 執行中的 process id,刪除後重新執行即可。
cat /var/run/crond.pidkill {找到的process id}crond
8. 上述步驟便能讓目前 ESXi 上的 VM 自動重置狀態並啟動,但由於 ESXi 開機時會重置 crontab 設定,故還需要透過 ESXi 開機執行的 script 檔來自動加上設定。
/bin/kill ${cat /var/run/crond.pid}/bin/echo ‘2 14 * * * /power-off.sh’ >> /var/spool/cron/crontabs/root/bin/echo ‘*/16 * * * * /power-on.sh’ >> /var/spool/cron/crontabs/rootcrond
以上,便能自動化的讓 VM 虛擬機器定期重置。
Share this:
Share on X (Opens in new window)
X
Share on Facebook (Opens in new window)
Email a link to a friend (Opens in new window)
Share on LinkedIn (Opens in new window)
Share on Tumblr (Opens in new window)
Tumblr
Share on Telegram (Opens in new window)
Telegram
Share on WhatsApp (Opens in new window)
Print (Opens in new window)
Share on Reddit (Opens in new window)
Share on Pinterest (Opens in new window)
Share on Mastodon (Opens in new window)
Mastodon
Share on Nextdoor (Opens in new window)
Nextdoor
Share on X (Opens in new window)
X
Like Loading…