将 Linux 映像添加到 Azure Stack Hub 市场

可以通过将基于 Linux 的映像添加到 Azure Stack Hub 市场,在 Azure Stack Hub 上部署 Linux 虚拟机 (VM)。 将 Linux 映像添加到 Azure Stack Hub 的最简单方法是使用市场管理。 这些映像已准备好,并已针对与 Azure Stack Hub 的兼容性进行测试。

市场管理

若要从 Azure 市场下载 Linux 映像,请参阅将市场项从 Azure 下载到 Azure Stack Hub。 选择要在 Azure Stack Hub 上提供给用户的 Linux 映像。

这些映像频繁更新,因此请经常回来查看,确保使它们保持最新。

准备自己的映像

请尽可能通过市场管理下载可用的映像。 这些映像已针对 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"

将映像添加到市场

按照将映像添加到市场进行操作。 请确保 OSType 参数已设置为 Linux

将映像添加到市场后,便会创建市场项,用户就可以部署 Linux VM 了。

后续步骤