簡體   English   中英

在bash中執行gcloud命令

[英]Executing gcloud commands in bash

我花了三天的時間對此付諸行動,然后絕望地來到這里。

這么長的話簡而言之,我想我應該開辟一個簡單的PHP網站,以允許我有能力按要求啟動GCP服務器的游戲組的主持人。 我不是開發人員,所以我從系統角度研究此問題,以找到最簡單的解決方案來完成這項工作。

我在GCP上啟動了一台Ubuntu 18.04機器,並使用Google SDK對其進行了設置,授權它可以訪問該項目,並且能夠簡單地運行運行良好的gcloud命令。 PHP文件調用shell腳本以運行相同的命令時出現了一些問題,但是通過一些測試,我可以看到現在每次我單擊PHP頁面上的按鈕時都可以調用shell腳本來進行管理(無需擔心(它會廣播牆“測試”)) 。

但是,不會執行gcloud命令。 如果我手動運行此Shell腳本,它將啟動實例,而無需擔心,並且會廣播牆,如果我單擊它廣播的按鈕,僅此而已。 我已經將文件設置為具有執行權限,甚至添加了用戶nginx運行以具有sudo權限,將sudo sh放在PHP文件中的命令前面也沒有任何區別。 請在下面找到bash腳本:

    #!/bin/bash

    /usr/lib/google-cloud-sdk/bin/gcloud compute instances start arma3s1-prod --zone=australia-southeast1-b

    wall "test"

任何幫助將不勝感激,再加上自動關閉功能,將使我們的游戲集團僅通過運行人們想要玩的服務器來節省金錢。

您需要有關基礎系統的更多詳細信息,請告訴我。

因此,我向工作中的PHP開發人員詢問了這個問題,在兩秒鍾的時間內,她指出了問題,現在我感到很愚蠢。 在/ etc / passwd中,www數據用戶使用了/ usr / sbin / nologin,在我修復了運行腳本gcloud后,希望獲得將日志文件寫入/ var / www的權限。 修復了這些問題,並且效果很好。 我並不擔心頁面甚至服務器被黑客入侵和破壞,我可以很輕松地重新創建它們。

謝謝您的幫助! 有時我認為我只需要退后一步,對這個問題有了新的認識。

登錄后啟動命令時,您具有對Google Cloud API的帳戶訪問權限,但PHP帳戶沒有這些權限。

即使您將www-data用戶添加到root用戶,也無法解決問題,也許會創建一些安全問題,但僅此而已。

如果您確實要執行此操作,則應創建一個服務帳戶,並將json賦予env變量GOOGLE_APPLICATION_CREDENTIALS,該變量僅對項目內的計算實例具有權限,因此您的PHP應該具有足夠的權限來執行您要的操作他。

請注意,此方法的問題在於,如果您被黑客入侵,則存在更改,也可以刪除托管PHP的實例。

您也可以嘗試調用准備好的雲函數,它將以這種方式創建實例,即使您的實例被刪除,雲函數仍會存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM