Ubuntu 仮想マシン上で Azure IoT Edge を実行する

適用対象:IoT Edge 1.4 checkmark IoT Edge 1.4

重要

IoT Edge 1.4 がサポートされているリリースです。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。

Azure IoT Edge ランタイムを使用すると、デバイスを IoT Edge デバイスに変えることができます。 このランタイムは、Raspberry Pi のような小型デバイスにも、産業用サーバーのような大型デバイスにもデプロイすることができます。 デバイスが IoT Edge ランタイムで構成されたら、クラウドに対するビジネス ロジックのデプロイを開始できます。

IoT Edge ランタイムの動作とランタイムに含まれるコンポーネントについては、「Azure IoT Edge ランタイムとそのアーキテクチャの概要」を参照してください。

この記事では、事前に指定されたデバイス接続文字列でインストールおよび構成された Azure IoT Edge ランタイムを使用して、 Ubuntu 20.04 LTS 仮想マシンをデプロイする手順について一覧で説明します。 このデプロイは、iotedge-vm-deploy プロジェクト リポジトリに保持されている cloud-init ベースのAzure Resource Manager テンプレートを使用して行われます。

最初の起動時に、仮想マシンは、cloud-init 経由で最新バージョンの Azure IoT Edge ランタイムをインストールします。 また、ランタイムが開始される前に、指定された接続文字列を設定します。これにより、SSH またはリモート デスクトップ セッションを開始することなしに、IoT Edge デバイスを簡単に構成して接続することができます。

[Deploy to Azure] ボタンを使用してデプロイする

[Deploy to Azure] ボタンを使用すると、GitHub に保持されている Azure Resource Manager テンプレートをスムーズにデプロイできます。 このセクションでは、iotedge-vm-deploy プロジェクト リポジトリに含まれる [Deploy to Azure] ボタンの使用方法を示します。

  1. ここでは、iotedge-vm-deploy の Azure Resource Manager テンプレートを使用して、Azure IoT Edge 対応の Linux VM をデプロイします。 まず、下のボタンをクリックします。

    Deploy to Azure Button for iotedge-vm-deploy

  2. 新しく起動されたウィンドウで、使用可能なフォームフィールドに入力します。

    Screenshot showing the iotedge-vm-deploy template

    フィールド 説明
    サブスクリプション 仮想マシンをデプロイするためのアクティブな Azure サブスクリプション。
    リソース グループ 仮想マシンとそれに関連付けられたリソースを格納する、既存または新しく作成されたリソース グループ。
    リージョン 仮想マシンをデプロイする地理的リージョン。選択したリソース グループの場所が規定値となります。
    DNS ラベル プレフィックス 仮想マシンのホスト名のプレフィックスとして使用される、あなたが選択した必要値。
    管理ユーザー名 ユーザー名。デプロイ時にルート権限が与えられます。
    デバイスの接続文字列 目的の IoT Hub 内に作成された、デバイス向けのデバイス接続文字列
    VM のサイズ デプロイする仮想マシンのサイズ
    Ubuntu OS バージョン ベース仮想マシンにインストールする Ubuntu OS のバージョン。
    認証の種類 sshPublicKey または パスワード のどちらか好きな方を選択します。
    [管理パスワードまたはキー] 認証タイプの選択に応じて、SSH 公開キーの値、またはパスワードの値。

    すべてのフィールドに入力が完了Next : Review + createした後、下部にあるボタンをクリックして、条件を確認できる場所に移動し、[作成] をクリックしてデプロイを開始します。

  3. デプロイが正常に完了したことを確認します。 仮想マシン リソースが、選択したリソース グループにデプロイされている必要があります。 マシン名をメモしておきます。この名前は vm-0000000000000 の形式である必要があります。 また、関連 [DNS 名] をメモします。これは <dnsLabelPrefix>.<location>.cloudapp.azure.com 形式になっている必要があります。

    [DNS 名] は、Azure portal 内に新しくデプロイされた仮想マシンの [概要] セクションから取得できます。

    Screenshot showing the dns name of the iotedge vm

  4. 設定後にこの VM に SSH 接続する場合は、以下のコマンドで、関連付けられている DNS 名を使用します。ssh <adminUsername>@<DNS_Name>

Azure CLI からデプロイする

  1. 以下の Azure CLI iot 拡張をインストールしていることを確認します。

    az extension add --name azure-iot
    
  2. 次に、デスクトップで Azure CLI を使用している場合は、まずログインします。

    az login
    
  3. 複数のサブスクリプションがある場合は、使用するサブスクリプションを選択します。

    1. サブスクリプションを一覧表示します。

      az account list --output table
      
    2. 使用するサブスクリプションの SubscriptionID フィールドをコピーします。

    3. コピーした ID で、作業中のサブスクリプションを設定します。

      az account set -s <SubscriptionId>
      
  4. 新しいリソース グループを作成します (または、次の手順で既存のリソース グループを指定します)。

    az group create --name IoTEdgeResources --location westus2
    
  5. 新しい仮想マシンを作成します。

    passwordauthenticationType を使用するには、以下の例を参照してください。

    az deployment group create \
    --resource-group IoTEdgeResources \
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/1.4/edgeDeploy.json" \
    --parameters dnsLabelPrefix='my-edge-vm1' \
    --parameters adminUsername='<REPLACE_WITH_USERNAME>' \
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id <REPLACE_WITH_DEVICE-NAME> --hub-name <REPLACE-WITH-HUB-NAME> -o tsv) \
    --parameters authenticationType='password' \
    --parameters adminPasswordOrKey="<REPLACE_WITH_SECRET_PASSWORD>"
    

    SSH キーを使用して認証するには、sshPublicKeyauthenticationType を指定し、次に adminPasswordOrKey パラメーター中で SSH キーの値を指定します。 例として以下に表示します。

    #Generate the SSH Key
    ssh-keygen -m PEM -t rsa -b 4096 -q -f ~/.ssh/iotedge-vm-key -N ""
    
    #Create a VM using the iotedge-vm-deploy script
    az deployment group create \
    --resource-group IoTEdgeResources \
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/1.4/edgeDeploy.json" \
    --parameters dnsLabelPrefix='my-edge-vm1' \
    --parameters adminUsername='<REPLACE_WITH_USERNAME>' \
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id <REPLACE_WITH_DEVICE-NAME> --hub-name <REPLACE-WITH-HUB-NAME> -o tsv) \
    --parameters authenticationType='sshPublicKey' \
    --parameters adminPasswordOrKey="$(< ~/.ssh/iotedge-vm-key.pub)"
    
  6. デプロイが正常に完了したことを確認します。 仮想マシン リソースが、選択したリソース グループにデプロイされている必要があります。 マシン名をメモしておきます。この名前は vm-0000000000000 の形式である必要があります。 また、関連 [DNS 名] をメモします。これは <dnsLabelPrefix>.<location>.cloudapp.azure.com 形式になっている必要があります。

    DNS 名 は、前の手順の JSON 形式の出力から取得できます。具体的には、[パブリック SSH] エントリの一部をなす [出力] セクション内から。 このエントリの値を使用して、新しくデプロイされたマシンに SSH できます。

    "outputs": {
      "public SSH": {
        "type": "String",
        "value": "ssh <adminUsername>@<DNS_Name>"
      }
    }
    

    DNS 名は、Azure portal 内に新しくデプロイされた仮想マシンの [概要] セクションから取得できます。

    Screenshot showing the dns name of the iotedge vm

  7. 設定後にこの VM に SSH 接続する場合は、以下のコマンドで、関連付けられている DNS 名を使用します。ssh <adminUsername>@<DNS_Name>

次のステップ

ランタイムがインストールされた IoT Edge デバイスがプロビジョニングされたら、次は IoT Edge モジュールをデプロイできます。

IoT Edge ランタイムを正常にインストールできない場合は、トラブルシューティングのページを調べてください。

IoT Edge の既存のインストールを最新バージョンに更新するには、「IoT Edge セキュリティ デーモンおよびランタイムの更新」を参照してください。

SSH またはその他の受信接続を使用して VM にアクセスするポートを開く場合は、Azure Virtual Machine のドキュメントの「Linux VM へのポートとエンドポイントを開く」のページを参照してください。