2015-06-18 13 views

cevap

4

: En uygulamalar veya komut meta sunucusu kullanarak bir Bilişim Altyapısı örneği içinde çalıştırıyorsanız

kolaylıkla algılayabilir. Sunucuya bir istekte bulunduğunuzda, meta veri sunucusundaki herhangi bir yanıt Metadata-Flavor: Google başlığını içerecektir. Compute Engine'de çalışıp çalışmadığınızı güvenilir bir şekilde algılamak için bu üstbilgiyi arayabilirsiniz. Örneğin, aşağıdaki kıvırma isteği, isteğin bir Compute Engine örneğinden yapıldığını belirten Metadata-Flavor: Google üstbilgisini döndürür.

[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

Ayrıca Meta veri sunucusu için bir DNS araması yapabilirsiniz. Böyle çıktılayacaktır şey içinde bir Google Hesaplama örneği dig +short metadata.google.internalyapıyor Örneğin

:

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

, ancak, Google Cloud dışında, standart bir sunucu içinde aynı komutu (dig +short metadata.google.internal) yaparsanız boş bir yanıt alabilirsiniz.

Yani kontrol etmek, siz (örneğin bash olarak) yapmanız gereken tek şey :

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