In dieser Anleitung helfen wir dir, balenaCloud wie folgt zu nutzen:

  • Dein RevPi Core 3 einzurichten und es im balenaCloud-Dashboard online zu bringen.

  • Ein Python-Hello-World-Projekt auf dem Gerät bereitzustellen.

  • Das Beispielprojekt weiterzuentwickeln: Änderungen vorzunehmen und sie in Echtzeit auf dem Gerät zu testen.

Nach Abschluss dieses Leitfadens wirst du mit den Grundlagen von balena vertraut sein, um deine Anwendung weiterzuentwickeln und Flotten von Geräten in Produktion zu bringen. Wenn du bestimmte Begriffe nachschlagen möchtest, findest du diese im Glossar.

Voraussetzungen #

Hardware #

✓ RevPi Core 3
✓ Micro-USB-Kabel, um das eMMC des Geräts zu flashen
✓ Stromkabel mit 10,7 bis 28,2 V
✓ Optional: Ethernet-Kabel
✓ balena-Konto.

Software #

✓ Node-RED
Du kannst die Applikation Cockpit auf dem RevPi nutzen, um Node-RED zu installieren.

✓ Moderner Webbrowser (z. B. Google Chrome oder Mozilla Firefox)

Schritt 1: Eine Flotte erstellen #

Eine Flotte ist eine Gruppe von Geräten, die dieselbe Architektur nutzen und denselben Code ausführen. Geräte können einer Flotte hinzugefügt und jederzeit zwischen Flotten verschoben werden.

▷ Melde dich beim balenaCloud-Dashboard an und wähle die Schaltfläche Create fleet.

create-first-fleet.

▷ Gib einen Flottennamen ein.

▷ Wähle den Gerätetyp RevPi Core 3.

▷ Wähle die Flottenart Starter.

▷ Wähle Create new fleet:

create-fleet.

❯ Du wirst dann zur Zusammenfassung der neu erstellten Flotte weitergeleitet, wo du deinen ersten RevPi Core 3 hinzufügen kannst.

Schritt 2: Gerät hinzufügen und Betriebssystem herunterladen #

fleet-view

balenaCloud erstellt ein benutzerdefiniertes balenaOS-Image, das für den RevPi Core 3 konfiguriert ist und es dem Gerät ermöglicht, sich automatisch in die von dir erstellte Flotte einzufügen.

▷ Wähle Add device in der Flottenübersicht.

Dein Gerätetyp wird hier bereits vorausgewählt sein, da du ihn beim Erstellen der Flotte ausgewählt hast. Andere Gerätetypen mit derselben Architektur können ebenfalls der Flotte hinzugefügt werden.

add-device

▷ Wähle einen Betriebssystemtyp balenaOS.

❯ Eine Liste der verfügbaren balenaOS-Versionen wird angezeigt, wobei die neueste Version vorausgewählt ist.

▷ Wähle eine Development-Version des Betriebssystems.

Das Produktionsbetriebssystem unterstützt den hier verwendeten Entwicklungsworkflow nicht. Erfahre mehr über die Unterschiede zwischen Entwicklungs- und Produktions-Images.

network

▷ Wähle die Art der Netzwerkverbindung, die du verwenden möchtest: Nur Ethernet oder Wifi + Ethernet.

Eine Netzwerkverbindung ist erforderlich, damit sich das Gerät mit balenaCloud verbinden kann. Wenn du Wifi + Ethernet auswählst, kannst du eine WLAN-SSID und ein WLAN-Passwort eingeben, die dann in das Image integriert werden.

download_image

▷ Wähle abschließend die Schaltfläche Download balenaOS.

❯ Nach Abschluss des Downloads solltest du eine gezippte Image-Datei mit einem Namen wie balena-First-Fleet-revpi-core-3-2.80.3+rev1-v12.7.0.img.zip haben.

Schritt 3: Gerät provisionieren #

Als nächstes flashst du das heruntergeladene Image auf das Gerät:

▷ Trenne den RevPi Core 3 von der Spannungsversorgung.

▷ Verbinde dein System mit dem USB-Anschluss der RevPi Core 3 Platine über ein Micro-USB-Kabel.

▷ Schalte anschließend den RevPi Core 3 ein.

▷ Schreibe die heruntergeladene balenaOS-Datei auf den RevPi Core 3.
Wir empfehlen die Verwendung von Etcher.

▷ Warte, bis das Schreiben von balenaOS abgeschlossen ist.

▷ Schalte den RevPi Core 3 aus und ziehe das Micro-USB-Kabel ab.

▷ Entferne die Stromversorgung des RevPi Core 3 und schließe sie erneut an, um das Gerät zu starten.

❯ Nach ein oder zwei Minuten sollte das Gerät auf deinem balenaCloud-Dashboard erscheinen, und du bist nun bereit, Code bereitzustellen.

Falls das Gerät nicht auf dem Dashboard erscheint, sieh dir den Fehlerbehebungsleitfaden für RevPi Core 3 oder unsere Support-Kanäle an.

Schritt 4: balena CLI installieren #

Die balena CLI wird verwendet, um Code bereitzustellen. Überspringe diesen Teil, wenn du die balena CLI bereits installiert hast.

▷ Öffne die heruntergeladene Datei, um das Installationsprogramm auszuführen, und folge den Anweisungen des Installers.

▷ Öffne zur Ausführung von balena CLI-Befehlen ein Terminal: Wähle das Windows-Startmenü, gib PowerShell ein und wähle Windows PowerShell aus.

▷ Melde dich bei deinem balena-Konto mit dem Befehl balena login im Terminal an:

$ balena login
 _            _
| |__   __ _ | |  ____  _ __    __ _
| '_ \ / _` || | / __ \| '_ \  / _` |
| |_) | (_) || ||  ___/| | | || (_) |
|_.__/ \__,_||_| \____/|_| |_| \__,_|


Logging in to cloud.com
? How would you like to login? (Use arrow keys)
❯ Web authorization (recommended)
  Credentials
  Authentication token
  I don't have a balena account!

Du wirst aufgefordert, eine Authentifizierungsmethode auszuwählen.

▷ Wähle Web-Authentifizierung.

❯ Ein Webbrowser-Fenster öffnet sich, in dem du dich in deinem balenaCloud-Konto anmelden kannst.

▷ Wähle den Button Autorisieren und kehre nach der erfolgreichen Anmeldung zum Terminal zurück.

web_authorization

Schritt 5: Veröffentlichung erstellen #

▷ Teste nach der Anmeldung die balena CLI, indem du den Befehl balena fleets ausführst.

Dieser sollte Informationen zu der Flotte zurückgeben, die du im vorherigen Schritt erstellt hast.

▷ Notiere dir den FLEET NAME, da du diesen im nächsten Schritt benötigst, um den Code auf die Geräte deiner Flotte zu pushen.

$ balena fleets
ID    FLEET NAME   DEVICE TYPE          ONLINE DEVICES DEVICE COUNT
98264 First-Fleet  Revolution Pi Core 3   0              0

Ein interessantes Projekt, das du ausprobieren kannst, ist das Projekt balena-python-hello-world. Es handelt sich um einen Python-Webserver, der eine statische Seite auf Port 80 bereitstellt.

▷ Lade das Projekt von GitHub als ZIP-Datei herunter, entpacke es und öffne ein Terminal im Wurzelverzeichnis des extrahierten Projektordners.

▷ Verwende den Befehl balena push First-Fleet, um eine Veröffentlichung zu erstellen, wobei du First-Fleet mit dem Namen deiner Flotte ersetzt.
Stelle dabei sicher, dass du im Wurzelverzeichnis des entpackten Projektordners arbeitest.

Der Befehl

$ balena push First-Fleet

pusht den Code zu den balena-Bau-Servern, wo er kompiliert, gebaut, in eine Veröffentlichung umgewandelt und auf jedes Gerät in der Flotte angewendet wird.

Dein Code wurde erfolgreich kompiliert und gebaut wurde, wenn unser freundliches Einhorn-Maskottchen im Terminal erscheint:

[hello-world]  Successfully built 51bd190f7530
[Info]       Generating image deltas from release 8acfdc579f7cb0fe424d1b800588b6f5 (id: 2186018)
[Success]    Successfully generated image deltas
[Info]       Uploading images
[Success]    Successfully uploaded images
[Info]       Built on builder05
[Success]    Release successfully created!
[Info]       Release: c0c593803588a304c173124827d96b99 (id: 2186339)
[Info]       ┌────────────────────┬────────────┬────────────┐
[Info]       │ Service            │ Image Size │ Build Time │
[Info]       ├────────────────────┼────────────┼────────────┤
[Info]       │ hello-world        │ 190.04 MB  │ 50 seconds │
[Info]       └────────────────────┴────────────┴────────────┘
[Info]       Build finished in 1 minutes, 4 seconds
                            \
                             \
                              \\
                               \\
                                >\/7
                            _.-(6'  \
                           (=___._/` \
                                )  \ |
                               /   / |
                              /    > /
                             j    < _\
                         _.-' :      `.
                         \ r=._\        `.
                        <`\\_  \         .`-.
                         \ r-7  `-. ._  ' .  `\
                          \`,      `-.`7  7)   )
                           \/         \|  \'  / `-._
                                      ||    .'
                                       \\  (
                                        >\  >
                                    ,.-' >.'
                                   <.'_.''
                                     <'

Die Veröffentlichung wird dann heruntergeladen und auf allen Geräten der Flotte gestartet. Du kannst den Fortschritt der Geräte-Code-Updates auf dem Dashboard des Geräts sehen:

download-progress

Nach dem Download solltest du nun einen Python-Webserver auf deinem Gerät laufen haben und einige Logs auf deinem Dashboard sehen.

▷ Wähle den Schalter Public Device URL im Dashboard des Geräts, um deinem Gerät eine öffentliche URL zu geben.

Öffentliche Geräte-URLs ermöglichen es dir, Inhalte vom Gerät aus der Welt einfach bereitzustellen, solange der Server auf Port 80 läuft.

enable-public-url-device

▷ Folge der URL, um die Willkommensseite mit weiteren Ressourcen anzusehen.

Alternativ kannst du den Browser auf die lokale IP-Adresse deines Geräts richten, um den Server auf deinem Gerät zu erreichen. Die IP-Adresse des Geräts findest du auf der Geräte-Dashboard-Seite. Das solltest du sehen:

success

Schritt 6: Projekt entwicklen #

Jetzt kannst du versuchen, einige Änderungen an diesem Projekt vorzunehmen und sie direkt auf dem Gerät zu testen. Das Projekt kann geändert und erneut gepusht werden, indem dieselbe Methode wie oben verwendet wird. Aber da eine Entwicklungs-Version des Betriebssystems verwendet wird, kannst du den lokalen Modus aktivieren und direkt auf das Gerät pushen, was einen schnelleren Entwicklungszyklus ermöglicht.

▷ Aktiviere den lokalen Modus auf dem Gerät über das Dashboard.

enable-local-mode

Sobald dieser aktiviert ist, kannst du balena push erneut verwenden, aber diesmal pushst du direkt zur lokalen IP-Adresse des Geräts, die über das Dashboard erhalten wurde.

local-ip-address

Lokale IP-Adresse

$ balena push 10.19.0.153

Der gleiche Build-Prozess wie zuvor wird durchgeführt, aber diesmal findet der Build lokal auf dem Gerät selbst statt, anstatt die balena-Bau-Server zu verwenden.

[Info]    Streaming device logs…
[Live]    Watching for file changes…
[Live]    Waiting for device state to settle…
[Logs]    [8/26/2021, 11:58:18 AM] Creating network 'default'
[Logs]    [8/26/2021, 11:58:19 AM] Installing service 'hello-world sha256:…'
[Logs]    [8/26/2021, 11:58:20 AM] Installed service 'hello-world sha256:…'
[Logs]    [8/26/2021, 11:58:20 AM] Starting service 'hello-world sha256:…'
[Logs]    [8/26/2021, 11:58:23 AM] Started service 'hello-world sha256:…'
[Logs]    [8/26/2021, 11:58:24 AM] [hello-world] Starting server on port 80
[Live]    Device state settled

Die balena CLI überwacht nun Änderungen an allen Dateien im Projekt und pusht automatisch Änderungen auf das Gerät, wenn diese erkannt werden.

Titel der balena-Willkommensseite ändern

▷ Navigiere zur Datei index.html im Verzeichnis static des Projekts.

▷ Öffne die Datei und ändere den Titel von Welcome to balena! auf Hello balena!.

▷ Speichere die Datei.
Nach dem Speichern der Änderungen kannst du beobachten, wie die balena CLI automatisch nur die Teile des Dockerfiles neu baut, die geändert wurden.

[Live]    Detected changes for container hello-world, updating…
…
[Live]    [hello-world] Restarting service…
[Logs]    [8/26/2021, 11:59:01 AM, 2:42:32 AM] Service exited 'hello-world sha256:…'
[Logs]    [8/26/2021, 11:59:04 AM, 2:42:35 AM] Restarting service 'hello-world sha256:…'
[Logs]    [8/26/2021, 11:59:05 AM, 2:42:36 AM] [hello-world] Starting server on port 80

❯ Wenn der Rebuild abgeschlossen ist, wird auf der öffentlichen Geräte-URL die Willkommensseite mit dem neuen Titel aktualisiert.

success-change

Nächste Schritte #

▷ Sobald du mit deinen Änderungen fertig bist, deaktiviere den lokalen Modus und das Gerät wird wieder auf die neueste Veröffentlichung in deiner Flotte zurückgesetzt.

▷ Um deine Flotte mit den neuesten Änderungen zu aktualisieren, die du gerade gemacht hast, verwende noch einmal den Befehl balena push <fleet name>, um eine neue Veröffentlichung mit diesen Änderungen zu erstellen.

Wenn der Build abgeschlossen ist, werden die Geräte wie zuvor aktualisiert.

Siehe auch:

  • Lerne mehr über lokalen Modus, der es dir ermöglicht, Code lokal auf deinem Gerät zu bauen und zu synchronisieren, um eine schnelle Entwicklung zu ermöglichen.

  • Entwickle eine Anwendung mit mehreren Containern, um eine modulare Herangehensweise an das Flottenmanagement zu ermöglichen.

  • Verwalte deine Geräteflotte mit der Verwendung von Konfiguration^, Umgebungsvariablen und Service-Variablen.

  • Erfahre mehr über die balena CLI und die Funktionen, die sie bietet.

  • Besuche unseren Blog, um Schritt-für-Schritt-Tutorials zu einigen klassischen balena-Projekten zu finden.

  • Um das, was du bauen wirst oder bereits gebaut hast, zu veröffentlichen, gehe zu balenaHub.

  • Wenn du feststeckst oder verwirrt bist, ist Hilfe nur einen Klick entfernt.