Aggiornamento da repository
Aggiornamento del firmware del server da un repository remoto
Panoramica
XCC supporta l'aggiornamento firmware su un server utilizzando il pacchetto bundle di aggiornamento (Service Packs). Questa funzione semplifica il processo mediante un singolo strumento client API o Redfish per aggiornare tutto il firmware nel sistema, inclusi i pacchetti di firmware OOB e IB. Il processo include l'identificazione dei pacchetti firmware applicabili, il download e l'estrazione da un server HTTP/HTTPS remoto oppure il caricamento su storage interno del BMC tramite un browser Web oppure il montaggio da una directory condivisa CIFS o NFS.
Se si utilizza il montaggio CIFS o NFS, i file di metadati devono essere posizionati nella directory radice del file system condiviso di rete, con i payload firmware specificati nei metadati. Il dispositivo microSD del server può memorizzare repository cronologici, consentendo agli utenti di ripristinare i livelli di firmware.
Se i pacchetti di firmware contengono payload che non supportano l'aggiornamento firmware fuori banda, BMC avvia il server e lo configura per l'avvio dall'immagine del sistema operativo integrato, installato nel BMC prima di eseguire l'aggiornamento.
Bundle di aggiornamento e metadati
Il bundle di aggiornamento (Service Packs) è un file compresso di un bundle firmware. Contiene uno o più pacchetti di firmware per i componenti in un sistema. La funzione Aggiornamento da repository di XCC utilizza il file del bundle di aggiornamento. Il file del bundle decompresso contiene file di metadati e binari payload. I file di metadati JSON forniscono informazioni a XCC sul tipo di immagini firmware contenute nel file del bundle, mentre i file binari payload forniscono le immagini del firmware.
Repository del firmware in XCC
Il bundle di aggiornamento può contenere più pacchetti di firmware e XCC (un dispositivo elettronico) riserva 2 GB di spazio nella memoria flash per le nuove funzioni. Quando si riceve un nuovo bundle, XCC cancella i dati vecchi. Alcune piattaforme utilizzano una scheda MicroSD per fornire ulteriore storage e XCC sposta l'ultimo bundle aggiornato nel repository cronologico della scheda SD. Il repository della cronologia firmware può memorizzare un massimo di tre bundle e gli utenti possono utilizzare la funzione Rollback del firmware per ripristinare un bundle precedente.
Se il bundle di aggiornamento include solo il pacchetto firmware OOB disponibile per il sistema, XCC non modifica lo stato di alimentazione del sistema. Per aggiornare il firmware del dispositivo PCI, è necessario che il sistema sia acceso.
Se il bundle di aggiornamento include il pacchetto firmware IB disponibile per il sistema, XCC memorizza lo stato di alimentazione del sistema prima di aggiornare e ripristinare lo stato di alimentazione una volta completato l'aggiornamento del bundle. Durante il processo di aggiornamento, XCC riavvia l'host nel sistema operativo integrato.
Se il bundle di aggiornamento include un livello prerequisito del firmware UEFI e la versione UEFI installata corrente non soddisfa tale livello, XCC spegne il sistema per eseguire prima un aggiornamento firmware UEFI.
Se il bundle di aggiornamento include un livello prerequisito del firmware XCC e la versione XCC attualmente installata non soddisfa tale livello, XCC viene riavviato dopo l'aggiornamento.
Aggiornamento con WebGUI
Con l'aggiornamento dal repository l'utente può configurare XCC per sincronizzare il firmware del server con un repository del firmware CIFS/NFS remoto. Il repository del firmware deve contenere pacchetti, tra cui file binari e metadati o file JSON di metadati del bundle di aggiornamento e i corrispondenti file binari. XCC analizza i file JSON metadati per selezionare i pacchetti firmware che supportano l'aggiornamento OOB per questo hardware di sistema specifico, quindi avvia un aggiornamento batch.
- Segno di spunta verde : l'aggiornamento del firmware è stato completato correttamente.
- Indicatore rosso X : l'aggiornamento del firmware non è riuscito.
- Aggiornamento: il firmware è in fase di aggiornamento.
- Annulla: l'aggiornamento del firmware è stato annullato.
- Attesa: l'aggiornamento del firmware è in attesa di essere distribuito.
Per aggiornare da repository, effettuare le seguenti operazioni:
- Fare clic su Connetti al repository remoto dopo aver immesso le informazioni del repository remoto.
- Fare clic su Aggiorna per iniziare l'aggiornamento batch.
- Fare clic su Visualizza dettagli per visualizzare lo stato di aggiornamento, sono disponibili 5 categorie di stato come indicato in precedenza.
- Fare clic su Interrompi aggiornamento annullerà gli aggiornamenti in coda dopo il completamento dell'aggiornamento del pacchetto di installazione corrente.
- Fare clic su Disconnetti per scollegarlo dal repository remoto.
- Se l'aggiornamento richiede il riavvio di XClarity Controller per l'applicazione, verrà visualizzato un messaggio di avvertenza. Per dettagli su come riavviare XClarity Controller, vedere Azioni di alimentazione.
Aggiornamento con Redfish
L'interfaccia Redfish utilizza il payload in formato JSON per semplificare la lettura e la scrittura da parte dell'utente. XCC Redfish offre un'API standard (SimpleUpdate) per recuperare il file del bundle di aggiornamento da un URI tramite HTTP/HTTPS/SFTP/TFTP, nonché un aggiornamento push HTTP multiparte per eseguire il push del file del bundle di aggiornamento UpdateService. È possibile utilizzare un comando o un singolo strumento client Redfish per eseguire aggiornamenti firmware e query dello stato dell'aggiornamento.
Comando di esempio per eseguire il push del file del bundle a XCC e generare l'attività di trasferimento e verifica dei file:
curl -s -k -u USERID:PASSW0RD-F 'UpdateParameters={"Targets":[]};type=application/json' -F 'UpdateFile=@./NY7D72-IB-320.zip;type=application/octet-stream' https://10.240.218.157:443/mfwupdate
{
"ld": "f2fd6e9d-cOa6-4b11-b9f6-69a17a1 ,
"Name": "Task f2fd6e9d-cOa6-4b11-b9f6-69a17a1 e579c",
"@odata.type": "#Task.v1_5_1. Task",
"@odata.id': "[redfish/v 1 fTaskServicefTasks/f2fd6e9d-c0a6-4b11-b9f6-69a 17a1 e579c",
"Messages": [l
"Description": "This resource represents a task for a Redfish implementation."
"StartTime": "2022-03-21 TOT 16:41 +00:00",
"TaskMonitor": "/redfish/v1fTaskSen.'ice/c069ed4a-e754-4970-ab9a-922e8a3e076b",
"@odata.context": "'redfish/v1/$metadata#Task.Task",
"@odata.etag":
"PercentCompIete": O,
"HidePayload": true,
"TaskState": "New"
}
Comando di esempio per richiedere all'API di rispondere con l'ID processo per l'aggiornamento firmware, una volta completati il trasferimento e la convalida dell'immagine:
<strong className="ph b">https://10.240.218.157/
redfish/v1/TaskService/Tasks/f2fd6e9d c0a6 4b11 b9f6 69a17a1e579c</strong>
{
"@odata.etag": ,
"Name-: "Task f2fd6e9d-cOa6-4b11-b9f6-69a17a1e579c",
Task",
"IredfishNI/TaskSemcenasksff2fd6e9d-cOa6-4bI I-b9f6-69aI 7a1e579c",
"Messages": [
{
"Resolution": "Follow the referenced job and monitor the job for further updates.",
"@odata.type":
'MessageSeverity": "0K",
"MessageArgs": [
"IredfishtvI/JobService/J0bs/J0bROOOOOI-lJPdate"
],
"Messageld": "Update. 1 .O.OperationTransitionedToJob",
"Message": "The update operation has transitioned to the job at URI 'Iredfsh/vl IJobService/Jobs/JobR000001-Update'."
}
],
"Description": "This resource represents a task for a Redfish implementation.",
"HidePayIoad": true,
"StartTime":
"TaskMonitor: "'redfish1v1/TaskseNice/c069ed4a-e754-4970-ab9a-922e8a3e076b",
"TaskStatus": "0K",
"@odata.context-: "'redfish/v1/$metadata#Task.Task",
"ld": "f2fd6e9d-cOa6-4b11-b9f6-6ga17a 1 e579c",
"Percentcomplete": 100,
"EndTime": 2022-03-21
"TaskState": "Completed"
}
Eseguendo una query per l'ID processo, XCC restituisce i passaggi del processo per tutti i pacchetti firmware nel bundle di aggiornamento, come mostrato di seguito:
https://10.240.218.157/redfish/v1/JobService/Jobs/JobR000001-Update
{
"@odata.etag": "\"1647847200776\"", "PercentComplete": 100, "@odata.type": "#Job.v1_0_7.Job",
"@odata.id": "/redfish/v1/JobService/Jobs/JobR000001-Update", "Messages": [
{
"Resolution": "None.",
"@odata.type": "#Message.v1_1_2.Message", "MessageSeverity": "OK",
"MessageArgs": [ "NY7D72-IB-320.zip",
"HardDiskDrive"
],
"MessageId": "Update.1.0.UpdateSuccessful ",
"Message": " Device 'HardDiskDrive' successfully updated with image 'NY7D72-IB-320.zip'."
},
{
"Resolution": "None.",
"@odata.type": "#Message.v1_1_2.Message", "MessageSeverity": "OK",
"MessageArgs": [ "NY7D72-IB-320.zip",
"/redfish/v1/UpdateService/FirmwareInventory/UEFI"
],
"MessageId": "Update.1.0.UpdateSuccessful",
"Message": "Device '/redfish/v1/UpdateService/FirmwareInventory/UEFI' successfully updated with image 'NY7D72-IB-320.zip'. "
},
{
"Resolution": "None.",
"@odata.type": "#Message.v1_1_2.Message", "MessageSeverity": "Critical",
"MessageArgs": [ "NY7D72-IB-320.zip",
"/redfish/v1/UpdateService/FirmwareInventory/BMC-Primary"
],
"MessageId": "Update.1.0.ApplyFailed",
"Message": "Installation of image 'NY7D72-IB-320.zip' to '/redfish/v1/UpdateService/FirmwareInventory/BMC-Primary' failed."
}
],
"Description": "This resource is used to represent a job for a Redfish implementation.",
"StartTime": "2022-03-21T07:16:58+00:00",
"Id": "JobR000001-Update",
"EndTime": "2022-03-21T07:20:00+00:00",
"@odata.context": "/redfish/v1/$metadata#Job.Job", "Steps": {
"@odata.id": "/redfish/v1/JobService/Jobs/JobR000001-Update/Steps"
},
"Name": "JobR000001-Update", "StepOrder": [
"lnvgy_fw_drives_all.samsung.pm1735.cq-cq37_anyos_comp.lvt", "lnvgy_fw_uefi_ese103a-1.00_anyos_comp.uxz", "lnvgy_fw_xcc_esx301p-0.01_anyos_comp.uxz"
],
"JobState": "Completed"
Quando il passaggio del processo viene sottoposto a query, XCC restituisce informazioni aggiuntive ai singoli aggiornamenti firmware:
https://10.240.218.157/redfish/v1/JobService/Jobs/JobR000001- Update/Steps/lnvgy_fw_drives_all.samsung.pm1735.cq-cq37_anyos_comp.lvt
{
"@odata.etag": "\"1647847202778\"", "PercentComplete": 1, "@odata.type": "#Job.v1_0_7.Job",
"@odata.id": "/redfish/v1/JobService/Jobs/JobR000001-Update/Steps/lnvgy_fw_drives_all.samsung.pm1735.cq- cq37_anyos_comp.lvt",
"Messages": [],
"Description": "This resource is used to represent a job for a Redfish implementation.", "StartTime": "2022-03-21T07:16:58+00:00",
"@odata.context": "/redfish/v1/$metadata#Job.Job",
"Id": "lnvgy_fw_drives_all.samsung.pm1735.cq-cq37_anyos_comp.lvt", "Name": "lnvgy_fw_drives_all.samsung.pm1735.cq-cq37_anyos_comp.lvt", "EndTime": "2022-03-21T07:20:02+00:00",
"JobState": "Completed"
Eseguire un download dal repository remoto e aggiornare come mostrato di seguito:
system> syncrep
syncrep [options] Launch firmware sync from remote repository options:
-t protocol to connect repository. The local type will reboot host immediately. (eg: syncrep -t samba -l url -u user -p password; syncrep -t local -l /bulk/bundle.tgz;
syncrep -t http -l http://IP/bundle.tgz)
-l location of remote repository (URL format)
-u User
-p Password
-o option (extra option string for samba and nfs mounts)
-d domain (domain for samba mount)
-q query current update status
-c cancel the sync process
-r <> firmware rollback
-gl get repository list