我已經閱讀了多篇關于在GCP虛擬機上運行腳本的帖子,但不幸的是,找不到滿足我需求的答案。我有一個Go應用程序,我正在尋找一種以編程方式在VM實例上運行bash腳本的方法。我正在使用一個允許我獲取 VM 實例信息的。遺憾的是,SDK 不包含允許在特定實例上運行 bash 腳本的功能(例如,與 Azure 云 SDK 不同)。Google Cloud Golang SDK我發現的選項:Google Cloud Compute SDK 提供了一個用于設置啟動腳本的選項,該腳本將在每次重新啟動實例時運行。添加實例級公有 SSH 密鑰。建立 SSH 連接并使用 Go SSH 客戶端運行腳本。問題:顯然,啟動腳本將需要實例重新啟動,這在我的用例中是不可能的。SSH 也可能有問題,以防實例未運行 SSH 守護程序或 SSH 端口未打開。此外,SSH 守護程序配置默認不允許 root 登錄(可能為 false),因此腳本可能在非特權用戶上運行,使此選項也不合適。PermitRootLogin我應該注意,我無權更改這些虛擬機的配置(例如,更改ssh守護程序conf以允許root登錄),我只能使用基于令牌的身份驗證來訪問它們,最好是通過SDK,盡管只要我不將實例暴露在額外的風險中,其他選項也是可能的。我有哪些選擇?這可行嗎?我錯過了什么嗎?謝謝!
2 回答

慕婉清6462132
TA貢獻1804條經驗 獲得超2個贊
正如Kolban所說,沒有這樣的API可以從VM內部的bash外部觸發。最好的解決方案是部署一個調用bash的Web服務器(REST API)并公開它(外部或內部)。
但你也可以作弊??梢栽谑褂脝幽_本運行并偵聽自定義元數據的 VM 上創建守護程序。假設每秒檢查一次。
更新元數據后,守護程序可以執行操作??梢韵胂螅獢祿褂脜颠\行的腳本。在運行結束時,守護程序將清理元數據。
所以現在,要運行你的bash,調用setMetadata Api。這不是開箱即用的,但你可以擁有與你期望的相似的東西。

守著星空守著你
TA貢獻1799條經驗 獲得超8個贊
將 GCP 視為提供虛擬機基礎架構,如計算、內存、磁盤和網絡。計算機啟動時運行的內容位于你和計算機映像之間。我聽到你說你想在VM中運行bash腳本。這超出了基仕伯的治理范圍?;瞬粫绊懎h境的運行和存在。如果要執行的操作是以編程方式在 VM 中運行腳本,則需要在 VM 中運行某種形式的 demon,這些 demon 可以發出運行此類腳本的信號。這可能是一個Web服務器,如燒瓶或快遞,它可能是你的SSH服務器,也可能是你選擇的其他一些技術。
我認為您正在尋找的核心是一些GCP API,當調用它時,它將在計算引擎中運行腳本。我要說的是,沒有這樣的API。
- 2 回答
- 0 關注
- 101 瀏覽
添加回答
舉報
0/150
提交
取消