共用方式為


將 Linux 映像新增至 Azure Stack Hub Marketplace

您可以將以Linux為基礎的映像新增至 Azure Stack Hub Marketplace,在 Azure Stack Hub 上部署 Linux 虛擬機(VM)。 將 Linux 映像新增至 Azure Stack Hub 最簡單的方式是透過市集管理。 這些映像已準備好並測試與 Azure Stack Hub 的相容性。

Marketplace 管理

若要從 Azure Marketplace 下載 Linux 映射,請參閱 將 Marketplace 專案從 Azure 下載至 Azure Stack Hub。 選取您想要在 Azure Stack Hub 上提供使用者的 Linux 映像。

這些映射有頻繁的更新,因此請經常回頭查看以保持最新狀態。

準備您自己的映像

儘可能下載可透過市集管理取得的映像。 這些映像已經過 Azure Stack Hub 的準備和測試。

最低支援的 Azure Linux 代理程式

若要取得 Azure Stack Hub 中 Azure Linux 代理程式和擴充功能的支援, Linux 虛擬機上的 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。

下一步