Şu anda bir Google Compute Engine makinesinde veya başka bir yerde (geliştirme makinesi) çalışıyorsam komut satırı kabuğundan haber almanın bir yolu var mı? metadata docs BaşınaBir makinenin Google Compute Engine örneği olup olmadığını nasıl öğrenirim?
cevap
: 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ı belirtenMetadata-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/
yapabilirsiniz ayrıca use the dmidecode
utility to probe the virtual hardware bir ağ arama yapmak istemiyorsanız: yerine aslında çağıran,
[email protected]:~$ sudo dmidecode -s bios-vendor | grep Google
Google
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.internal
yapı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