2015-06-18 28 views

回答

4

metadata docs

,如果你的應用程序或腳本的計算引擎實例中使用的元數據服務器運行時,您可以很容易地檢測。向服務器發出請求時,元數據服務器的任何響應都將包含Metadata-Flavor: Google標頭。您可以查找此標頭以可靠地檢測您是否在Compute Engine中運行。

例如,以下curl請求會返回Metadata-Flavor: Google標頭,表示該請求是在計算引擎實例內進行的。

[email protected]:~$ curl metadata.google.internal -i 
HTTP/1.1 200 OK 
Metadata-Flavor: Google 
Content-Type: application/text 
Date: Thu, 10 Apr 2014 19:24:27 GMT 
Server: Metadata Server for VM 
Content-Length: 22 
X-XSS-Protection: 1; mode=block 
X-Frame-Options: SAMEORIGIN 

0.1/ 
computeMetadata/ 
2

你也可以做一個DNS查找元數據服務器。

例如,做dig +short metadata.google.internal谷歌的計算實例將輸出是這樣的:

[[email protected]]# dig +short metadata.google.internal 
169.254.169.254 

但是,如果你做同樣的命令(dig +short metadata.google.internal)標準的服務器內,谷歌雲外,你可以得到一個空的答覆。

所以檢查,所有你需要做的(在bash例如)是:

GMETADATA_ADDR=`dig +short metadata.google.internal` 
if [[ "${GMETADATA_ADDR}" == "" ]]; then 
    echo "I am NOT in a Google VM!" 
else 
    echo "I AM INSIDE a Google VM! Whoohoo!" 
fi 
相關問題