Freigeben über


Verwalten des Betriebssystempaket-Managers mithilfe von Azure IoT und OSConfig

Wichtig

Version 1.0.3 (veröffentlicht am 28. Juni 2022) umfasst Unterbrechungen von Änderungen an Mitgliedsnamen, die sich auf vorhandene Benutzer auswirken können. Weitere Informationen finden Sie unter: Membernamen übergang von PascalCase zu camelCase in Version 1.0.3

Zielgruppe und Bereich

Dieser Artikel wurde entwickelt, um Personen zu unterstützen, die Geräte mit Azure IoT bereitstellen oder verwalten . Wenn dies nicht wie Sie klingt, sollten Sie einen Blick auf die Benutzergruppen für die OSConfig-Dokumentation werfen.

In diesem Artikel wird der Status des Paket-Managers und das Festlegen des gewünschten Zustands des Paket-Managers behandelt. Beispiel:

Funktion Anwendungsfälle
Stellen Sie sicher, dass Paketmanager aus Ihren gewünschten Quellen stammen • Ihre Betriebsrichtlinie besteht darin, dass Gerätepaketmanager aus einem privaten Paket-Repository mit genehmigten Versionen von Bibliotheken und Komponenten abrufen sollten.
• Sie benötigen Geräte, um Pakete aus dem Repository eines bestimmten Anbieters abzurufen.
Informieren Sie Paketmanager von gewünschten Paketen • Ihre Betriebsrichtlinie besteht darin, dass Geräte über ein bestimmtes Paket wie "library-XYZ-v2" verfügen sollten.
• Ihre Betriebsrichtlinie besteht darin, dass Geräte über ein bestimmtes Abhängigkeitsdiagramm von Paketen verfügen sollten.
Gerätepaket vergleichen
oder Quellenlisten
• Ihre Betriebsrichtlinie besteht darin, dass die installierte Paketliste der bereitgestellten Geräte mit einem bekannten guten Gerät übereinstimmt.

Wenn Sie sich hier für Referenzinformationen im Gegensatz zu interaktiven Beispielen für Anwendungsfälle befinden, können Sie den Referenzabschnitt überspringen.

Wichtig

Zu diesem Zeitpunkt sind apt-basierte Distros, einschließlich Debian und Ubuntu, im Bereich. Wenn Sie unterstützung für RPM-basierte Verteiler entwickeln möchten, lesen Sie die Erweiterbarkeitsdokumentation.

In einer Umgebung ohne apt (z. B. erstellen aus Quelle und Ausführung auf einer Red Hat Family-Vertrotro), werden möglicherweise die folgenden Protokollmeldungen angezeigt, die angeben, dass das PackageManagerConfiguration-Modul nicht anwendbar ist.

  • In osconfig_pmc.log zeilen, einschließlich des folgenden Texts:
    [ERROR] Cannot run on this platform, could not find required tool apt-get
  • In osconfig_pnp_agent.log zeilen, einschließlich des folgenden Texts:
    [ERROR] PackageManagerConfiguration.state: MpiGet failed with 500

Beispiele für Anwendungsfälle

Diese Beispiele können als Ausgangspunkte dienen, die Sie für Ihre einzigartige Umgebung anpassen können.

Voraussetzungen für das Testen der Beispiele für Livesysteme

Wenn Sie diesen Artikel zur Referenz verwenden, gibt es keine Voraussetzungen. Sie können die Beispiele überprüfen, Eigenschaftsnamen kopieren usw.

Wenn Sie die Beispiele für Livesysteme ausprobieren möchten (empfohlen), führen Sie die folgenden Schritte aus:

  1. Erstellen eines kostenlosen Azure-Kontos oder Verwenden eines vorhandenen Kontos

  2. Verbinden sie mindestens ein OSConfig-fähiges Gerät mit einem IoT Hub

    Tipp

    Informationen zum einfachen Erstellen einer IoT Hub mit angefügten (virtuellen) Geräten finden Sie unter Erstellen einer OSConfig -Laborumgebung (mit Azure IoT) in 5 Minuten

  3. Machen Sie sich bereit, entweder die Azure-Portal Anweisung oder die Azure CLI-Anweisungen in den Beispielen zu befolgen:

Wenn Sie die Azure-Portal verwenden möchten

  1. Melden Sie sich bei Ihrem Azure-Portal an, und greifen Sie auf die Seite "Übersicht" Ihres IoT Hub zu, der IoT Hub und Geräte aus dem Azure-Portal anzeigt.

-OR- Wenn Sie Azure CLI verwenden möchten

  1. EMPFOHLEN: Verwenden Sie Azure Cloud Shell als Bash-Umgebung, indem Sie sich bei Ihrem Azure-Portal anmelden, und starten Sie Dann Azure Cloud Shell im Bash-Modus Bildschirmaufnahme öffnen Cloud Shell aus dem Azure-Portal
  2. ALTERNATIVE: Wenn Sie ihre eigene Bash-Umgebung anstelle von Cloud Shell verwenden möchten, installieren Sie die Azure CLI und melden Sie sich an.
  3. Stellen Sie sicher, dass die Azure IoT-Erweiterung bereit ist, indem Sie ausführen az extension add --name azure-iot

Beispiel 1: Angeben der gewünschten Paketquellen

In diesem Beispiel wird der Azure IoT-Workflow veranschaulicht, um sicherzustellen, dass Geräte als eine ihrer Paketquellen den packages.microsoft.com Prod-Kanal für Ubuntu 18.04 verwenden. Sie können dieses Beispiel anpassen, um eine beliebige Paketquelle zu verwenden. Beispielsweise das öffentliche Repository einer anderen Distro/Version, das Repository eines bestimmten Anbieters oder ein privates Repository, das Sie zusammengestellt haben.

Die Anweisungen sind in Varianten für Portal, CLI, bestimmte Geräte und die skalierungsbasierte Bereitstellung und Verwaltung verfügbar.

  1. Navigieren Sie auf der Portalseite Ihrer IoT Hub zum OSConfig-Zwilling für das Gerät, das Sie verwalten möchten, und fügen Sie dem properties.desired Abschnitt folgendes hinzu, gefolgt von einem Komma, um es vom nächsten Element properties.desiredzu trennen.

    "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": [
          ]
       }
    }
    
    

    Bildschirmaufnahme, in der gezeigt wird, wie Die Konfiguration des Paket-Managers über das Azure Portal konfiguriert wird

Beispiel 1 war das Definieren einer neuen Paketquelle. Wenn Sie über dasselbe Berichten berichten möchten, fahren Sie mit Beispiel 2 fort.

Beispiel 2: Bericht über den Paket-Manager-Zustand und die Konfiguration

In diesem Beispiel wird Folgendes berichtet:

  1. Welche Paketquellen hinzugefügt wurden
  2. Gibt an, ob Geräte PackageManagerConfiguration-Fehler haben

In Beispiel 1 oben haben wir dem OSConfig-Modul-Twin eines bestimmten Geräts einen gewünschten PackageManagerConfiguration-Wert hinzugefügt. Wir können jetzt die Ergebnisse beobachten.

  1. Warten Sie 1 Minute (für Netzwerkkommunikation, geräteseitige Aktivität usw.), nachdem Sie das gewünschte PackageManagerConfiguration im obigen Beispiel hinzugefügt haben

  2. Navigieren Sie im OSConfig-Modul desselben Geräts zu Eigenschaften, dann gemeldet, dann PackageManagerConfiguration, und zustand.

  3. Dadurch wird der neueste Status der Paket-Manager-Konfiguration angezeigt.

    1. sourcesFileNames sollte die beiden hinzugefügten Kanäle widerspiegeln
    2. executionStatus sollte 2 sein. Mögliche Werte finden Sie in der Dokumentation zur Erweiterbarkeit

    Bildschirmaufnahme, die zeigt, wie Sie die Konfiguration des Paket-Managers über das Azure-Portal überprüfen

Referenzinformationen

Objektmodellbeschreibung

In diesem Abschnitt werden die Zwillingseigenschaften und die entsprechenden Verhaltensweisen beschrieben.

Es ist nützlich zu verstehen, dass in Azure IoT zwei mentale Modelle oder Perspektiven zum Beschreiben von Zwillingsinhalten vorhanden sind.

  • Nur gewünschte/gemeldete Perspektive

    Dies ist das Kernobjektmodell IoT Hub. Es wird von IoT Hub Abfragedienst, IoT Hub Konfigurationsdienst, az iot hub module-twin Befehlen und von den einfachen Zwillingsansichten in Azure Portal und IoT Explorer verwendet.

  • Digitale Twin Definition Language (DTDL) erweiterte Perspektive

    DTDL (mit entsprechenden Mustern, einschließlich Azure IoT Plug & Play [PnP]) ermöglicht Apps und Diensten, zwei Inhalte zu erwarten, zu überprüfen und besser zu kontextualisieren. Dies wird von den PnP-Ansichten im IoT-Explorer, vom Azure Digital Twins-Dienst und möglicherweise von Ihrer Cloudlösung beim Interagieren mit IoT Hub verwendet.

In den meisten Fällen unten ist keine Unterscheidung erforderlich. Beispielsweise wird "gpgKeys" in beiden Ansichten als "gpgKeys" bezeichnet.

In bestimmten Fällen kann eine Unterscheidung hilfreich sein. Beispiel: Die unten angegebenen Pfadwerte. In diesen Fällen wird zuerst die einfache gewünschte/gemeldete Beschreibung gegeben, gefolgt von einer DTDL-erweiterten Perspektive in Klammern.

desiredState (Eingabe von Administrator)
  • Pfad: properties.desired.PackageManagerConfiguration.desiredState (DTDL: PackageManagerConfiguration component -->desiredState beschreibbare Eigenschaft)

  • Beschreibung: Eingabe von Administrator; ermöglicht das Hinzufügen von Paketquellen und Paketen zu Geräten

  • Mitglieder

    Name type Notizen
    sources Zuordnung von sourceName: sourceDescriptor Paare (Zeichenfolgen) Für jedes Paar im Wörterbuch:
    sourceName ist ein angegebener Administratorbezeichner, z. B.: *my-source-foo*
    sourceDescriptor ist eine Quelldefinitionszeichenfolge im format, das vom Paket-Manager verwendet wird. Beispiel: deb [arch=amd64,armhf,arm64 signed-by=my-repo-key] https://packages.microsoft.com/ubuntu/18.04/prod focal main
    • Innerhalb sourceDescriptor des übergebenen signed-by= Werts sollte der Name eines Schlüssels sein gpgKeys (siehe unten). Beispiel: signed-by=my-source-foo-key
    • Beim Hinzufügen oder Ändern einer Quelle wird eine Datei in sources.list.d aufgefüllt (vorhandene Datei überschreiben) mit dem Quelldeskriptor
    • Um anzugeben, dass Geräte keine bestimmte Quelle verwenden sollten (sofern sie zuvor in sources.list.d definiert wurde, nicht an anderer Stelle im System), schließen Sie ein Paar wie "my-source-bar": ""; Wenn eine Datei namens "my-source-bar.list" in "sources.list.d " vorhanden ist, wird sie entfernt.
    • Wenn Sie keine Direktive mehr benötigen (z. B. ist my-source-bar nach einiger Zeit nicht mehr relevant), können Sie sie aus dem gewünschten Zwilling entfernen, indem Sie den Wert von "my-source-bar": "" in "my-source-bar" ändern: null: null
    Gpgkeys Zuordnung von key-name: uri Paare (Zeichenfolgen) Wird verwendet, um das Paket zu informieren
    Manager öffentlicher Repositoryschlüssel;
    Für jedes Paar im Wörterbuch:
    key-name ist ein administrator angegebener Bezeichner, z. B. my-repo-foo-key, der von signed-by in sources
    uri die Position des öffentlichen Schlüssels eines Repo, z. B.: https://packages.microsoft.com/keys/microsoft.asc
    • Der Schlüssel wird als Datei zu /usr/share/keyrings/hinzugefügt; Beachten Sie, dass für die Anwendbarkeit des Schlüssels ein Bereich verwendet wird, der nicht geeignete Pfad verwendet wird; apt wendet nur diesen Schlüssel auf Quellen an, die explizit damit verknüpft sind (über signed-by
    • So entfernen Sie eine Schlüsseldatei aus /usr/share/keyrings, die auf key-name den Dateinamen (ohne Erweiterung) festgelegt sind, und legen Sie auf "" fest.uri
    packages Array von Paketbezeichnern (Zeichenfolgen) • Weist den Paket-Manager an, sicherzustellen, dass diese Pakete installiert sind.
    • Analog zu geeigneten Installationspaketnamen <> auf Debian
    • Zusatzstoffe (nicht destruktiv) in der Natur; Eine leere Liste bedeutet z. B. "Nichts tun" (nicht "alle Pakete auf dem System deinstallieren")
  • Beispielnutzlast (wie im Abschnitt eines Zwillings properties.desired eines IoT Hub Twins dargestellt)

    "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
  • Pfad: (DTDL-Perspektive: properties.reported.PackageManagerConfiguration.statePackageManagerConfiguration Component -->state read-only-Eigenschaft)

  • Beschreibung: PackageManagerConfiguration-Zustand wie vom Gerät gemeldet

  • Mitglieder

    Name type Notizen
    packagesFingerprint Zeichenfolge • Undurchsichtiger Fingerabdruck für die Liste aller installierten Pakete auf dem Gerät (nicht beschränkt auf Pakete, auf die in desiredState.packages) verwiesen wird
    • Wird verwendet, um große Anzahl von Geräten mit einem bekannten Gerät zu vergleichen
    packages Array von Paketbezeichnern (Zeichenfolgen) • Name und Status (Version oder "fehlgeschlagen") der vom Administrator angegebenen Pakete desiredState.packages
    • Wenn ein Paket erfolgreich installiert wurde, folgt der Name der installierten Versionsnummer.
    • Wenn ein Paket nicht installiert werden konnte, wird der Name gefolgt von "fehlgeschlagen"
    sourcesFingerprint Zeichenfolge • Undurchsichtiger Fingerabdruck von Paketquellen, die vom Gerät verwendet werden
    • Wird verwendet, um große Anzahl von Geräten mit einem bekannten Gerät zu vergleichen
    sourcesFilenames Array von Dateinamen (Zeichenfolgen) • Liste der Paketquellen (z. B. "my-repo.list"), die dem Paket-Manager über /etc/apt/sources.list.d (auf Debian) hinzugefügt wurden
    • Enthält alle quellen, die vorhanden sind, unabhängig davon, ob sie über desiredState.sources
    executionState INT • Gesamterfolgs-/Fehlerstatus
    • Nominalwerte sind 0 (Anfangszustand, es wurde kein desiredState angegeben) oder 2 (erfolgreich)
    • Weitere Werte finden Sie in der Erweiterbarkeitsdokumentation
    executionSubstate INT • Mögliche Werte finden Sie in der Erweiterbarkeitsdokumentation
    executionSubstateDetails Zeichenfolge • Zusätzliche Informationen zur Problembehandlung
  • Beispiel-Nutzlast (wie im Abschnitt "Twin properties.reported " dargestellt)

    "PackageManagerConfiguration": {
        "state": {
           "packagesFingerprint": "9e7a85de3d067474e3621d7e1618f6ac0e2e8fc6cb9d60ee92af9927294114d3",
           "packages": [
              "cowsay=3.03+dfsg2-7"
           ],
           "executionState": 2,
           "executionSubstate": 0,
           "executionSubstateDetails": "",
           "sourcesFingerprint": "64b7de49c2be4ef2c180e4a978300fbb7b8a743a89e4038ba7ac6a91c31b625f",
           "sourcesFilenames": [
              "pkgs-msft_insiders-slow.list"
           ]
        }
    }
    
desiredState (gemeldet; Bestätigung von Gerät)
  • Pfad: (DTDL-Perspektive: PackageManagerConfiguration Komponente - properties.reported.PackageManagerConfiguration.desiredState -> ACK-Teil der desiredState schreibbaren Eigenschaft)

  • Beschreibung: Dieses zusätzliche gemeldete Element ist eine Bestätigung vom Gerät; für Administratortools und Berichte, die es ergänzt state– die Aktivierung der Administratortoolkette, um festzustellen, ob das Gerät noch die in der Admin-Beschriftbare/gewünschte Administratorabsicht erfasste Administratorabsicht erhalten hat. desiredState

  • Mitglieder

    Name Typ Notizen
    value Objekt (object) • Sollte spiegelen properties.desired.PackageManagerConfiguration.desiredState
    ac INT • Gibt Erfolg (Wert 200) oder Fehler (Wert 400) des Geräts an, das vom Administrator empfangen und verarbeitet wird.

Nächste Schritte

Eine Übersicht über OSConfig-Szenarien und -Funktionen finden Sie unter:

Spezifische praktische Beispiele finden Sie unter: