Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Procedura Golden Image
Le sezioni seguenti descrivono la procedura per creare un'immagine dorata e scriverla su ogni dispositivo della linea di produzione.
Crea il tuo dispositivo dorato
Fase 1: Installazione e fornitura di Greengrass.
Installa il runtime Greengrass edge sul tuo dispositivo golden come faresti normalmente e esegui il provisioning utilizzando il tuo metodo di provisioning preferito.
Fase 2: Implementa i componenti.
Dal cloud, distribuisci i componenti e la configurazione dell'applicazione sul tuo dispositivo preferito, come faresti normalmente.
Leggi l'immagine dorata dal tuo dispositivo dorato
Ora puoi scattare un'istantanea del tuo dispositivo dorato per creare un'immagine dorata.
Passaggio 1: chiudere Greengrass.
Disattiva il servizio Greengrass sul tuo dispositivo dorato. Per esempio:
sudo systemctl stop greengrass.service
Passaggio 2: crea un'istantanea dell'albero dei file Greengrass.
A seconda del metodo preferito, scatta un'istantanea completa o parziale dell'albero dei file Greengrass e includila nell'immagine dorata.
Passaggio 3: Copia le tue immagini Docker.
Se i tuoi componenti utilizzano immagini Docker come artefatti, scatta un'istantanea del registro delle immagini Docker e includila nell'immagine dorata.
In alternativa, puoi usare docker save
per creare un archivio di ogni immagine Docker e copiarla dal dispositivo dorato. Per esempio:
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
In generale, questo approccio è più lento rispetto all'aggiunta del registro delle immagini Docker all'immagine dorata.
Scrivi l'immagine dorata sui tuoi dispositivi di produzione
Ora dovete scrivere l'immagine dorata su ciascuno dei dispositivi di produzione che compongono la linea di produzione. I passaggi seguenti vengono in genere automatizzati utilizzando script.
Passaggio 1: scrivere l'immagine.
Scrivi la tua immagine dorata sul dispositivo di produzione. Assicurati che includa l'istantanea completa o parziale dell'albero di directory Greengrass e del registro delle immagini Docker, a seconda dei casi.
Passaggio 2: carica le immagini Docker.
Se hai scelto di utilizzare docker save
per copiare gli artefatti delle immagini Docker dal tuo dispositivo dorato, utilizza docker load
per caricare queste immagini sul tuo dispositivo di produzione. Per esempio:
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
In generale, questo approccio è più lento rispetto all'aggiunta del registro delle immagini Docker all'immagine dorata.
Fase 3: Aggiungere le credenziali.
Se il dispositivo non utilizza il provisioning del parco veicoli, installa il certificato X.509 univoco e la chiave privata per il dispositivo di produzione, sostituendo le credenziali dorate del dispositivo. Il metodo esatto per raggiungere questo obiettivo dipende dal fatto che si utilizzi un modulo di sicurezza hardware (HSM) e una particolare infrastruttura a chiave pubblica (PKI).
Configura i tuoi dispositivi di produzione
Dopo aver scritto l'immagine dorata, devi configurare ogni dispositivo di produzione. Questa configurazione dipende dall'utilizzo del metodo snapshot Greengrass completo o parziale. I passaggi devono essere automatizzati.
Metodo snapshot Greengrass completo
Importante
Segui questi passaggi solo se utilizzi il metodo snapshot Greengrass completo.
Passaggio 1: modifica la configurazione.
Modificare il file config/effectiveConfig.yaml
. Per esempio:
sudo nano /greengrass/v2/config/effectiveConfig.yaml
Fase 2: Impostare il nome dell'oggetto.
Le azioni necessarie per impostare il nome dell'oggetto del nuovo dispositivo di produzione dipendono dal fatto che si stia utilizzando il provisioning del parco veicoli. Apporta le modifiche corrette per il tuo caso d'uso.
Se non utilizzate il fleet provisioning, potete impostare il nome dell'oggetto del dispositivo di produzione modificando la thingName
proprietà in modo da sostituire il golden device thing name con il nome dell'oggetto del dispositivo di produzione. Per esempio:
system: certificateFilePath: "/greengrass/v2/thingCert.crt" privateKeyPath: "/greengrass/v2/privKey.key" rootCaPath: "/greengrass/v2/rootCA.pem" rootpath: "/greengrass/v2" thingName: "ProductionDeviceThingName1"
Se utilizzate il fleet provisioning, dovete prima cancellare parte della configurazione del golden device per assicurarvi che il plug-in fleet provisioningthingName
proprietà con una stringa vuota. Per esempio:
system: certificateFilePath: "/greengrass/v2/thingCert.crt" privateKeyPath: "/greengrass/v2/privKey.key" rootCaPath: "/greengrass/v2/rootCA.pem" rootpath: "/greengrass/v2" thingName: ""
Inoltre, è necessario aggiungere la configurazione del plug-in fleet provisioning alla services
proprietà e passare il nome dell'oggetto del dispositivo di produzione come proprietà all'interno della templateParameters
proprietà. L'esempio seguente presuppone che il modello di fleet provisioning abbia un parametro denominato ThingName
e che pertanto esista una ThingName
proprietà all'interno della configurazione templateParameters
del plug-in:
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"
Il tuo caso d'uso potrebbe richiedere alcuni parametri di configurazione del plug-in Fleet Provisioning diversi da quelli mostrati qui. Per ulteriori informazioni, consulta Configurare il plug-in AWS IoT Fleet Provisioning nella AWS IoT Greengrass documentazione.
Fase 3: Aggiornare i nomi degli oggetti interpolati.
Se avete dei componenti che utilizzano la variabile iot:thingName
recipe per interpolare il nome dell'oggetto, probabilmente avrete istruzioni di controllo degli accessi in cui è stato interpolato il golden device thing name. Ad esempio, nel caso del componente della community Certificate
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"
In tutti questi casi, è necessario sostituire tutte le istanze del golden device thing name con il nome dell'oggetto del dispositivo di produzione.
Passaggio 4: Rimuovi i segreti del dispositivo dorato.
effectiveConfig.yaml
Cerca eventuali segreti crittografati archiviati dal tuo dispositivo dorato. Questi verranno archiviati nella configurazione del componente Secret Manager. Per esempio:
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"
È necessario eliminare questo segreto per assicurarsi che il dispositivo di produzione non tenti di decrittografare un segreto che è stato crittografato dal dispositivo dorato. Eliminare la proprietà. secretResponse
Per esempio:
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"
Passaggio 5: applicare la configurazione modificata.
Applica la configurazione modificata, per aggiornarla. config/config.tlog
Per esempio:
sudo java -Droot="/greengrass/v2" \ -jar /greengrass/v2/alts/current/distro/lib/Greengrass.jar \ --start false \ --init-config /greengrass/v2/config/effectiveConfig.yaml
Metodo snapshot Greengrass parziale
La configurazione dei dispositivi di produzione è semplice se si utilizza il metodo snapshot Greengrass parziale. La procedura è identica alla normale procedura di configurazione parziale di bootstrap quando si installa Greengrass, tranne per il fatto che la configurazione iniziale viene passata al runtime di Greengrass che è già installato.
Importante
Segui questi passaggi solo se utilizzi il metodo snapshot Greengrass parziale.
Fase 1: Creare la configurazione.
La configurazione parziale richiesta dipende dal fatto che tu stia utilizzando il provisioning della flotta. Assicurati di apportare le modifiche corrette per il tuo caso d'uso.
Se non utilizzi il provisioning della flotta, puoi creare un file di configurazione parziale che non includa alcuna configurazione per il plug-in di provisioning della flotta. Imposta la thingName
proprietà sul nome dell'oggetto del dispositivo di produzione. Per esempio:
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"
Se si utilizza il provisioning della flotta, la configurazione parziale dovrebbe includere la configurazione per il plug-in di provisioning della flottatemplateParameters
proprietà. L'esempio seguente presuppone che il modello di fleet provisioning abbia un parametro denominato ThingName
e che pertanto esista una ThingName
proprietà all'interno della configurazione templateParameters
del plug-in:
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"
Il tuo caso d'uso potrebbe richiedere parametri di configurazione del plug-in Fleet Provisioning diversi da quelli mostrati qui. Per ulteriori informazioni, consulta Configurare il plug-in AWS IoT Fleet Provisioning nella AWS IoT Greengrass documentazione.
Passaggio 2: applicare la configurazione.
Applica la configurazione da creareconfig/config.tlog
. Per esempio:
sudo java -Droot="/greengrass/v2" \ -jar /greengrass/v2/alts/current/distro/lib/Greengrass.jar \ --start false \ --init-config config.yaml