Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Procédure Golden Image
Les sections suivantes décrivent la procédure de création d'une image dorée et d'écriture de cette image sur chaque appareil de la chaîne de production.
Créez votre appareil doré
Étape 1 : Installation et approvisionnement de Greengrass.
Installez le moteur d'exécution Greengrass Edge sur votre appareil doré comme vous le feriez habituellement, et provisionnez-le en utilisant votre méthode de provisionnement préférée.
Étape 2 : Déployez vos composants
Depuis le cloud, déployez les composants et la configuration de votre application sur votre appareil doré, comme vous le feriez habituellement.
Lisez l'image dorée depuis votre appareil doré
Vous pouvez désormais prendre un instantané de votre appareil doré pour créer une image dorée.
Étape 1 : Arrêtez Greengrass.
Arrêtez le service Greengrass sur votre appareil Golden. Par exemple :
sudo systemctl stop greengrass.service
Étape 2 : capture d'écran de l'arborescence des fichiers Greengrass.
Selon votre méthode préférée, prenez un instantané complet ou partiel de l'arborescence des fichiers Greengrass et incluez-le dans votre image dorée.
Étape 3 : Copiez vos images Docker.
Si vos composants utilisent des images Docker comme artefacts, prenez un instantané du registre d'images Docker et incluez-le dans votre image dorée.
Vous pouvez également docker save
créer une archive de chaque image Docker et les copier depuis le périphérique doré. Par exemple :
user@machine:~/environment $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE homeassistant/home-assistant 2024.6 2b4c9de733f1 9 days ago 1.6GB user@machine:~/environment $ docker save homeassistant/home-assistant | gzip > home-assistant.tar.gz
En général, cette approche est plus lente que l'ajout du registre d'images Docker à votre image dorée.
Écrivez l'image dorée sur vos appareils de production
Vous devez maintenant écrire l'image dorée sur chacun de vos appareils de production qui passent par votre chaîne de fabrication. Les étapes suivantes sont généralement automatisées à l'aide de scripts.
Étape 1 : Écrivez l'image.
Écrivez votre image dorée sur l'appareil de production. Assurez-vous qu'il inclut l'instantané complet ou partiel de l'arborescence des répertoires Greengrass et du registre d'images Docker, le cas échéant.
Étape 2 : Chargez les images Docker
Si vous avez choisi de copier des artefacts d'image Docker docker save
à partir de votre appareil doré, utilisez-le docker load
pour charger ces images sur votre appareil de production. Par exemple :
user@machine:~/environment $ docker load < home-assistant.tar.gz user@machine:~/environment $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE homeassistant/home-assistant 2024.6 2b4c9de733f1 9 days ago 1.6GB
En général, cette approche est plus lente que l'ajout du registre d'images Docker à votre image dorée.
Étape 3 : Ajoutez des informations d'identification
Si votre appareil n'utilise pas le provisionnement du parc, installez le certificat X.509 et la clé privée uniques pour le périphérique de production, en remplacement des informations d'identification de l'appareil en or. La méthode exacte pour y parvenir dépend de l'utilisation d'un module de sécurité matériel (HSM) et de votre infrastructure à clé publique (PKI) particulière.
Configurez vos appareils de production
Après avoir écrit l'image dorée, vous devez configurer chaque appareil de production. Cette configuration varie selon que vous utilisez la méthode de capture instantanée complète ou partielle de Greengrass. Les étapes doivent être automatisées.
Méthode de capture instantanée complète de Greengrass
Important
Suivez ces étapes uniquement si vous utilisez la méthode de capture instantanée complète de Greengrass.
Étape 1 : modifier la configuration
Modifiez le fichier config/effectiveConfig.yaml
. Par exemple :
sudo nano /greengrass/v2/config/effectiveConfig.yaml
Étape 2 : Définissez le nom de l'objet.
Les actions requises pour définir le nom d'objet du nouvel appareil de production varient selon que vous utilisez ou non le provisionnement de flotte. Apportez les modifications appropriées à votre cas d'utilisation.
Si vous n'utilisez pas le provisionnement de flotte, vous pouvez définir le nom d'objet de votre appareil de production en modifiant la thingName
propriété pour remplacer le nom d'objet du périphérique principal par le nom de l'objet de l'appareil de production. Par exemple :
system: certificateFilePath: "/greengrass/v2/thingCert.crt" privateKeyPath: "/greengrass/v2/privKey.key" rootCaPath: "/greengrass/v2/rootCA.pem" rootpath: "/greengrass/v2" thingName: "ProductionDeviceThingName1"
Si vous utilisez le provisionnement de flotte, vous devez d'abord effacer une partie de la configuration de l'appareil principal pour garantir que le plug-in de provisionnement du parcthingName
propriété par une chaîne vide. Par exemple :
system: certificateFilePath: "/greengrass/v2/thingCert.crt" privateKeyPath: "/greengrass/v2/privKey.key" rootCaPath: "/greengrass/v2/rootCA.pem" rootpath: "/greengrass/v2" thingName: ""
En outre, vous devez ajouter la configuration du plugin de provisionnement du parc à la services
propriété et transmettre le nom de l'objet du périphérique de production en tant que propriété au sein de la templateParameters
propriété. L'exemple suivant suppose que le modèle de provisionnement de flotte possède un paramètre nommé ThingName
et qu'il existe donc une ThingName
propriété dans la configuration templateParameters
du plugin :
system: certificateFilePath: "/greengrass/v2/thingCert.crt" privateKeyPath: "/greengrass/v2/privKey.key" rootCaPath: "/greengrass/v2/rootCA.pem" rootpath: "/greengrass/v2" thingName: "" services: aws.greengrass.FleetProvisioningByClaim: configuration: rootPath: "/greengrass/v2" awsRegion: "us-east-1" iotDataEndpoint: "<prefix>-ats.iot.us-east-1.amazonaws.com" iotCredentialEndpoint: "<prefix>.credentials.iot.us-east-1.amazonaws.com" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" provisioningTemplate: "GreengrassFleetProvisioningTemplate" claimCertificatePath: "/greengrass/v2/claim-certs/claim.pem.crt" claimCertificatePrivateKeyPath: "/greengrass/v2/claim-certs/claim.private.pem.key" rootCaPath: "/greengrass/v2/rootCA.pem" templateParameters: ThingName: "ProductionDeviceThingName1"
Votre cas d'utilisation peut nécessiter des paramètres de configuration du plugin de provisionnement de flotte différents de ceux présentés ici. Pour plus d'informations, consultez la section Configurer le plug-in de provisionnement de AWS IoT flotte dans la AWS IoT Greengrass documentation.
Étape 3 : Mettez à jour les noms d'objets interpolés.
Si certains composants utilisent la variable de iot:thingName
recette pour interpoler le nom de l'objet, vous aurez probablement des instructions de contrôle d'accès dans lesquelles le nom de l'objet Golden Device a été interpolé. Par exemple, dans le cas du composant communautaire Certificate Rotator
services: aws.greengrass.labs.CertificateRotator: componentType: "GENERIC" configuration: accessControl: aws.greengrass.ipc.mqttproxy: aws.greengrass.labs.CertificateRotator:mqttproxy:1: operations: - "aws.greengrass#PublishToIoTCore" policyDescription: "Allows access to publish to relevant topics" resources: - "$aws/things/GoldenDeviceThingName/jobs/+/get" - "$aws/things/GoldenDeviceThingName/jobs/+/update" - "awslabs/things/GoldenDeviceThingName/certificate/create" - "awslabs/things/GoldenDeviceThingName/certificate/commit" aws.greengrass.labs.CertificateRotator:mqttproxy:2: operations: - "aws.greengrass#SubscribeToIoTCore" policyDescription: "Allows access to subscribe to relevant topics" resources: - "$aws/things/GoldenDeviceThingName/jobs/notify-next" - "$aws/things/GoldenDeviceThingName/jobs/+/get/accepted" - "$aws/things/GoldenDeviceThingName/jobs/+/get/rejected" - "$aws/things/GoldenDeviceThingName/jobs/+/update/accepted" - "$aws/things/GoldenDeviceThingName/jobs/+/update/rejected" - "awslabs/things/GoldenDeviceThingName/certificate/create/accepted" - "awslabs/things/GoldenDeviceThingName/certificate/create/rejected" - "awslabs/things/GoldenDeviceThingName/certificate/commit/accepted" - "awslabs/things/GoldenDeviceThingName/certificate/commit/rejected" keyAlgorithm: "RSA-2048" signingAlgorithm: "SHA256WITHRSA"
Dans tous ces cas, vous devez remplacer toutes les instances du nom d'objet Golden Device par le nom d'objet de votre appareil de production.
Étape 4 : supprimez les secrets dorés de l'appareil.
Vérifiez effectiveConfig.yaml
s'il y a des secrets chiffrés qui ont été stockés par votre appareil doré. Ils seront stockés dans la configuration des composants du gestionnaire de secrets. Par exemple :
aws.greengrass.SecretManager: componentType: "PLUGIN" configuration: cloudSecrets: - arn: "arn:aws:secretsmanager:us-east-1:111122223333:secret:greengrass-home-assistant-KIzJfZ" dependencies: - "aws.greengrass.Nucleus:SOFT" lifecycle: {} runtime: secretResponse: "{\"secrets\":[{\"arn\":\"arn:aws:secretsmanager:us-east-1:111122223333:secret:greengrass-home-assistant-KIzJfZ\"\ ,\"name\":\"greengrass-home-assistant\",\"versionId\":\"8e481177-9250-4458-9f1f-3690d28e4ae9\"\ ,\"encryptedSecretString\":\"AgV4Rpc9 ... MYeVALYQ==\"\ ,\"versionStages\":[\"AWSCURRENT\"],\"createdDate\":1660648425915}]}" version: "2.1.8"
Vous devez supprimer ce secret pour vous assurer que votre appareil de production ne tentera pas de déchiffrer un secret chiffré par le périphérique doré. Supprimez la secretResponse
propriété. Par exemple :
aws.greengrass.SecretManager: componentType: "PLUGIN" configuration: cloudSecrets: - arn: "arn:aws:secretsmanager:us-east-1:111122223333:secret:greengrass-home-assistant-KIzJfZ" dependencies: - "aws.greengrass.Nucleus:SOFT" lifecycle: {} runtime: version: "2.1.8"
Étape 5 : appliquez la configuration modifiée.
Appliquez la configuration modifiée pour la mettre à jourconfig/config.tlog
. Par exemple :
sudo java -Droot="/greengrass/v2" \ -jar /greengrass/v2/alts/current/distro/lib/Greengrass.jar \ --start false \ --init-config /greengrass/v2/config/effectiveConfig.yaml
Méthode de capture partielle de Greengrass
La configuration de vos appareils de production est triviale si vous utilisez la méthode de capture instantanée partielle de Greengrass. La procédure est identique à la procédure normale de configuration partielle du bootstrap lorsque vous installez Greengrass, sauf que la configuration initiale est transmise au moteur d'exécution Greengrass déjà installé.
Important
Suivez ces étapes uniquement si vous utilisez la méthode de capture instantanée partielle de Greengrass.
Étape 1 : Création de la configuration
La configuration partielle requise varie selon que vous utilisez ou non le provisionnement de flotte. Assurez-vous d'apporter les modifications appropriées à votre cas d'utilisation.
Si vous n'utilisez pas le provisionnement de flotte, vous pouvez créer un fichier de configuration partiel qui n'inclut aucune configuration pour le plug-in de provisionnement de flotte. Définissez la thingName
propriété sur le nom de l'objet de votre appareil de production. Par exemple :
system: certificateFilePath: "/greengrass/v2/device.pem.crt" privateKeyPath: "/greengrass/v2/private.pem.key" rootCaPath: "/greengrass/v2/AmazonRootCA1.pem" rootpath: "/greengrass/v2" thingName: "ProductionDeviceThingName1" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "2.12.6" configuration: awsRegion: "us-east-1" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" iotDataEndpoint: "<prefix>-ats.iot.us-east-1.amazonaws.com" iotCredEndpoint: "<prefix>.credentials.iot.us-east-1.amazonaws.com"
Si vous utilisez le provisionnement de flotte, la configuration partielle doit inclure la configuration du plugin de provisionnement de flottetemplateParameters
propriété. L'exemple suivant suppose que le modèle de provisionnement de flotte possède un paramètre nommé ThingName
et qu'il existe donc une ThingName
propriété dans la configuration templateParameters
du plugin :
services: aws.greengrass.Nucleus: version: "2.12.6" aws.greengrass.FleetProvisioningByClaim: configuration: rootPath: "/greengrass/v2" awsRegion: "us-east-1" iotDataEndpoint: "<prefix>-ats.iot.us-east-1.amazonaws.com" iotCredentialEndpoint: "<prefix>.credentials.iot.us-east-1.amazonaws.com" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" provisioningTemplate: "GreengrassFleetProvisioningTemplate" claimCertificatePath: "/greengrass/v2/claim-certs/claim.pem.crt" claimCertificatePrivateKeyPath: "/greengrass/v2/claim-certs/claim.private.pem.key" rootCaPath: "/greengrass/v2/AmazonRootCA1.pem" templateParameters: ThingName: "ProductionDeviceThingName1"
Votre cas d'utilisation peut nécessiter des paramètres de configuration du plugin de provisionnement de flotte différents de ceux présentés ici. Pour plus d'informations, consultez la section Configurer le plug-in de provisionnement de AWS IoT flotte dans la AWS IoT Greengrass documentation.
Étape 2 : appliquer la configuration
Appliquez la configuration à créerconfig/config.tlog
. Par exemple :
sudo java -Droot="/greengrass/v2" \ -jar /greengrass/v2/alts/current/distro/lib/Greengrass.jar \ --start false \ --init-config config.yaml