將 Linux 映像新增至 Azure Stack Hub Marketplace

警告

本文參考 CentOS,這是接近生命周期結束 (EOL) 狀態的 Linux 發行版。 請據以考慮您的使用和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引

您可以將 Linux 型映像新增至 Azure Stack Hub Marketplace,以在 Azure Stack Hub 上部署 Linux 虛擬機器 (VM)。 將 Linux 映像新增到 Azure Stack Hub 的最簡單方式就是透過 Marketplace 管理。 這些映像已備妥,並已針對與 Azure Stack Hub 的相容性進行測試。

Marketplace 管理

若要從 Azure Marketplace 下載 Linux 映像,請參閱從 Azure 將市集項目下載到 Azure Stack Hub。 選取您想要在 Azure Stack Hub 上提供給使用者的 Linux 映像。

這些映像會不時更新,因此請經常查看以保持在最新狀態。

準備您自己的映像

請盡可能下載可透過 Marketplace 管理取得的映像。 這些映像已透過 Azure Stack Hub 準備並通過測試。

最低支援的 Azure Linux 代理程式

若要在 Azure Stack Hub 中取得 Azure Linux 代理程式和延伸模組的支援,Linux 虛擬機器 (VM) 上的 Linux 代理程式版本必須是 2.2.10 版或以後的版本,而且 Azure Stack Hub 必須執行目前版本的兩個版本之間的組建。 如需 Azure Stack Hub 更新的資訊,請參閱 Azure Stack Hub 版本資訊

截至 2020 年 7 月為止,Linux 代理程式的最低支援版本為 2.2.41。 如果 Linux 代理程式版本是 2.2.10 以前的版本,您必須使用發行版本套件管理員並啟用自動更新來更新 VM。

  • 如果發行版本廠商在套件存放庫中沒有最低的 Linux 代理程式版本,系統仍受到支援。 如果 Linux 代理程式版本是 2.1.7 以後的版本,您必須啟用代理程式自動更新功能。 該功能會擷取最新版的程式碼以處理延伸模組。
  • 如果 Linux 代理程式版本是 2.2.10 以前的版本,或者 Linux 系統不受支援,我們可能會要求您先更新代理程式,才能取得支援。
  • 如果 Linux 代理程式版本是由發行者自訂,Microsoft 可能會由於該自訂而將您導向至發行者,以取得代理程式或延伸模組特定支援。 若要升級 Linux 代理程式,請參閱如何更新 VM 上的 Azure Linux 代理程式

檢查您的 Linux 代理程式版本

若要檢查您的 Linux 代理程式版本,請執行:

waagent --version

例如,如果您是在 Ubuntu 18.04 上執行此命令,您將會看到輸出:

WALinuxAgent - 2.2.45
Python - 3.6.9
Goal State Agent - 2.2.48.1

如需代理程式的詳細資訊,請參閱 WALinuxAgent 的常見問題集 (英文)。

準備您自己的 Linux 映像

您可以使用下列指示來準備自己的 Linux 映像:

Cloud-init

您可以使用 cloud-init 來自訂 Linux VM,也可以使用下列 PowerShell 指示。

步驟 1:使用您的 cloud-config 建立 cloud-init.txt 檔案

建立名為 cloud-init.txt 的檔案並貼上下列雲端組態:

#cloud-config
package_upgrade: true
packages:
  - nginx
  - nodejs
  - npm
write_files:
  - owner: www-data:www-data
    path: /etc/nginx/sites-available/default
    content: |
      server {
        listen 80;
        location / {
          proxy_pass http://localhost:3000;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection keep-alive;
          proxy_set_header Host $host;
          proxy_cache_bypass $http_upgrade;
        }
      }
  - owner: azureuser:azureuser
    path: /home/azureuser/myapp/index.js
    content: |
      var express = require('express')
      var app = express()
      var os = require('os');
      app.get('/', function (req, res) {
        res.send('Hello World from host ' + os.hostname() + '!')
      })
      app.listen(3000, function () {
        console.log('Hello world app listening on port 3000!')
      })
runcmd:
  - service nginx restart
  - cd "/home/azureuser/myapp"
  - npm init
  - npm install express -y
  - nodejs index.js

步驟 2:在 Linux VM 部署期間參考 cloud-init.txt

將檔案上傳至 Azure 儲存體帳戶、Azure Stack Hub 儲存體帳戶,或是您 Azure Stack Hub Linux VM 可與之連線的 GitHub 存放庫。

目前,只有 REST、PowerShell 和 Azure CLI 可支援使用 cloud-init 來部署 VM,而且 Azure Stack Hub 上沒有相關聯的入口網站 UI。

您可以遵循快速入門:在 Azure Stack Hub 中使用 PowerShell 建立 Linux 伺服器 VM,使用 PowerShell 建立 Linux VM。 請務必將 cloud-init.txt 作為 -CustomData 旗標的一部分參考:

$VirtualMachine =Set-AzVMOperatingSystem -VM $VirtualMachine `
  -Linux `
  -ComputerName "MainComputer" `
  -Credential $cred -CustomData "#include https://cloudinitstrg.blob.core.windows.net/strg/cloud-init.txt"

將您的映像新增至 Marketplace

遵循將映像新增至 Marketplace。 請確定已將 OSType 參數設定為 Linux

將映像新增至 Marketplace 之後,便會建立 Marketplace 項目,使用者就可以部署 Linux VM。

後續步驟