Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
La versione 1.0.3 (pubblicata 28 giugno 2022) include modifiche di rilievo ai nomi dei membri che potrebbero influire sugli utenti esistenti. Per altre informazioni, vedere: I nomi dei membri passano da PascalCase a camelCase nella versione 1.0.3
Destinatari e ambito
Questo articolo è progettato per supportare le persone che effettuano il provisioning o la gestione dei dispositivi con Azure IoT. Se questo non è simile a te, prendere in considerazione Destinatari per la documentazione di OSConfig.
Questo articolo descrive come ottenere lo stato di Gestione pacchetti e impostare lo stato desiderato di Gestione pacchetti. Ad esempio:
| Funzionalità | Casi d'uso |
|---|---|
| Assicurarsi che i gestori pacchetti eseggono dall'origine desiderata | • I criteri operativi sono che i gestori dei pacchetti di dispositivi devono eseguire il pull da un repository di pacchetti privati con versioni approvate di librerie e componenti • È necessario che i dispositivi ottengano pacchetti dal repository di un fornitore specifico |
| Informare i gestori pacchetti dei pacchetti desiderati | • I criteri operativi sono che i dispositivi devono avere un pacchetto specifico come "library-XYZ-v2" • I criteri operativi sono che i dispositivi devono avere un grafico di dipendenza specifico dei pacchetti |
| Confrontare il pacchetto dei dispositivi o elenchi di origini |
• I criteri operativi sono che l'elenco dei pacchetti installati dai dispositivi distribuiti deve corrispondere a un dispositivo valido noto |
Se si è qui per informazioni di riferimento anziché esempi di casi d'uso interattivi, è possibile passare alla sezione di riferimento.
Importante
A questo punto, le distribuzioni basate su apt, tra cui Debian e Ubuntu sono nell'ambito. Per sviluppare il supporto per le distribuzioni basate su RPM, vedere la documentazione sull'estendibilità.
In un ambiente senza apt (ad esempio, la compilazione dall'origine e l'esecuzione in una distribuzione della famiglia Red Hat), è possibile che vengano visualizzati i messaggi di log seguenti che indicano che il modulo PackageManagerConfiguration non è applicabile.
- In osconfig_pmc.log le righe includono il testo seguente:
[ERROR] Cannot run on this platform, could not find required tool apt-get - In osconfig_pnp_agent.log le righe includono il testo seguente:
[ERROR] PackageManagerConfiguration.state: MpiGet failed with 500
Esempi di casi d'uso
Questi esempi possono fungere da punti di partenza per adattarsi all'ambiente univoco.
Prerequisiti per provare gli esempi nei sistemi in tempo reale
Se si usa questo articolo per informazioni di riferimento, non sono presenti prerequisiti. È possibile esaminare gli esempi, copiare i nomi delle proprietà e così via.
Per provare gli esempi nei sistemi live (consigliato), seguire questa procedura:
Creare un account Azure gratuito o usare un account esistente
Connettere almeno un dispositivo abilitato per OSConfig a un hub IoT
Suggerimento
Per creare facilmente un hub IoT con dispositivi collegati (virtuali), vedere Creare un ambiente lab OSConfig (con Azure IoT) in 5 minuti
Iniziare a seguire l'istruzione portale di Azure o le istruzioni dell'interfaccia della riga di comando di Azure negli esempi:
Se si preferisce usare la portale di Azure
- Accedere alla pagina Panoramica del portale di Azure e accedere alla pagina Panoramica dell'hub IoT
-OR- Se si preferisce usare l'interfaccia della riga di comando di Azure
- CONSIGLIATO: usare Azure Cloud Shell come ambiente bash accedendo al portale di Azure, quindi avviando Azure Cloud Shell in modalità bash
- ALTERNATIVA: se si preferisce usare un ambiente bash personalizzato anziché Cloud Shell, installare l'interfaccia della riga di comando di Azure e accedere
- Verificare che l'estensione Azure IoT sia pronta eseguendo
az extension add --name azure-iot
Esempio 1. Specificare le origini del pacchetto desiderate
In questo esempio viene illustrato il flusso di lavoro azure IoT per assicurarsi che i dispositivi usino, come una delle relative origini del pacchetto, il canale packages.microsoft.com prod per Ubuntu 18.04. È possibile adattare questo esempio per usare qualsiasi origine del pacchetto. Ad esempio, un repository pubblico di distribuzione/versione diverso, un determinato repository del fornitore o un repository privato curato.
Le istruzioni sono disponibili nei tipi di portale, interfaccia della riga di comando, dispositivo specifico e provisioning e gestione su larga scala.
- Portale: dispositivo specifico
- Portale: su larga scala
- Interfaccia della riga di comando: dispositivo specifico
- Interfaccia della riga di comando: su larga scala
Dalla pagina del portale di hub IoT passare al gemello OSConfig per il dispositivo che si vuole gestire e aggiungere il codice seguente alla
properties.desiredsezione, seguito da una virgola per separarla dall'elemento successivo inproperties.desired."PackageManagerConfiguration": { "desiredState": { "gpgKeys": { "pkgs-msft_key": "https://packages.microsoft.com/keys/microsoft.asc" }, "sources": { "pkgs-msft_insiders-slow": "deb [arch=amd64,armhf,arm64 signed-by=pkgs-msft_key] https://packages.microsoft.com/ubuntu/18.04/prod insiders-slow main" }, "packages": [ ] } }
L'esempio 1 riguardava la definizione di una nuova origine del pacchetto. Per la creazione di report sullo stesso, continuare con l'esempio 2.
Esempio 2. Report sullo stato e la configurazione di Gestione pacchetti
In questo esempio verrà visualizzato un report su:
- Quali origini pacchetti sono state aggiunte
- Indica se i dispositivi riscontrano errori packageManagerConfiguration
- Portale: dispositivo specifico
- Portale: su larga scala
- Interfaccia della riga di comando: dispositivo specifico
- Interfaccia della riga di comando: su larga scala
Nell'esempio 1 precedente è stato aggiunto un valore PackageManagerConfiguration desiderato al modulo OSConfig gemello di un dispositivo specifico. È ora possibile osservare i risultati.
Attendere 1 minuto (per le comunicazioni di rete, l'attività sul lato dispositivo e così via) dopo aver aggiunto l'oggetto PackageManagerConfiguration desiderato nell'esempio precedente
Nello stesso modulo OSConfig del dispositivo gemello passare alle proprietà, quindi segnalato, quindi PackageManagerConfiguration, quindi stato.
Verrà visualizzato lo stato più recente della configurazione di Gestione pacchetti.
sourcesFileNamesdeve riflettere i due canali aggiuntiexecutionStatusdeve essere 2. Per i valori possibili, vedere la documentazione di estendibilità
Informazioni di riferimento
Descrizione del modello a oggetti
In questa sezione vengono descritte le proprietà dei dispositivi gemelli e i comportamenti corrispondenti.
È utile comprendere che in Azure IoT sono disponibili due modelli mentali o prospettive per descrivere il contenuto dei dispositivi gemelli.
Prospettiva desiderata/segnalata normale
Si tratta del modello a oggetti principale hub IoT. Viene usato dal servizio query hub IoT, dal servizio configurazioni hub IoT,
az iot hub module-twindai comandi e dalle visualizzazioni dei gemelli semplici nel portale di Azure e in IoT Explorer.Prospettiva avanzata del linguaggio DTDL (Digital Twin Definition Language)
DTDL (con modelli corrispondenti, tra cui Azure Plug and Play IoT [PnP]) consente alle app e ai servizi di prevedere, convalidare e migliorare la contestualizzazione del contenuto gemello. Viene usata dalle visualizzazioni PnP in IoT Explorer, dal servizio Gemelli digitali di Azure e potenzialmente dalla soluzione cloud durante l'interazione con hub IoT.
Nella maggior parte dei casi di seguito non è necessaria alcuna distinzione. Ad esempio, "gpgKeys" è denominato "gpgKeys" in entrambi i punti di vista.
In alcuni casi, può essere utile una distinzione. Ad esempio, i valori path indicati di seguito. In questi casi, viene prima fornita la descrizione desiderata/segnalata normale, seguita da una prospettiva avanzata DTDL tra parentesi.
desiredState (input dall'amministratore)
Percorso:
properties.desired.PackageManagerConfiguration.desiredState(DTDL:PackageManagerConfigurationcomponente -->desiredStateproprietà scrivibile)Descrizione: input dall'amministratore; consente l'aggiunta di origini e pacchetti di pacchetti ai dispositivi
Members
Nome Type Note sources mappa di sourceName:sourceDescriptorcoppie (stringhe)Per ogni coppia nel dizionario:
•sourceNameè un identificatore specificato dall'amministratore, ad esempio:*my-source-foo*
•sourceDescriptorè una stringa di definizione di origine nel formato utilizzato dalla gestione pacchetti, ad esempio:deb [arch=amd64,armhf,arm64 signed-by=my-repo-key] https://packages.microsoft.com/ubuntu/18.04/prod focal main
• All'internosourceDescriptordel valore passato asigned-by=deve essere il nome di una chiave dagpgKeys(descritto di seguito); ad esempio: signed-by=my-source-foo-key
• Quando si aggiunge o si modifica un'origine, un file in sources.list.d verrà popolato (sovrascrivendo il file esistente, se presente) con il descrittore di origine
• Per specificare che i dispositivi non devono usare una determinata origine (presupponendo che sia stata definita in precedenza in sources.list.d, non altrove nel sistema), includere una coppia come"my-source-bar": ""; Se esiste un file denominato my-source-bar.list in sources.list.d , verrà rimosso
• Se non è più necessario usare una direttiva ( ad esempio, my-source-bar non è più rilevante dopo un certo periodo di tempo), è possibile rimuoverlo dal gemello desiderato modificando il valore da "my-source-bar": "" a "my-source-bar": nullgpgKeys mappa di key-name:uricoppie (stringhe)Usato per informare il pacchetto
responsabile delle chiavi pubbliche del repository;
Per ogni coppia nel dizionario:
•key-nameè un identificatore specificato dall'amministratore, ad esempio my-repo-foo-key, a cui viene fatto riferimento dasigned-byinsources
•uriè la posizione della chiave pubblica di un repository, ad esempio:https://packages.microsoft.com/keys/microsoft.asc
• La chiave viene aggiunta come file a /usr/share/keyrings/; Si noti che per assicurarsi che l'applicabilità della chiave sia con ambito, viene usato questo percorso non specifico di apt; apt applicherà solo la chiave alle origini che sono associate in modo esplicito (tramitesigned-by
• Per rimuovere un file di chiave da /usr/share/keyrings impostatokey-namein modo che corrisponda al nome del file (senza estensione) e impostato suuri""packages matrice di identificatori di pacchetto (stringhe) • Indica a Gestione pacchetti di assicurarsi che questi pacchetti siano installati
• Analogo a apt install <package names> on Debian
• Additivi (non distruttivi) in natura; Ad esempio, un elenco vuoto significa "non eseguire alcuna operazione" (non "disinstallare tutti i pacchetti nel sistema")Payload di esempio (come illustrato nella sezione del
properties.desiredgemello di un hub IoT gemello)"PackageManagerConfiguration": { "desiredState": { "gpgKeys": { "pkgs-msft_key": "https://packages.microsoft.com/keys/microsoft.asc" }, "sources": { "pkgs-msft_insiders-slow": "deb [arch=amd64,armhf,arm64 signed-by=pkgs-msft_key] https://packages.microsoft.com/ubuntu/18.04/prod insiders-slow main" }, "packages": [ "cowsay" ] } }
state
Percorso:
properties.reported.PackageManagerConfiguration.state(prospettiva DTDL:PackageManagerConfigurationcomponente -->stateproprietà di sola lettura)Descrizione: PackageManagerConfiguration state as reported by the device
Members
Nome Type Note packagesFingerprint string • Impronta digitale opaca per l'elenco di tutti i pacchetti installati nel dispositivo (non limitati ai pacchetti a cui si fa riferimento in desiredState.packages)
• Usato per confrontare un numero elevato di dispositivi con un dispositivo valido notopackages matrice di identificatori di pacchetto (stringhe) • Nome e stato (versione o "non riuscita") dei pacchetti specificati dall'amministratore da desiredState.packages
• Se un pacchetto è stato installato correttamente, il nome è seguito dal numero di versione installato
• Se non è stato possibile installare un pacchetto, il nome è seguito da "failed"sourcesFingerprint string • Impronta digitale opaca delle origini dei pacchetti usate dal dispositivo
• Usato per confrontare un numero elevato di dispositivi con un dispositivo valido notosourcesFilenames matrice di nomi di file (stringhe) • Elenco di origini dei pacchetti (come nomi di file, ad esempio my-repo.list) che sono stati aggiunti alla gestione pacchetti tramite /etc/apt/sources.list.d (in Debian)
• Include tutte le fonti presenti, indipendentemente dal fatto che siano state aggiunte tramitedesiredState.sourcesexecutionState INT • Stato complessivo di esito positivo/guasto
• I valori nominale sono 0 (stato iniziale, non è stato specificato desiredState) o 2 (completato)
• Per altri valori, vedere: documentazione di estendibilitàexecutionSubstate INT • Per i valori possibili, vedere: documentazione dell'estendibilità executionSubstateDetails string • Informazioni aggiuntive per la risoluzione dei problemi Payload di esempio (come illustrato nella sezione del
properties.reportedgemello)"PackageManagerConfiguration": { "state": { "packagesFingerprint": "9e7a85de3d067474e3621d7e1618f6ac0e2e8fc6cb9d60ee92af9927294114d3", "packages": [ "cowsay=3.03+dfsg2-7" ], "executionState": 2, "executionSubstate": 0, "executionSubstateDetails": "", "sourcesFingerprint": "64b7de49c2be4ef2c180e4a978300fbb7b8a743a89e4038ba7ac6a91c31b625f", "sourcesFilenames": [ "pkgs-msft_insiders-slow.list" ] } }
desiredState (segnalato; riconoscimento dal dispositivo)
Percorso: (prospettiva DTDL:
properties.reported.PackageManagerConfiguration.desiredStatePackageManagerConfigurationcomponente --> Parte ACK delladesiredStateproprietà scrivibile)Descrizione: questo elemento segnalato aggiuntivo è un riconoscimento dal dispositivo; per gli strumenti di amministrazione e la creazione di report,
stateabilitando la toolchain di amministrazione per determinare se il dispositivo ha ancora ricevuto la finalità di amministratore acquisita nell'amministratore-writable/desideratodesiredStateMembers
Nome Type Note Valore object • Deve eseguire il mirroring properties.desired.PackageManagerConfiguration.desiredStateac INT • Indica l'esito positivo (valore 200) o l'errore (valore 400) del dispositivo che riceve ed elabora desiredState dall'amministratore
Passaggi successivi
Per una panoramica degli scenari e delle funzionalità osConfig, vedere:
Per esempi pratici specifici, vedere:






