Sdílet prostřednictvím


Vícekrokové seřazené spuštění

Vícekrokové seřazené spouštění ve službě Azure Device Update pro IoT Hub umožňuje spouštět předinstalační a poinstalační úlohy při nasazení přeletové aktualizace. Tato funkce je součástí schématu manifestu aktualizace zařízení verze 4. Další informace naleznete v tématu Manifest aktualizace zařízení.

Vícekrokové seřazené spuštění může mít dva typy kroků, vložené kroky a referenční kroky. Vložený krok je instrukce, která spouští kód a je výchozím typem. Referenční krok je krok, který obsahuje identifikátor pro jinou aktualizaci.

Aktualizace nadřazených a podřízených aktualizací

Když manifest aktualizace odkazuje na jiný manifest aktualizace, označuje se manifest nejvyšší úrovně jako nadřazená aktualizace a manifest zadaný v kroku odkazu se nazývá podřízená aktualizace. Podřízená aktualizace nemůže obsahovat žádné referenční kroky, pouze vložené kroky. Služba Device Update toto omezení ověřuje při importu a pokud není splněná, aktualizace selže.

Vložené kroky v nadřazené aktualizaci

Agent Device Update použije vložené kroky zadané v nadřazené aktualizaci na hostitelské zařízení. Objekt ADUC_WorkflowData , který se předává obslužné rutině kroku, označovaný také jako obslužná rutina aktualizačního obsahu, neobsahuje žádná Selected Components data. Obslužná rutina pro tento typ kroku by neměla být obslužnou rutinou Component-Aware .

Obslužná rutina obsahu agenta Device Update používá IsInstalled logiku ověřování pro každý krok. Obslužná rutina kroku zkontroluje, jestli je aktualizace již nainstalovaná, a zkontroluje, jestli IsInstalled() vrací kód 900výsledku nebo true, a pomocí tohoto výsledku určí, jestli se má tento krok provést. Aby se zabránilo přeinstalaci aktualizace, která už je na zařízení, agent Device Update přeskočí budoucí kroky, pokud už je aktualizace nainstalovaná.

Pokud chcete nahlásit výsledek aktualizace, zapište výsledek spuštění obslužné rutiny kroku do ADUC_Result struktury v požadovaném výsledném souboru, jak je uvedeno v --result-file možnosti. Na základě výsledků provádění se vrátíte 0 k úspěchu a vrácení -1 nebo 0xFF k závažné chybě.

Další informace naleznete v části Obslužné rutiny kroku a postup implementace vlastní obslužné rutiny obsahu pracující s komponentami.

Referenční kroky v nadřazené aktualizaci

Agent Device Update použije referenční kroky zadané v nadřazené aktualizaci na komponenty v hostitelském zařízení nebo připojeném k němu. Když zpracovává referenční krok, obslužná rutina kroku stáhne odpojený soubor manifestu aktualizace zadaný v kroku a ověří integritu souboru.

Obslužná rutina kroku pak parsuje podřízený aktualizační manifest a vytvoří objekt, označovaný také jako podřízená ADUC_Workflow data pracovního postupu, a to zkombinováním dat z podřízeného manifestu aktualizace a informací o adrese URL souboru z nadřazeného manifestu aktualizace. Tato podřízená data pracovního postupu mají vlastnost nastavenou level na 1.

Příklady

Následující příklad manifestu aktualizace má jeden vložený krok:

{
    "updateId": {...},
    "isDeployable": true,
    "compatibility": [
        {
            "manufacturer": "du-device",
            "model": "e2e-test"
        }
    ],
    "instructions": {
        "steps": [
            {
                "description": "Example APT update that installs libcurl4-doc on a host device.",
                "handler": "microsoft/apt:1",
                "files": [
                    "apt-manifest-1.0.json"
                ],
                "handlerProperties": {
                    "installedCriteria": "apt-update-test-1.0"
                }
            }
        ]
    },
    "manifestVersion": "4.0",
    "importedDateTime": "2021-11-16T14:54:55.8858676Z",
    "createdDateTime": "2021-11-16T14:50:47.3511877Z"
}

Následující příklad manifestu aktualizace má dva vložené kroky:

{
    "updateId": {...},
    "isDeployable": true,
    "compatibility": [
        {
            "manufacturer": "du-device",
            "model": "e2e-test"
        }
    ],
    "instructions": {
        "steps": [
            {
                "description": "Install libcurl4-doc on host device",
                "handler": "microsoft/apt:1",
                "files": [
                    "apt-manifest-1.0.json"
                ],
                "handlerProperties": {
                    "installedCriteria": "apt-update-test-2.2"
                }
            },
            {
                "description": "Install tree on host device",
                "handler": "microsoft/apt:1",
                "files": [
                    "apt-manifest-tree-1.0.json"
                ],
                "handlerProperties": {
                    "installedCriteria": "apt-update-test-tree-2.2"
                }
            }
        ]
    },
    "manifestVersion": "4.0",
    "importedDateTime": "2021-11-16T20:21:33.6514738Z",
    "createdDateTime": "2021-11-16T20:19:29.4019035Z"
}

Následující nadřazený manifest aktualizace obsahuje jeden referenční krok, který odkazuje na podřízenou aktualizaci:

{
    "updateId": {...},
    "isDeployable": true,
    "compatibility": [
        {
            "manufacturer": "du-device",
            "model": "e2e-test"
        }
    ],
    "instructions": {
        "steps": [
            {
                "type": "reference",
                "description": "Cameras Firmware Update",
                "updateId": {
                    "provider": "contoso",
                    "name": "virtual-camera",
                    "version": "1.2"
                }
            }
        ]
    },
    "manifestVersion": "4.0",
    "importedDateTime": "2021-11-17T07:26:14.7484389Z",
    "createdDateTime": "2021-11-17T07:22:10.6014567Z"
}

Podřízená aktualizace obsahuje vložené kroky.

{
    "updateId": {
        "provider": "contoso",
        "name": "virtual-camera",
        "version": "1.2"
    },
    "isDeployable": false,
    "compatibility": [
        {
            "group": "cameras"
        }
    ],
    "instructions": {
        "steps": [
            {
                "description": "Cameras Update - preinstall step",
                "handler": "microsoft/script:1",
                "files": [
                    "contoso-camera-installscript.sh"
                ],
                "handlerProperties": {
                    "scriptFileName": "contoso-camera-installscript.sh",
                    "arguments": "--pre-install-sim-success --component-name --component-name-val --component-group --component-group-val --component-prop path --component-prop-val path",
                    "installedCriteria": "contoso-virtual-camera-1.2-step-0"
                }
            },
            {
                "description": "Cameras Update - firmware installation (failure - missing file)",
                "handler": "microsoft/script:1",
                "files": [
                    "contoso-camera-installscript.sh",
                    "camera-firmware-1.1.json"
                ],
                "handlerProperties": {
                    "scriptFileName": "missing-contoso-camera-installscript.sh",
                    "arguments": "--firmware-file camera-firmware-1.1.json --component-name --component-name-val --component-group --component-group-val --component-prop path --component-prop-val path",
                    "installedCriteria": "contoso-virtual-camera-1.2-step-1"
                }
            },
            {
                "description": "Cameras Update - postinstall step",
                "handler": "microsoft/script:1",
                "files": [
                    "contoso-camera-installscript.sh"
                ],
                "handlerProperties": {
                    "scriptFileName": "contoso-camera-installscript.sh",
                    "arguments": "--post-install-sim-success --component-name --component-name-val --component-group --component-group-val --component-prop path --component-prop-val path",
                    "installedCriteria": "contoso-virtual-camera-1.2-step-2"
                }
            }
        ]
    },
    "referencedBy": [
        {
            "provider": "DU-Client-Eng",
            "name": "MSOE-Update-Demo",
            "version": "3.1"
        }
    ],
    "manifestVersion": "4.0",
    "importedDateTime": "2021-11-17T07:26:14.7376536Z",
    "createdDateTime": "2021-11-17T07:22:09.2232968Z",
    "etag": "\"ad7a553d-24a8-492b-9885-9af424d44d58\""
}

Poznámka:

Pokud použijete installedCriteria k určení, jestli se má krok provést, měli byste každému kroku dát jinou installedCriteria hodnotu v manifestu aktualizace.

Odpojené manifesty aktualizací

Aby se zabránilo selhání nasazení kvůli omezením velikosti dat dvojčete služby Azure IoT Hub, služba Device Update do zařízení doručuje velké manifesty aktualizací jako datové soubory JSON označované jako odpojené manifesty aktualizací. Při importu velké aktualizace obsahu do služby Device Update obsahuje vygenerovaný manifest aktualizace jiný soubor datové části s názvem Detached Update Manifest, který obsahuje úplná data manifestu aktualizace.

Vlastnost UpdateManifest v dvojčeti zařízení nebo modulu obsahuje informace o odpojených souborech manifestu aktualizace. Když zpracovává událost PnP PropertyChanged , agent Device Update automaticky stáhne odpojený soubor manifestu aktualizace a vytvoří ADUC_WorkflowData objekt, který obsahuje úplná data manifestu aktualizace.