取得並且使用唯一的 Azure VM ID

感謝北科大劉建昌同學翻譯微軟公司 Azure 團隊主管  Khalid Mouss 於 2014 年 10 月 13 日所發表的文章 https://azure.microsoft.com/blog/2014/10/13/accessing-and-using-azure-vm-unique-id/

Azure 團隊最近新增了一項功能,讓開發人員可以取得一個代表 Azure Virtual Machine 絕對唯一的 ID。

這個唯一的 Azure VM ID 是一個 128 位元的識別碼,它可以透過 Azure IaaS 虛擬機器的系統 BIOS ( SMBIOS ) 來進行編碼與儲存,並且能夠使用虛擬機器上的 BIOS指令讀出。這個識別碼不管是在 Azure 上或是本地端 ( on-premises ) 皆可以使用,並且幫助您在 Azure IaaS  佈署上用於管理授權 ( licensing )、回報 ( reporting )、追蹤 ( tracking ) 等需求。

當許多獨立的軟體供應商與合作夥伴在 Azure 上佈署了應用程式,並且需要驗證它是否執行於某個特定虛擬機器內,會需要在虛擬機器的生命週期 ( lifecycle ) 中清楚知道這個虛擬機器是在何處執行? 透過此一唯一識別碼,我們可以得知目前虛擬機器是執行於 Microsoft Azure、本地端、或是其他雲端業者平台。這個唯一的識別碼可以用於檢測軟體是否有適當的授權 ? 或是將虛擬機器的基本資料關聯到它執行所在的平台,藉此協助在其平台上做適當的參數設定。

這個唯一的識別碼不能夠被修改,只能進行讀取查詢,雖然只有在 2014 年 9 月 18 日之後建立的虛擬機器才預設擁有這項功能,但是在 2014 年 9 月 18 日之前建立的虛擬機器可以透過將虛擬機器重新啟動來得到這項功能。

虛擬機器的唯一的識別碼  ( Azure Unique VM ID ) 在下列情況下皆不會改變 :

  1. 重新啟動 ( reboot )
  2. 關機 ( shutdown ) ( 計畫中或是意外 )
  3. 啟動/停止取消分配 ( start/stop de-allocate )
  4. 服務修復 ( service healing )
  5. 地域恢復 ( restore in place )

但是,若虛擬機器是一個快照 ( snapshot ),並且用來建立一個新的執行個體 ( instance ),此時的虛擬機器的唯一的識別碼 ( Azure VM ID ) 是會改變的。

如果在這項功能發行前已經建立好虛擬機器並且運行了,您可以重新啟動 VM,藉此來得到這個唯一的 ID。而重新設定之後,您就可以使用它了。

您可以透過以下步驟的操作,在您的虛擬機器中獲得虛擬機器的唯一的識別碼 ( Azure VM ID ) :

1. 建立一個虛擬機器 ( 只有在2014年9月18日之後建立的虛擬機器才預設擁有此功能 )

2. 連線至虛擬機器

3. 查詢虛擬機器的Unique ID

  • Windows 虛擬機器

clip_image002

上圖是利用 PowerShell 指令與查詢結果

  • Linux虛擬機器 ( 本文使用 Ubuntu 進行示範 )

clip_image004

上圖是指令與查詢結果

由於位元組 Big Endian bit ordering 因素 ,因此上圖的唯一識別碼實際應該如下:

98 F9 D8 26 - 4E 3D - XXXX - BF B6 B5DE5F108440

不管您在 Azure 虛擬機器上放置甚麼應用程式,您皆能夠透過上述方式得到一個唯一的識別碼。

再次提醒您,若您在此項功能釋出前就已經建置好虛擬機器的話,只要透過重新啟動虛擬機器,一樣也能得到此項功能。