Esecuzione di comandi in un'istanza
Puoi configurare, gestire e risolvere i problemi in remoto delle istanze di computazione eseguendo script all'interno dell'istanza utilizzando la funzione Esegui comando.
Ad esempio, la funzione Esegui comando consente di automatizzare attività quali la configurazione di schede di interfaccia di rete virtuale secondaria (VNIC), il join di istanze a un provider di identità, la risoluzione dei problemi di connettività SSH o la risposta a scenari di disaster recovery tra più aree.
È possibile eseguire comandi su un'istanza anche quando l'istanza non dispone dell'accesso SSH o non apre le porte in entrata.
La funzione Esegui comando utilizza il plugin Comando esecuzione istanza di computazione gestito dal software dell'agente Oracle Cloud.
Non utilizzare la funzione Esegui comando per fornire o recuperare password, segreti o altre informazioni riservate in testo normale. Per fornire e recuperare informazioni riservate in modo sicuro, utilizzare una posizione di panoramica dello storage degli oggetti per memorizzare il file di script e la risposta. Utilizzare Oracle Cloud Infrastructure Vault per gestire le chiavi e le credenziali segrete.
Per le autorizzazioni, vedere Criterio IAM obbligatorio per l'utilizzo delle istanze.
Immagini supportate
La funzione Esegui comando è supportata nelle istanze di computazione che utilizzano le immagini della piattaforma riportate di seguito.
- Oracle Autonomous Linux
- Oracle Linux
- CentOS
- Windows Server
Le immagini personalizzate basate su un'immagine di piattaforma supportata supportano anche la funzione Esegui comando.
Aree supportate
La funzione Esegui comando è supportata in tutte le aree del regime commerciale di Oracle Cloud Infrastructure.
Limitazioni e considerazioni
- Nelle istanze Linux, lo script viene eseguito in una shell Bash per impostazione predefinita. Per eseguire lo script con un altro programma, utilizzare
#!/<path_to_program>
come prima riga dello script. -
Nelle istanze di Windows, lo script viene eseguito in una shell batch per impostazione predefinita. Per eseguire lo script con PowerShell, utilizzare
#ps1
come prima riga dello script.Vedere uno script PowerShell di esempioNell'esempio riportato di seguito viene utilizzato PowerShell per eseguire una query sul servizio metadati dell'istanza e stampare l'OCID dell'istanza.
#ps1 $instance = Invoke-RestMethod -Headers @{'Authorization' = 'Bearer Oracle'} -Uri http://169.254.169.254/opc/v2/instance/ Write-Host ('Instance OCID is ' + $($instance.id))
- La dimensione massima per un file di script caricato direttamente in un'istanza in testo normale è di 4 KB. Per fornire un file di dimensioni maggiori, salvare il file in una posizione di storage degli oggetti.
- L'output di uno script quando viene restituito come testo normale è limitato agli ultimi 1 KB. Per salvare una risposta più grande, salvare l'output in una posizione di storage degli oggetti.
- Quando si utilizza una posizione di storage degli oggetti per salvare il file di script o la risposta, l'istanza deve disporre di una connettività in uscita, ad esempio un gateway NAT (Network Access Translation), un gateway di servizio o un gateway Internet. L'istanza deve inoltre consentire il traffico in uscita sulla porta 443 per il software dell'agente Oracle Cloud, lo storage degli oggetti e IAM.
-
Per impostazione predefinita, è possibile eseguire due script alla volta. Per modificare l'impostazione predefinita, aggiornare il file di configurazione del comando di esecuzione:
cat /etc/oracle-cloud-agent/plugins/runcommand/config.yml
Impostare i parametri riportati di seguito.
logDir: /var/log/oracle-cloud-agent/plugins/runcommand commandExecutionMaxWorkers: <number-of-parallel-scripts>
- Un massimo di cinque script possono essere in volo alla volta. Uno script viene considerato in esecuzione se ricevuto dal plugin Comando esecuzione istanza di computazione, ma non ancora eliminato dalla coda.
- Per eseguire task con tempi di esecuzione lunghi, utilizzare la funzione Esegui comando per pianificare un job cron nell'istanza. Orchestrazione dei comandi non supportata.
- Ogni script viene eseguito una volta. Se si desidera che uno script venga eseguito più volte, utilizzare cron per configurare una pianificazione per lo script.
- Gli script che richiedono informazioni non sono supportati. È tuttavia possibile utilizzare il servizio IMDS (Instance Metadata Service) per recuperare a livello di programmazione le informazioni sull'istanza in cui viene eseguito lo script.
- Quando si crea un'istanza da un'immagine personalizzata che dispone già delle autorizzazioni per il plugin Comando esecuzione istanza di computazione configurato, sostituire
101-oracle-cloud-agent-run-command
con100-oracle-cloud-agent-run-command
nel file di configurazione. - I codici di uscita restituiti sono codici di errore standard di Linux. Un codice di uscita
0
indica che l'operazione è riuscita. - Se si applica un timeout facoltativo per uno script, l'impostazione predefinita è un'ora. Il massimo è di 24 ore.
- Il tempo massimo di esecuzione di uno script è di un giorno.
- Per monitorare le risorse utilizzate dagli script, ad esempio l'utilizzo della CPU, utilizzare metrics.
- Annullare uno script è il miglior tentativo. I comandi non possono essere annullati dopo aver terminato l'esecuzione o se sono scaduti.
- I file di script e le risposte salvate in testo normale vengono conservati per sette giorni. I file di script e le risposte salvate in una posizione di storage degli oggetti vengono conservati fino a quando non vengono eliminati.
- Non eseguire uno script che causi l'arresto del software dell'agente Oracle Cloud o del plugin Comando esecuzione istanza di computazione.
Esecuzione di comandi con privilegi di amministratore
Se un comando richiede autorizzazioni di amministratore, è necessario concedere le autorizzazioni di amministratore al plugin Comando esecuzione istanza di computazione per poter eseguire il comando. Il plugin viene eseguito come utente ocarun
.
È possibile utilizzare cloud-init (cloudbase-init su Windows) per configurare le autorizzazioni all'avvio dell'istanza o connettersi a un'istanza dopo che l'istanza è stata avviata e configurare le autorizzazioni manualmente. La procedura per concedere le autorizzazioni di amministratore dipende dal sistema operativo.
Per concedere autorizzazioni sudo alle istanze Linux
-
Nell'istanza, creare un file di configurazione dei sudoer per il plugin Comando esecuzione istanza di computazione:
vi ./101-oracle-cloud-agent-run-command
-
Consentire all'utente
ocarun
di eseguire tutti i comandi come sudo aggiungendo la riga seguente al file di configurazione:ocarun ALL=(ALL) NOPASSWD:ALL
Facoltativamente, è possibile elencare comandi specifici. Per ulteriori informazioni, vedere la pagina man Linux per
sudoers
. -
Verificare che la sintassi nel file di configurazione sia corretta.
visudo -cf ./101-oracle-cloud-agent-run-command
Se la sintassi è corretta, viene restituito il messaggio seguente:
./101-oracle-cloud-agent-run-command: parsed OK
-
Aggiungere il file di configurazione a
/etc/sudoers.d
:sudo cp ./101-oracle-cloud-agent-run-command /etc/sudoers.d/
Per concedere autorizzazioni di amministratore alle istanze di Windows
-
Nell'istanza, eseguire il comando seguente in PowerShell:
Add-LocalGroupMember -Group "Administrators" -Member "NT SERVICE\OCARUN" | Restart-Service -Name OCARUN -Force
Informazioni preliminari
- Il plugin Comando esecuzione istanza di computazione deve essere abilitato nell'istanza e i plugin devono essere in esecuzione. Per ulteriori informazioni su come abilitare ed eseguire i plugin, vedere Agente Oracle Cloud.
- Lo script che si desidera eseguire è stato preparato. Si consiglia di eseguire il test del comando in un ambiente non di produzione prima di distribuirlo nelle istanze che eseguono i flussi di lavoro di produzione.
- Per fornire il file di script da una posizione di storage degli oggetti, caricare il file immagine in un bucket di storage degli oggetti nella stessa area dell'istanza di destinazione. Prendere nota del bucket e del nome file oppure dell'URL di storage degli oggetti per il file. Per utilizzare lo stesso comando tra le tenancy, creare un URL di richiesta preautenticata che punti al file.
- Per salvare l'output del comando in una posizione di storage degli oggetti, creare un bucket in cui salvarlo, nella stessa area dell'istanza di destinazione. Prendere nota del nome del bucket o dell'URL di storage degli oggetti per il bucket. Facoltativamente, puoi salvare l'output del comando utilizzando una richiesta preautenticata che punta a una posizione di storage degli oggetti.
- Per le immagini della piattaforma rilasciate prima di ottobre 2020, è necessario aggiornare il software Oracle Cloud Agent a una versione che supporti il plugin Comando di esecuzione dell'istanza di computazione (versione 1.5.1 o successiva).
Uso della console
- Aprire il menu di navigazione e selezionare Computazione. In Computazione, selezionare Istanze.
- Fare clic sull'istanza a cui si è interessati.
- In Resources, fare clic su Run command.
- Fare clic su Crea comando.
- Immettere un nome per il comando. Evitare di fornire informazioni riservate.
- Nella casella Timeout in secondi, immettere il periodo di tempo per concedere al plugin Comando esecuzione istanza di computazione di eseguire il comando sull'istanza prima del timeout. Il timer viene avviato quando il plugin avvia il comando. Per nessun timeout, immettere 0.
-
Nella sezione Aggiungi script caricare lo script che si desidera che il plugin Comando di esecuzione istanza di computazione esegua sull'istanza. Selezionare una delle opzioni seguenti.
- Incolla script: incollare il comando nella casella.
- Seleziona un file: caricare lo script come file di testo (.txt). Individuare il file che si desidera caricare o trascinare il file nella casella.
- Importa da un bucket di storage degli oggetti: selezionare il bucket che contiene il file script. Nella casella Nome oggetto, immettere il nome del file.
- Importa da un URL di storage degli oggetti: immettere l'URL di storage degli oggetti per il file di script.
-
Nella sezione Tipo di output selezionare la posizione in cui salvare l'output del comando:
- Output in formato testo: l'output viene salvato in formato testo. È possibile rivedere l'output nella pagina Dettagli istanza.
- Output in un bucket di storage degli oggetti: l'output viene salvato in un bucket di storage degli oggetti. Selezionare un bucket. Nella casella Nome oggetto, immettere un nome per il file di output. Evitare di fornire informazioni riservate.
- Output in un URL di storage degli oggetti: l'output viene salvato in un URL di storage degli oggetti. Immettere l'URL.
- Fare clic su Crea comando.
Se l'output del comando è stato salvato in una posizione di storage degli oggetti, scaricare l'oggetto di risposta dal bucket in cui è stato salvato o passare all'URL della richiesta preautenticazione dello storage degli oggetti.
Se l'output del comando è stato salvato come file di testo semplice, effettuare le operazioni riportate di seguito.
- Aprire il menu di navigazione e selezionare Computazione. In Computazione, selezionare Istanze.
- Fare clic sull'istanza a cui si è interessati.
- In Resources, fare clic su Run command.
- Individuare il comando nella lista, fare clic sul , quindi su Visualizza dettagli comando.
- Aprire il menu di navigazione e selezionare Computazione. In Computazione, selezionare Istanze.
- Fare clic sull'istanza a cui si è interessati.
- In Resources, fare clic su Run command.
- Trovare il comando nell'elenco, fare clic sul , quindi fare clic su Cancel, comando. Confermare quando richiesto.
Utilizzo dell'API
Per informazioni sull'uso dell'API e delle richieste di firma, consulta la documentazione dell'API REST e le credenziali di sicurezza. Per informazioni sugli SDK, vedere SDK e l'interfaccia CLI.
Utilizzare le seguenti operazioni API per utilizzare la funzione Esegui comando:
Risoluzione dei problemi del plugin comando di esecuzione istanza di computazione
Per risolvere i problemi del plugin Comando esecuzione istanza di computazione, è possibile visualizzare i log generati dal plugin. Connettersi all'istanza, quindi utilizzare quanto riportato di seguito.
tail -f /var/log/oracle-cloud-agent/plugins/runcommand/runcommand.log
Per una maggiore visibilità sulle operazioni del plugin senza dover connettersi all'istanza, è possibile creare log personalizzati utilizzando il servizio Oracle Cloud Infrastructure Logging.
Registra errori
In questa sezione viene descritto come risolvere gli errori visualizzati nel file di log.
Polling non riuscito
Se il plugin Comando di esecuzione dell'istanza di computazione non riesce a eseguire il polling dei comandi, potrebbe verificarsi il seguente errore nel file di log:
poll command err: circuitbreaker:[pollCommand] is open, last err:Service error:NotAuthorizedOrNotFound. Authorization failed or requested resource not found. http status code: 404.
Questo errore può verificarsi quando il criterio del gruppo dinamico per la funzione Esegui comando non è abilitato o se l'istanza è stata aggiunta di recente al gruppo dinamico. Per impostazione predefinita, le istanze non appartengono ai gruppi di amministratori della tenancy, pertanto è necessario impostare in modo esplicito le autorizzazioni dei gruppi dinamici per l'istanza.
Quando crei un'istanza e la aggiungi a un gruppo dinamico, l'avvio del polling dei comandi richiede fino a 30 minuti. Se si crea prima il gruppo dinamico e quindi l'istanza, l'istanza inizia a eseguire il polling dei comandi non appena viene creata l'istanza.
Per eseguire il test del criterio del gruppo dinamico non appena si aggiunge l'istanza a un gruppo dinamico, riavviare il servizio manualmente utilizzando uno dei comandi riportati di seguito.
Oracle Linux 7.x e Oracle Linux 8.x
sudo systemctl restart oracle-cloud-agent
Windows Server
net restart ocarun