Kurz: Nasazení připojeného registru do vnořené hierarchie IoT Edge

V tomto kurzu pomocí příkazů Azure CLI vytvoříte dvouvrstvou hierarchii zařízení Azure IoT Edge a nasadíte připojený registr jako modul v každé vrstvě. V tomto scénáři zařízení v horní vrstvě komunikuje s cloudovým registrem. Zařízení v dolní vrstvě komunikuje se svým připojeným nadřazeným objektem registru v horní vrstvě.

Přehled použití připojeného registru s IoT Edge najdete v tématu Použití připojeného registru s Azure IoT Edge.

Požadavky

  • Použijte prostředí Bash v Azure Cloud Shell. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shell.

  • Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Spuštění Azure CLI v kontejneru Dockeru.

    • Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.

    • Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.

    • Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.

  • Azure IoT Hub Postup nasazení najdete v tématu Vytvoření centra IoT pomocí Azure Portal.

  • Dva propojené prostředky registru v Azure Postup nasazení najdete v rychlých startech s využitím Azure CLI nebo Azure Portal.

    • U horní vrstvy může být připojený registr v režimu ReadWrite nebo ReadOnly. Tento článek předpokládá režim ReadWrite a název připojeného registru je uložen v proměnné $CONNECTED_REGISTRY_RWprostředí .
    • Pro nižší vrstvu musí být připojený registr v režimu Jen pro čtení. Tento článek předpokládá, že název připojeného registru je uložený v proměnné $CONNECTED_REGISTRY_ROprostředí .

Import imagí do cloudového registru

Pomocí příkazu az acr import naimportujte do svého cloudového registru následující image kontejnerů. Pokud jste už tyto image naimportovali, tento krok přeskočte.

Připojená image registru

Aby bylo možné podporovat vnořené IoT Edge scénáře, musí být image kontejneru pro modul runtime připojeného registru dostupná ve vašem privátním registru kontejneru Azure. Pomocí příkazu az acr import naimportujte image připojeného registru do privátního registru.

# Use the REGISTRY_NAME variable in the following Azure CLI commands to identify the registry
REGISTRY_NAME=<container-registry-name>

az acr import \
  --name $REGISTRY_NAME \
  --source mcr.microsoft.com/acr/connected-registry:0.8.0

IoT Edge a proxy image rozhraní API

Pokud chcete podporovat připojený registr na vnořených IoT Edge, musíte nasadit moduly pro IoT Edge a proxy rozhraní API. Importujte tyto image do privátního registru.

Modul proxy IoT Edge API umožňuje IoT Edge zařízení zveřejnit více služeb pomocí protokolu HTTPS na stejném portu, například 443.

az acr import \
  --name $REGISTRY_NAME \
  --source mcr.microsoft.com/azureiotedge-agent:1.2.4

az acr import \
  --name $REGISTRY_NAME \
  --source mcr.microsoft.com/azureiotedge-hub:1.2.4

az acr import \
  --name $REGISTRY_NAME \
  --source mcr.microsoft.com/azureiotedge-api-proxy:1.1.2

az acr import \
  --name $REGISTRY_NAME \
  --source mcr.microsoft.com/azureiotedge-diagnostics:1.2.4

Obrázek Hello-World

Pokud chcete otestovat připojený registr, naimportujte hello-world image. Toto úložiště bude synchronizováno do připojeného registru a vyžádáno klienty připojeného registru.

az acr import \
  --name $REGISTRY_NAME \
  --source mcr.microsoft.com/hello-world:1.1.2

Načtení konfigurace připojeného registru

Pokud chcete nasadit každý připojený registr do IoT Edge zařízení v hierarchii, musíte načíst nastavení konfigurace z připojeného prostředku registru v Azure. V případě potřeby spusťte příkaz az acr connected-registry get-settings pro každý připojený registr a načtěte konfiguraci.

Ve výchozím nastavení informace o nastavení nezahrnují heslo tokenu synchronizace , které je také potřeba k nasazení připojeného registru. Volitelně můžete vygenerovat jedno z hesel předáním parametru --generate-password 1 nebo --generate-password 2 . Uložte vygenerované heslo na bezpečné místo. Nelze ji znovu načíst.

Upozornění

Opětovné vygenerování hesla obmění přihlašovací údaje tokenu synchronizace. Pokud jste nakonfigurovali zařízení pomocí předchozího hesla, musíte konfiguraci aktualizovat.

# Use the REGISTRY_NAME variable in the following Azure CLI commands to identify the registry
REGISTRY_NAME=<container-registry-name>

# Run the command for each registry resource in the hierarchy

az acr connected-registry get-settings \
  --registry $REGISTRY_NAME \
  --name $CONNECTED_REGISTRY_RW \
  --parent-protocol https

az acr connected-registry get-settings \
  --registry $REGISTRY_NAME \
  --name $CONNECTED_REGISTRY_RO \
  --parent-protocol https

Výstup příkazu zahrnuje připojovací řetězec registru a související nastavení. Následující příklad výstupu ukazuje připojovací řetězec pro připojený registr myconnectedregistry s nadřazeným registrem contosoregistry:

{
  "ACR_REGISTRY_CONNECTION_STRING": "ConnectedRegistryName=myconnectedregistry;SyncTokenName=myconnectedregistry-sync-token;SyncTokenPassword=xxxxxxxxxxxxxxxx;ParentGatewayEndpoint=contosoregistry.eastus.data.azurecr.io;ParentEndpointProtocol=https"
}

Konfigurace manifestů nasazení

Manifest nasazení je dokument JSON, který popisuje, které moduly se mají nasadit do IoT Edge zařízení. Další informace najdete v tématu Vysvětlení způsobu použití, konfigurace a opakovaného použití modulů IoT Edge.

Pokud chcete nasadit modul připojeného registru na každé IoT Edge zařízení pomocí Azure CLI, uložte následující manifesty nasazení místně jako soubory JSON. Informace z předchozích částí použijte k aktualizaci relevantních hodnot JSON v každém manifestu. Při spuštění příkazu použijte cesty k souborům v následující části, aby se konfigurace použila na vaše zařízení.

Manifest nasazení pro horní vrstvu

Pro zařízení v horní vrstvě vytvořte soubor deploymentTopLayer.json manifestu nasazení s následujícím obsahem. Tento manifest se podobá manifestu použitému v rychlém startu: Nasazení připojeného registru do IoT Edge zařízení.

Poznámka

Pokud jste již pomocí tohoto rychlého startu nasadili připojený registr do nejvyšší vrstvy IoT Edge zařízení, můžete ho použít v horní vrstvě vnořené hierarchie. Upravte kroky nasazení v tomto kurzu a nakonfigurujte ho v hierarchii (nezobrazuje se).

Nastavení modulu připojeného registru

  • Pomocí přihlašovacích údajů tokenu a připojovacího řetězce z předchozích částí aktualizujte příslušné hodnoty JSON v env uzlu.

  • Následující proměnné prostředí jsou v env uzlu volitelné:

    Proměnná Popis
    ACR_REGISTRY_LOGIN_SERVER Určuje jedinečný název hostitele nebo plně kvalifikovaný název domény. Pokud se použije, přijímá připojený registr pouze požadavky na tuto hodnotu přihlašovacího serveru.

    Pokud není zadaná žádná hodnota, pak se k připojenému registru dostanete pomocí libovolné hodnoty přihlašovacího serveru.
    ACR_REGISTRY_CERTIFICATE_VOLUME Pokud bude váš připojený registr přístupný prostřednictvím protokolu HTTPS, odkazuje na svazek, ve kterém jsou uložené certifikáty HTTPS.

    Pokud není nastavené, výchozí umístění je /var/acr/certs.
    ACR_REGISTRY_DATA_VOLUME Přepíše výchozí umístění /var/acr/data , do kterého budou image uloženy připojeným registrem.

    Toto umístění musí odpovídat vazbě svazku pro kontejner.

    Důležité

    Pokud připojený registr naslouchá na portu jiném než 80 a 443, ACR_REGISTRY_LOGIN_SERVER musí hodnota (pokud je zadána) obsahovat port. Příklad: 192.168.0.100:8080.

  • Pokud HostPort se nepoužívá modul proxy rozhraní API, měla by se nastavit vazba pro připojený registr. Příklad:

     "createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\"],\"PortBindings\":{\"8080/tcp\":[{\"HostPort\":\"8080\"}]}}}"
    

Nastavení modulu proxy rozhraní API

  • Proxy rozhraní API bude naslouchat na portu 8000 nakonfigurovaného jako NGINX_DEFAULT_PORT. Další informace o nastavení proxy serveru rozhraní API najdete v úložišti IoT Edge GitHubu.
{
    "modulesContent": {
        "$edgeAgent": {
            "properties.desired": {
                "modules": {
                    "connected-registry": {
                        "settings": {
                            "image": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io/acr/connected-registry:0.8.0",
                            "createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\"]}}"
                        },
                        "type": "docker",
                        "env": {
                            "ACR_REGISTRY_CONNECTION_STRING": {
                                "value": "ConnectedRegistryName=<REPLACE_WITH_CONNECTED_REGISTRY_NAME>;SyncTokenName=<REPLACE_WITH_SYNC_TOKEN_NAME>;SyncTokenPassword=REPLACE_WITH_SYNC_TOKEN_PASSWORD;ParentGatewayEndpoint=<REPLACE_WITH_CLOUD_REGISTRY_NAME>.<REPLACE_WITH_CLOUD_REGISTRY_REGION>.data.azurecr.io;ParentEndpointProtocol=https"
                            }
                        },
                        "status": "running",
                        "restartPolicy": "always",
                        "version": "1.0"
                    },
                    "IoTEdgeAPIProxy": {
                        "settings": {
                            "image": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io/azureiotedge-api-proxy:1.1.2",
                            "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8000/tcp\":[{\"HostPort\":\"8000\"}]}}}"
                        },
                        "type": "docker",
                        "env": {
                            "NGINX_DEFAULT_PORT": {
                                "value": "8000"
                            },
                            "CONNECTED_ACR_ROUTE_ADDRESS": {
                                "value": "connected-registry:8080"
                            },
                            "BLOB_UPLOAD_ROUTE_ADDRESS": {
                                "value": "AzureBlobStorageonIoTEdge:11002"
                            }
                        },
                        "status": "running",
                        "restartPolicy": "always",
                        "version": "1.0"
                    }
                },
                "runtime": {
                    "settings": {
                        "minDockerVersion": "v1.25",
                        "registryCredentials": {
                            "cloudregistry": {
                                "address": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io",
                                "password": "<REPLACE_WITH_SYNC_TOKEN_PASSWORD>",
                                "username": "<REPLACE_WITH_SYNC_TOKEN_NAME>"
                            }
                        }
                    },
                    "type": "docker"
                },
                "schemaVersion": "1.1",
                "systemModules": {
                    "edgeAgent": {
                        "settings": {
                            "image": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io/azureiotedge-agent:1.2.4",
                            "createOptions": ""
                        },
                        "type": "docker",
                        "env": {
                            "SendRuntimeQualityTelemetry": {
                                "value": "false"
                            }
                        }
                    },
                    "edgeHub": {
                        "settings": {
                            "image": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io/azureiotedge-hub:1.2.4",
                            "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
                        },
                        "type": "docker",
                        "status": "running",
                        "restartPolicy": "always"
                    }
                }
            }
        },
        "$edgeHub": {
            "properties.desired": {
                "routes": {
                    "route": "FROM /messages/* INTO $upstream"
                },
                "schemaVersion": "1.1",
                "storeAndForwardConfiguration": {
                    "timeToLiveSecs": 7200
                }
            }
        }
    }
}

Manifest nasazení pro nižší vrstvu

Pro zařízení v nižší vrstvě vytvořte soubor manifestu nasazení deploymentLowerLayer.json s následujícím obsahem.

Soubor nasazení ve spodní vrstvě se celkově podobá souboru nasazení nejvyšší vrstvy. Rozdíly jsou:

  • Načítá požadované image z registru připojeného k nejvyšší vrstvě, a ne z cloudového registru.

    Při nastavování registru připojeného k nejvyšší vrstvě se ujistěte, že místně synchronizuje všechny požadované image, včetně azureiotedge-agent, azureiotedge-hubazureiotedge-api-proxy, a acr/connected-registry. Zařízení IoT nižší vrstvy musí tyto image načíst z registru připojeného k nejvyšší vrstvě.

  • K ověření registru připojeného k nejvyšší vrstvě používá synchronizační token nakonfigurovaný ve spodní vrstvě.

  • Nakonfiguruje koncový bod nadřazené brány s IP adresou nebo plně kvalifikovaným názvem domény registru připojeného k nejvyšší vrstvě místo plně kvalifikovaného názvu domény cloudového registru.

Důležité

V následujícím manifestu nasazení se používá jako IP adresa nebo plně kvalifikovaný název domény zařízení, $upstream které je hostitelem nadřazeného připojeného registru. Proměnná prostředí ale $upstream nepodporuje. Připojený registr musí přečíst proměnnou ACR_PARENT_GATEWAY_ENDPOINT prostředí, aby získal koncový bod nadřazené brány. Místo použití $upstreampodporuje připojený registr dynamický překlad IP adresy nebo plně kvalifikovaného názvu domény z jiné proměnné prostředí.

Na vnořeném IoT Edge je ve spodní vrstvě proměnná $IOTEDGE_PARENTHOSTNAME prostředí, která se rovná IP adrese nebo plně kvalifikovanému názvu domény nadřazeného zařízení. Ručně nahraďte proměnnou prostředí jako hodnotu ParentGatewayEndpoint v připojovacím řetězci, abyste se vyhnuli pevnému kódování nadřazené IP adresy nebo plně kvalifikovaného názvu domény. Vzhledem k tomu, že nadřazené zařízení v tomto příkladu běží nginx na portu 8000, předejte .$IOTEDGE_PARENTHOSTNAME:8000 Musíte také vybrat správný protokol v ParentEndpointProtocolnástroji .

{
    "modulesContent": {
        "$edgeAgent": {
            "properties.desired": {
                "modules": {
                    "connected-registry": {
                        "settings": {
                            "image": "$upstream:8000/acr/connected-registry:0.8.0",
                            "createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\"]}}"
                        },
                        "type": "docker",
                        "env": {
                            "ACR_REGISTRY_CONNECTION_STRING": {
                                "value": "ConnectedRegistryName=<REPLACE_WITH_CONNECTED_REGISTRY_NAME>;SyncTokenName=<REPLACE_WITH_SYNC_TOKEN_NAME>;SyncTokenPassword=<REPLACE_WITH_SYNC_TOKEN_PASSWORD>;ParentGatewayEndpoint=$IOTEDGE_PARENTHOSTNAME:8000;ParentEndpointProtocol=https"
                            }
                        },
                        "status": "running",
                        "restartPolicy": "always",
                        "version": "1.0"
                    },
                    "IoTEdgeApiProxy": {
                        "settings": {
                            "image": "$upstream:8000/azureiotedge-api-proxy:1.1.2",
                            "createOptions": "{\"HostConfig\": {\"PortBindings\": {\"8000/tcp\": [{\"HostPort\": \"8000\"}]}}}"
                        },
                        "type": "docker",
                        "version": "1.0",
                        "env": {
                            "NGINX_DEFAULT_PORT": {
                                "value": "8000"
                            },
                            "CONNECTED_ACR_ROUTE_ADDRESS": {
                                "value": "connected-registry:8080"
                            },
                            "NGINX_CONFIG_ENV_VAR_LIST": {
                                    "value": "NGINX_DEFAULT_PORT,BLOB_UPLOAD_ROUTE_ADDRESS,CONNECTED_ACR_ROUTE_ADDRESS,IOTEDGE_PARENTHOSTNAME,DOCKER_REQUEST_ROUTE_ADDRESS"
                            },
                            "BLOB_UPLOAD_ROUTE_ADDRESS": {
                                "value": "AzureBlobStorageonIoTEdge:11002"
                            }
                        },
                        "status": "running",
                        "restartPolicy": "always",
                        "startupOrder": 3
                    }
                },
                "runtime": {
                    "settings": {
                        "minDockerVersion": "v1.25",
                        "registryCredentials": {
                            "connectedregistry": {
                                "address": "$upstream:8000",
                                "password": "<REPLACE_WITH_SYNC_TOKEN_PASSWORD>",
                                "username": "<REPLACE_WITH_SYNC_TOKEN_NAME>"
                            }
                        }
                    },
                    "type": "docker"
                },
                "schemaVersion": "1.1",
                "systemModules": {
                    "edgeAgent": {
                        "settings": {
                            "image": "$upstream:8000/azureiotedge-agent:1.2.4",
                            "createOptions": ""
                        },
                        "type": "docker",
                        "env": {
                            "SendRuntimeQualityTelemetry": {
                                "value": "false"
                            }
                        }
                    },
                    "edgeHub": {
                        "settings": {
                            "image": "$upstream:8000/azureiotedge-hub:1.2.4",
                            "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
                        },
                        "type": "docker",
                        "status": "running",
                        "restartPolicy": "always"
                    }
                }
            }
        },
        "$edgeHub": {
            "properties.desired": {
                "routes": {
                    "route": "FROM /messages/* INTO $upstream"
                },
                "schemaVersion": "1.1",
                "storeAndForwardConfiguration": {
                    "timeToLiveSecs": 7200
                }
            }
        }
    }
}

Nastavení a nasazení připojených modulů registru

Následující kroky jsou přizpůsobené kurzu: Vytvoření hierarchie IoT Edge zařízení a jsou specifické pro nasazení připojených modulů registru v hierarchii IoT Edge. Podrobnosti o jednotlivých krocích najdete v tomto kurzu.

Vytvoření zařízení s horní a nižší vrstvou

Vytvořte virtuální počítače s nejvyšší a nižší vrstvou pomocí existující šablony ARM. Šablona také nainstaluje agenta IoT Edge. Pokud místo toho chcete nasazení provést z vlastních zařízení, přečtěte si kurz: Instalace nebo odinstalace Azure IoT Edge pro Linux, kde se dozvíte, jak zařízení nastavit ručně.

Důležité

Pokud chcete později získat přístup k modulům nasazeným na zařízení s horní vrstvou, ujistěte se, že jste otevřeli následující porty pro příchozí spojení: 8000, 443, 5671, 8883. Postup konfigurace najdete v tématu Otevření portů pro virtuální počítač pomocí Azure Portal.

Vytvoření a konfigurace hierarchie

Pomocí nástroje iotedge-config vytvořte a nakonfigurujte hierarchii pomocí následujících kroků v Azure CLI nebo Azure Cloud Shell:

  1. Stáhněte si konfigurační nástroj.

     mkdir nested_iot_edge_tutorial
     cd ~/nested_iot_edge_tutorial
     wget -O iotedge_config.tar "https://github.com/Azure-Samples/iotedge_config_cli/releases/download/latest/iotedge_config_cli.tar.gz"
     tar -xvf iotedge_config.tar
    

    Tento krok vytvoří iotedge_config_cli_release složku v adresáři kurzu. Soubor šablony použitý k vytvoření hierarchie zařízení je soubor, který iotedge_config.yaml se nachází v ~/nested_iot_edge_tutorial/iotedge_config_cli_release/templates/tutorialsouboru . Ve stejném adresáři jsou dva manifesty nasazení pro horní a dolní vrstvu: deploymentTopLayer.json a deploymentLowerLayer.json soubory.

  2. Upravte iotedge_config.yaml pomocí svých informací. iothub_hostnameUpravte názvy manifestů nasazení , iot_name, pro horní a nižší vrstvu a přihlašovací údaje tokenu klienta, které jste vytvořili pro načítání imagí z upstreamu z každé vrstvy. Následující příklad je ukázkový konfigurační soubor:

    config_version: "1.0"
    
    iothub:
        iothub_hostname: <REPLACE_WITH_HUB_NAME>.azure-devices.net
        iothub_name: <REPLACE_WITH_HUB_NAME>
        ## Authentication method used by IoT Edge devices: symmetric_key or x509_certificate
        authentication_method: symmetric_key 
    
        ## Root certificate used to generate device CA certificates. Optional. If not provided a self-signed CA will be generated
        # certificates:
        #   root_ca_cert_path: ""
        #   root_ca_cert_key_path: ""
    
        ## IoT Edge configuration template to use
    configuration:
        template_config_path: "./templates/tutorial/device_config.toml"
        default_edge_agent: "$upstream:8000/azureiotedge-agent:1.2.4"
    
        ## Hierarchy of IoT Edge devices to create
    edgedevices:
        device_id: top-layer
        edge_agent: "<REPLACE_WITH_REGISTRY_NAME>.azurecr.io/azureiotedge-agent:1.2.4" ## Optional. If not provided, default_edge_agent will be used
        deployment: "./templates/tutorial/deploymentTopLayer.json" ## Optional. If provided, the given deployment file will be applied to the newly created device
            # hostname: "FQDN or IP" ## Optional. If provided, install.sh will not prompt user for this value nor the parent_hostname value
        container_auth: ## The token used to pull the image from cloud registry
            serveraddress: "<REPLACE_WITH_REGISTRY_NAME>.azurecr.io"
            username: "<REPLACE_WITH_SYNC_TOKEN_NAME_FOR_TOP_LAYER>"
            password: "<REPLACE_WITH_SYNC_TOKEN_PASSWORD_FOR_TOP_LAYER>"
        child:
            - device_id: lower-layer
              deployment: "./templates/tutorial/deploymentLowerLayer.json" ## Optional. If provided, the given deployment file will be applied to the newly created device
               # hostname: "FQDN or IP" ## Optional. If provided, install.sh will not prompt user for this value nor the parent_hostname value
              container_auth: ## The token used to pull the image from parent connected registry
                serveraddress: "$upstream:8000"
                username: "<REPLACE_WITH_SYNC_TOKEN_NAME_FOR_LOWER_LAYER>"
                password: "<REPLACE_WITH_SYNC_TOKEN_PASSWORD_FOR_LOWER_LAYER>"
    
  3. Připravte soubory nasazení horní vrstvy a nižší vrstvy: deploymentTopLayer.json a deploymentLowerLayer.json. Zkopírujte soubory manifestu nasazení , které jste vytvořili dříve v tomto článku, do následující složky: ~/nestedIotEdgeTutorial/iotedge_config_cli_release/templates/tutorial.

  4. Přejděte do adresáře iotedge_config_cli_release a spuštěním nástroje vytvořte hierarchii IoT Edge zařízení.

    cd ~/nestedIotEdgeTutorial/iotedge_config_cli_release
    ./iotedge_config --config ~/nestedIotEdgeTutorial/iotedge_config_cli_release/templates/tutorial/iotedge_config.yaml --output ~/nestedIotEdgeTutorial/iotedge_config_cli_release/outputs -f
    

    Pomocí parametru --output nástroj vytvoří certifikáty zařízení, sady certifikátů a soubor protokolu v adresáři podle vašeho výběru. Pomocí parametru -f nástroj automaticky vyhledá existující IoT Edge zařízení v IoT Hub a odebere je, aby se zabránilo chybám a zachovalo se centrum v čistotě.

    Nástroj může běžet několik minut.

  5. Zkopírujte vygenerované top-layer.zip a lower-layer.zip soubory vygenerované v předchozím kroku do odpovídajících virtuálních počítačů s nejvyšší a nižší vrstvou pomocí scp:

    scp <PATH_TO_CONFIGURATION_BUNDLE>   <USER>@<VM_IP_OR_FQDN>:~
    
  6. Připojte se k zařízení nejvyšší vrstvy a nainstalujte konfigurační sadu.

    1. Rozbalte konfigurační sadu. Nejdřív budete muset nainstalovat zip.

      sudo apt install zip
      unzip ~/<PATH_TO_CONFIGURATION_BUNDLE>/<CONFIGURATION_BUNDLE>.zip #unzip top-layer.zip
      
    2. Spusťte sudo ./install.sh. Zadejte IP adresu nebo název hostitele. Doporučujeme použít IP adresu.

    3. Spuštěním příkazu sudo iotedge list ověřte, že jsou všechny moduly spuštěné.

  7. Připojte se k zařízení s nižší vrstvou a nainstalujte konfigurační sadu.

    1. Rozbalte konfigurační sadu. Nejdřív budete muset nainstalovat zip.

      sudo apt install zip
      unzip ~/<PATH_TO_CONFIGURATION_BUNDLE>/<CONFIGURATION_BUNDLE>.zip #unzip lower-layer.zip
      
    2. Spusťte sudo ./install.sh. Zadejte IP adresy zařízení a nadřazené IP adresy nebo názvy hostitelů. Doporučujeme použít IP adresy.

    3. Spuštěním příkazu sudo iotedge list ověřte, že jsou všechny moduly spuštěné.

Pokud jste nezadali soubor nasazení pro konfiguraci zařízení nebo pokud dojde k problémům s nasazením, jako je neplatný manifest nasazení na zařízení s horní nebo nižší vrstvou, nasaďte moduly ručně. Viz následující část.

Ruční nasazení modulu připojeného registru

Pomocí následujícího příkazu nasaďte modul připojeného registru ručně na IoT Edge zařízení:

az iot edge set-modules \
  --device-id <device-id> \
  --hub-name <hub-name> \
  --content <deployment-manifest-filename>

Podrobnosti najdete v tématu Nasazení modulů Azure IoT Edge pomocí Azure CLI.

Po úspěšném nasazení se v připojeném registru zobrazí stav Online.

Ke kontrole stavu připojeného registru použijte následující příkaz az acr connected-registry show :

az acr connected-registry show \
  --registry $REGISTRY_NAME \
  --name $CONNECTED_REGISTRY_RO \
  --output table

Možná budete muset několik minut počkat, než se nasazení připojeného registru dokončí.

Po úspěšném nasazení se v připojeném registru zobrazí stav Online.

Pokud chcete vyřešit potíže s nasazením, spusťte iotedge check na ovlivněném zařízení. Další informace naleznete v tématu Poradce při potížích.

Další kroky

V tomto rychlém startu jste zjistili, jak nasadit připojený registr do vnořeného IoT Edge zařízení. V dalším průvodci se dozvíte, jak načíst image z nově nasazeného připojeného registru.