Linux イメージを Azure Stack Hub Marketplace に追加する

注意事項

この記事では、End Of Life (EOL) 状態に近い Linux ディストリビューションである CentOS について説明します。 使用を検討し、それに応じて計画してください。 詳細については、 CentOS End Of Life ガイダンスを参照してください。

Azure Stack Hub Marketplace に Linux ベースのイメージを追加することによって、Azure Stack Hub 上に Linux 仮想マシン (VM) をデプロイできます。 最も簡単に Linux イメージを Azure Stack Hub に追加する方法では、Marketplace Management を使用します。 これらのイメージは、Azure Stack Hub との互換性を確保できるよう、あらかじめ準備とテストが行われています。

Marketplace Management

Azure Marketplace から Linux イメージをダウンロードするには、Azure から Azure Stack Hub への Marketplace 項目のダウンロードに関する記事を参照してください。 Azure Stack Hub で、ユーザーに提供する Linux イメージを選択します。

これらのイメージは頻繁に更新されるので、こまめに確認して最新の状態に保つようにしてください。

独自のイメージを準備する

可能な限り、使用可能なイメージは、Marketplace Management からダウンロードしてください。 これらのイメージは、Azure Stack Hub 用にあらかじめ準備とテストが行われています。

サポートされている最小の Azure Linux エージェント

Azure Stack Hub で Azure Linux エージェントと拡張機能のサポートを受けるには、Linux 仮想マシン (VM) 上の Linux エージェントのバージョンがバージョン 2.2.10 以降である必要があります。また、Azure Stack Hub は、現在のリリースの 2 つのリリース以内であるビルドを実行する必要があります。 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 の「 FAQ」を参照してください。

独自の 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 Stack Hub Linux VM からアクセスできる Azure ストレージ アカウント、Azure Stack Hub ストレージ アカウント、または GitHub リポジトリにファイルをアップロードします。

現時点では、VM のデプロイでの cloud-init の使用は、REST、PowerShell、Azure CLI でのみサポートされており、Azure Stack Hub に関連付けられたポータル UI はありません。

PowerShell を使用して Linux VM を作成するには、「クイック スタート: Azure Stack Hub で PowerShell を使用して Linux サーバー VM を作成する」に従います。 -CustomData フラグの一部として cloud-init.txt を必ず参照してください。

$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 をデプロイできます。

次のステップ