by Rain Chu | 3 月 27, 2024 | GCP , MIS
要執行該操作GCP中的執行個體的自動開啟以及自動關閉,您需要給予 Compute Engine System service account(服務帳戶) compute.instances.start
和 compute.instances.stop
權限。
錯誤訊息
Compute Engine System service account [email protected] needs to have [compute.instances.start,compute.instances.stop] permissions applied in order to perform this operation.
以下是需要採取的步驟:
找到 Compute Engine System Service Account
打開 Google Cloud Console。
導航到「IAM & Admin」-> 「IAM」。
在右側的窗口中,勾選「Include Google-provided role grants」(包含 Google 提供的角色授權)。
使用搜尋欄 (Ctrl + F) 並輸入「compute-system」找到服務帳戶。服務帳戶的 email 格式為 [email protected]
。
添加權限
點擊服務帳戶旁邊的鉛筆圖示來編輯。
點擊「ADD ANOTHER ROLE」(新增另一個角色)。
在角色過濾器中,輸入「compute」,並選擇:
Compute Instance Admin (v1) – roles/compute.instanceAdmin.v1
或是更精細的權限如 roles/compute.instanceAdmin
、roles/compute.osAdminLogin
。
點擊「SAVE」(儲存)。
等待權限生效 :
新權限生效可能需要幾分鐘。
重要注意事項:
Compute Engine System Service Account 是一個由 Google 管理的特殊服務帳戶,允許 Compute Engine 在您的專案裡進行必要的配置。避免賦予過廣的權限。
如果您只是需要啟動和停止 VM 的權限,選擇更精細的權限來降低風險。
徹底瞭解要賦予的權限,以及它們可能產生的影響。Google Cloud 的 IAM 文件: https://cloud.google.com/iam/docs/ 提供了角色與權限的詳細說明。
如果是在使用像 Cloud Scheduler 這類的服務來啟動或停止 VM,那麼就是該服務所使用的服務帳戶需要這些權限 。
by Rain Chu | 12 月 7, 2023 | GCP , Linux , MIS , Ubuntu
建立一個會自動開機和關閉虛擬機器的排程
值得注意的事項:
主機時間都是 UTC 時間,設定的時候,要記得處理這邊,例如台灣時區是+8,所以設定時間的時候要-8
1.首先設定一個 Compute Engine 的 「執行個體排程」如圖所示
2.建立一個新的執行個體排程
設定在每天18:00到23:00最忙碌的時候多開一台主機
3.將要執行的 VM 個體加入到此排程中
記得建立好排程後,要把適用這個規則的 VM 個體都加入,GCP 的排程才會去處理 VM 的開關
4.執行排程的權限設定
如果你之前沒做過權限設定,那肯定會遇到權限不足的錯誤訊息,這時候要來到 IAM 與管理 -> 身分與存取權管理,並且先勾選「包含 Google 提供的角色授權」,然後選擇「授予存取權」
然後主體要選擇你自己的 compute-system.iam 指派角色則是選擇 Compute 執行個體管理員(v1),如圖所示
建立 Ubuntu or Debian 的 Shell Script 定時執行開關機
1.建立自動開關設定的 Script
#!/bin/bash
SOURCE_CONF="/path/to/a.conf"
TARGET_CONF="/path/to/nginx/nginx.conf"
# 使用 sudo 執行需要 root 權限的命令
sudo cp "$SOURCE_CONF" "$TARGET_CONF"
sudo nginx -s reload
2.可以使用 crontab
命令來檢查和管理定時任務(cron jobs)
加入執行時間、程式碼等設定
# 分 鐘 小時 日期 月份 星期 命令
0 23 * * * /path/to/update_nginx_conf.sh
這樣就可以利用 root 權限運行 Script
其中:
分鐘 :分鐘(0-59)
小時 :小時(0-23,採24小時制)
日期 :一個月中的某天(1-31)
月份 :月份(1-12)
星期 :星期幾(0-7,其中0和7都代表星期日)
命令 :要執行的命令或腳本的絕對路徑
例如,如果您希望每天凌晨 3 點執行一個名為 script.sh
的腳本,您應該這樣寫:
檢查
檢查 crontab
列表 :輸入 crontab -l
來確認您的任務已被添加到 crontab
列表中。
其他方法
at 指令
例如要讓指令碼在明天的 10:00執行,可以執行下面的指令
at 10:00 AM tomorrow /path/to/script.sh
systemd (System and Service Manager)
創建一個 systemd 定時任務檔案。
在定時任務檔案中指定要執行的命令或腳本以及執行時間。
啟用定時任務。
例如:每一分鐘都要執行一次 script.sh
[Unit]
Description=My Script
[Timer]
OnCalendar=*-*-* *:* *
[Service]
ExecStart=/path/to/script.sh
錯誤處理
如果有遇到無法執行權限的話,可以參考下面的文章解決權限問題
結語
這樣設定完成後,GCP自己就會在晚上11點關機、晚上6點開機,而我的腳本則是在晚上11:00 關閉 Nginx 的 upstream,在18:15開啟 upstream server
by Rain Chu | 11 月 15, 2022 | Azure , Microsoft , SERVER , Windows
預設在 Microsoft Azure 的 VM 中,ICMP服務協定是關閉的,但常常有需要用ping指令來確認服務是否還存在,打開方法不講的話要找很久,原則上只要在 Azure 中設定,並且到 VM 中將防火牆打開即可
1.Azure中的設定
找到「VM」的「網路」,選擇「新增輸入連接埠規則」
並且輸入any和*
2.Windows Server Firewall 防火牆設定
新增 Inbound Rules ,把ICMPv4和ICMPv6兩個協定加入即可
VIDEO
ICMP 協定
by Rain Chu | 10 月 28, 2021 | Hyper-V , Linux , Windows
預設中,建立好的桌面板 Ubuntu 20 的系統,會是 1024×768 的解析度,但這種解析度下很難有正常的瀏覽行為,網頁的資訊都會擠在一起,所以建好 Hyper-V VM for Ubuntu 20 的時候,通常第一件事情,就是會去改變他的解析度大小,以下說明如何修改解析度
先打開 Terminal 並且編輯 gurb 檔案
sudo nano /etc/default/grub
2.找到 GRUB_CMDLINE_LINUX_DEFAULT ,預設應該是quiet splash,我們要在後面加入指令,讓他認得hyper-V,並且調整為 Full-HD的解析度
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
3.把 GRUB_CMDLINE_LINUX_DEFAULT 的參數從 quiet splash -> quiet splash video=hyperv_fb:1920×1080
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=hyperv_fb:1920x1080"
修改完畢後的 grub 檔案會是下圖
4.重新開機,並且重新關閉VM的視窗後重新連線VM
5.等待重新開機完畢後,下指令更新 grub
6.更新完 grub 後,並且再次重開,重連VM即可看到視窗改變
文章引用
How to make Ubuntu 20.04 LTS Desktop fullscreen on Hyper-V Manager
grub 是 Linux 中的開機管理程式,詳情可以看下文章
深入指揮作業系統啟動 詳解GRUB開機管理程式 | 網管人 (netadmin.com.tw)
近期留言