È possibile utilizzare vSphere Client, l’interfaccia grafica fornita da VMware, e VMware vSphere Web/HTML5 Client, basato su web, per gestire gli host ESXi e l’ambiente VMware. Anche se la maggior parte delle impostazioni è disponibile nell’interfaccia grafica, talvolta potresti aver bisogno di ottenere informazioni o modificare una configurazione che non è visualizzata nell’interfaccia grafica.
In questo caso, è necessario utilizzare l’interfaccia della riga di comando (CLI) o la “console”, che consente di configurare tutte le impostazioni, comprese quelle nascoste. Oltre ai comandi tradizionali che sono gli stessi in Linux ed ESXi, ESXi ha i propri comandi ESXCLI.
Questo post del blog è stato creato nel formato di un catalogo che elenca i comandi ESXCLI utili, che fanno parte dei comandi della shell ESXi.
Come aprire la console della shell ESXi
Per impostazione predefinita, la shell ESXi è disabilitata per l’accesso locale e remoto. Ciò significa che non è possibile eseguire i comandi della shell ESXi fino a quando non si abilita la shell ESXi o l’accesso SSH. VMware impone questa restrizione per motivi di sicurezza.
Esaminiamo i tre metodi principali per abilitare l’interfaccia della riga di comando in ESXi.
Abilitare l’accesso alla console utilizzando l’interfaccia ESXi predefinita
Questo metodo viene utilizzato quando si ha accesso fisico a un host ESXi, inclusi il monitor e la tastiera dell’host.
- Nell’Interfaccia utente della console diretta ESXi (DCUI), vai su Opzioni di risoluzione dei problemi, naviga su Abilita shell ESXi e Abilita SSH, e premi Invio per abilitare ciascuna opzione.
- Dopo aver abilitato la shell ESXi, premi Alt+F1 per aprire la console sulla macchina in esecuzione ESXi. Dovresti inserire il tuo nome utente e la password dopo (le credenziali dell’utente root possono essere utilizzate).
- Puoi eseguire comandi della shell ESXi.
- Se hai bisogno di tornare alla DCUI di ESXi, premi Alt+F2. L’opzione Abilita SSH ti consente di aprire la console ESXi in remoto utilizzando un client SSH.
Abilitazione dell’accesso alla console utilizzando VMware Host Client
- Apri un browser web e inserisci l’indirizzo IP del tuo host ESXi nella barra degli indirizzi, quindi effettua l’accesso.
- Vai su Ospite > Azioni > Servizi e clicca su Abilita Secure Shell (SSH) per abilitare l’accesso SSH fino al riavvio di ESXi.
Allo stesso modo, puoi abilitare la shell della console su un host ESXi locale nel menu Servizi . Vai su Gestione > Servizi. Fai clic con il pulsante destro del mouse sul servizio TSM-SSH. Premi Policy > Avvia e ferma con l’host per abilitare l’accesso SSH anche dopo il riavvio di ESXi.
- Ora puoi connetterti alla console ESXi utilizzando il tuo client SSH in remoto.
Abilitare l’accesso alla console utilizzando vCenter e VMware vSphere Client
Questo metodo può essere utilizzato se il tuo host ESXi è gestito da vCenter Server.
- Accedi a VMware HTML5 vSphere Client in un browser web.
- Vai su Host e cluster e seleziona il tuo host ESXi.
- Seleziona la scheda Configura, apri Sistema >Servizi, e fai clic su SSH nell’elenco dei servizi.
- Premi Avvia per avviare il server SSH una volta o premi Modifica la politica di avvio e seleziona Avvia e Arresta con l’host se desideri abilitare il server SSH per un periodo prolungato. Puoi anche abilitare la shell ESXi nel menu Servizi.
Una volta abilitato l’accesso SSH, puoi connetterti a un host ESXi con un client SSH in remoto ed eseguire comandi ESXCLI.
Connessione via SSH
Per connettersi alla console ESXi in remoto tramite SSH, nella console Linux, esegui le seguenti azioni.
- Esegui un comando come:
ssh 192.168.101.221
o
dove 192.168.101.221 è l’indirizzo IP del server ESXi utilizzato in questo esempio.
- È necessario inserire il nome utente e la password dell’utente ESXi (root può essere utilizzato come utente amministrativo predefinito su ESXi).
Allo stesso modo, puoi connetterti da un host ESXi a un altro tramite SSH nella riga di comando.
In Windows, puoi utilizzare PuTTY:
- Apri PuTTY
- Inserisci l’indirizzo IP dell’host ESXi e la porta.
- Premi Apri per connetterti all’host ESXi tramite SSH.
La connessione a un host ESXi tramite SSH e l’esecuzione di comandi ESXCLI in remoto è l’approccio più comunemente utilizzato e sicuro.
Come installare ESXCLI in Linux
Il modo alternativo per eseguire comandi ESXCLI in remoto è installare ESXCLI su Linux. Python deve essere installato a tale scopo. Di seguito sono riportati i principali passaggi per l’installazione di ESXCLI in Linux:
- Esegui il backup della tua macchina Linux prima di apportare modifiche al sistema.
- Scarica ESXCLI dal sito web di VMware
- Estrai i contenuti dall’archivio esxcli-8.0.0-22179150.tgz scaricato (esegui come root):
tar zxf esxcli-8.0.0-22179150.tgz -C /opt/vmware
- Esegui l’installazione di ESXCLI con il comando:
python setup.py install
- Provare a connettersi a un host ESXi e eseguire un comando in ESXCLI in remoto:
esxcli --server indirizzo_IP_ESXI --help
Si otterrà un errore perché ESXi richiede una relazione fidata tra gli host:
Errore del certificato. Impronta digitale SHA-256 del server: 64:CC:E5:F8:A4:AA:F6:9B:58:55:78:B7:E3:B3:69:10:83:3B:22:3C:BB:17:3D:12:28:D1:CD:E9:48:7A:FF:AA (non fidato)
- Per risolvere questo problema, eseguire il comando specificando un nome utente, una password e l’impronta digitale visualizzata nel messaggio di output precedente:
esxcli --server 192.168.101.101 --username root --password 'tua_password' --thumbprint 64:CC:E5:F8:A4:AA:F6:9B:58:55:78:B7:E3:B3:69:10:83:3B:22:3C:BB:17:3D:12:28:D1:CD:E9:48:7A:FF:AA --help
In alternativa, è possibile provare a installare un certificato su una macchina Linux. Un certificato è memorizzato in /etc/vmware/ssl/rui.crt su un host ESXi.
Panoramica dei comandi ESXCLI
ESXCLI, parte della shell ESXi, è un framework CLI per gestire un’infrastruttura virtuale (componenti ESXi come hardware, rete, storage, ecc.) e controllare ESXi stesso a un livello basso. Tecnicamente, ESXCLI è uno script Python (/bin/esxcli.py in ESXi). Tutti i comandi ESXCLI devono essere eseguiti nella shell ESXi (console). In generale, esxcli
è il comando che ha una vasta lista di sottocomandi chiamati namespace e relative opzioni. Il comando esxcli
è presente subito dopo l’installazione di ESXi, insieme ad altri comandi della shell ESXi.
Puoi individuare esxcli ed esplorare la natura di ESXCLI dopo aver eseguito i seguenti comandi:
which esxcli
ls -l /sbin/esxcli
Come puoi verificare controllando l’output della console, ESXCLI è uno script scritto in Python che si trova nella directory /sbin/. Se desideri vedere il contenuto dello script, puoi utilizzare l’editor di testo integrato vi.
In sostanza, la sintassi di ESXCLI è la seguente:
esxcli [opzioni] {namespace}+ {cmd} [opzioni del comando]
Quindi, ESXCLI consiste in rami che sono le principali categorie (namespace) dei comandi ESXCLI. Nota che i comandi esxcli sono sensibili alle maiuscole e minuscole, analogamente ad altri comandi della console utilizzati in ESXi. L’intera lista di tutti i namespace e comandi ESXCLI disponibili viene visualizzata dopo aver eseguito il comando:
esxcli elenco comandi esxcli
La lista dei comandi ESXCLI disponibili dipende dalla versione di ESXi. Possono essere aggiunti nuovi comandi.
Quindi, la lista dei principali namespace di ESXCLI per ESXi 8.0 è la seguente:
- dispositivo – comandi del gestore dispositivi
- esxcli – comandi relativi all’ESXCLI stesso
- fcoe – comandi Fibre Channel over Ethernet
- grafica – comandi grafici VMware
- hardware – comandi per controllare le proprietà hardware e configurare l’hardware
- iscsi – comandi iSCSI VMware
- rete – questo spazio dei nomi include una vasta gamma di comandi per gestire le impostazioni generali della rete host (come l’indirizzo IP, le impostazioni DNS di un host ESXi, il firewall) e i componenti di rete virtuali come vSwitch, gruppi di porte, ecc.
- nvme – gestione delle estensioni per il driver VMware NVMe
- rdma – comandi per gestire lo stack di protocolli di accesso diretto alla memoria remota
- sched – comandi utilizzati per configurare la pianificazione e le proprietà di sistema VMkernel
- software – gestione delle immagini software ESXi e dei pacchetti per ESXi
- archiviazione – comandi utilizzati per gestire l’archiviazione
- sistema – comandi per configurare le proprietà di sistema VMkernel, il nucleo del kernel di sistema e i servizi di sistema
- vm – alcuni comandi che possono essere utilizzati per controllare le operazioni della macchina virtuale
- vsan – comandi VMware vSAN
I principali comandi appaiono come verbi che indicano la stessa azione:
- elenco – mostra l’elenco degli oggetti disponibili per lo spazio dei nomi definito (ad esempio,
esxcli hardware bootdevice list
– elenca i dispositivi di avvio disponibili) - ottenere – ottenere il valore dell’impostazione o della proprietà definita (ad esempio,
esxcli hardware clock get
– controllare l’ora impostata) - impostare – impostare manualmente il parametro necessario (ad esempio,
esxcli hardware clock set -y 2024 -s 00
– impostare l’anno su 2024 e impostare i secondi su 00) - caricare/scaricare – caricare/scaricare la configurazione di sistema (
esxcli network firewall load
– caricare il modulo firewall e le impostazioni del firewall memorizzate nel file di configurazione)
Se non riesci a ricordare un particolare comando ESXCLI relativo allo spazio dei nomi appropriato, puoi inserire il comando e vedere un suggerimento nell’output della console.
Per esempio, digita:
esxcli network
per vedere tutti i comandi disponibili per lo spazio dei nomi network
e poi digita:
esxcli network vm
per controllare i comandi per lo spazio dei nomi vm.
Il file di registro ESXCLI si trova in /var/log/esxcli.log
I dati vengono scritti su questo file se un comando ESXCLI non è stato eseguito correttamente. Se un comando ESXCLI viene eseguito correttamente, nulla viene scritto su questo file di registro.
Comandi ESXCLI utili
Ora che sei familiare con il principio di funzionamento di base dei comandi ESXCLI, diamo un’occhiata a esempi specifici di comandi utili che possono essere utilizzati in VMware vSphere. L’elenco dei comandi ESXCLI considerati in questo articolo è suddiviso in categorie equivalenti ai nomi dei namespace.
Comandi per controllare i dettagli dell’hardware in ESXi
Utilizzando il namespace hardware, puoi visualizzare le informazioni complete sui dispositivi installati.
- Per visualizzare i dispositivi PCI installati, esegui il seguente comando ESXCLI:
esxcli hardware pci list | more
- Controlla la quantità di memoria installata sul server ESXi:
esxcli hardware memory get
- Visualizza le informazioni dettagliate sui processori installati:
esxcli hardware cpu list
Comandi del sistema ESXCLI
In questa sezione, puoi vedere i comandi del namespace ESXCLI system.
- Controlla la versione precisa di ESXi e il numero di build, inclusi il numero di aggiornamenti e patch installati:
esxcli system version get
- Controlla il nome host di un server ESXi:
esxcli system hostname get
- Controlla l’ora di installazione di ESXi:
esxcli system stats installtime get
- Controlla la configurazione SNMP:
esxcli system snmp get
- Entra in modalità di manutenzione dell’host ESXi:
esxcli system maintenanceMode set --enable yes
- Esci dalla modalità di manutenzione:
esxcli system maintenanceMode set --enable no
Dopo aver inserito un host ESXi in modalità di manutenzione, puoi spegnere o riavviare l’host.
- Spegne un host ESXi:
esxcli system shutdown poweroff
- Il comando per riavviare l’host è simile:
esxcli system shutdown reboot
- Puoi anche impostare un ritardo e scrivere una ragione per riavviare l’host da salvare nei log di sistema:
esxcli system shutdown reboot -d 60 -r "Installazione patch"
In questo esempio, il ritardo è di 60 secondi.
Un altro comando è impostare il messaggio di benvenuto personalizzato invece di uno schermo di sfondo standard con un menu principale inattivo sfumato in cui viene visualizzato il suggerimento “<F2> Personalizza sistema/Visualizza log <F12> Arresta/Riavvia” e viene visualizzato l’indirizzo IP per gestire l’host. Nota che dopo aver impostato un messaggio di benvenuto personalizzato, vedrai solo questo messaggio impostato sullo schermo nero. Puoi digitare “Premi F2″ manualmente per evitare confusione.
- Il messaggio personalizzato può essere utilizzato per nascondere informazioni sul tuo host ESXi sul display collegato all’host ESXi quando un utente non è connesso.
esxcli system welcomemsg set -m="Benvenuto in NAKIVO! Premi F2"
- Verifica se il messaggio di benvenuto è già impostato:
esxcli system welcomemsg get
Comandi di rete ESXCLI
Il namespace network è uno dei più grandi namespace di ESXCLI. Esploriamo i comandi che possono essere utili per la diagnostica.
- Controlla lo stato delle connessioni di rete attive:
esxcli network ip connection list
- Visualizza l’elenco degli adattatori di rete installati:
esxcli network nic list
- Mostra le informazioni sulle interfacce di rete:
esxcli network ip interface list
- Mostra le informazioni sugli indirizzi IP delle interfacce di rete presenti sul server:
esxcli network ip interface ipv4 get
- Mostra le informazioni di rete per le VM:
esxcli network vm list
- Visualizza le impostazioni di ricerca del dominio:
esxcli network ip dns search list
- Visualizza i server DNS impostati nelle impostazioni di rete:
esxcli network ip dns server list
- Elenca commutatori virtuali e gruppi di porte:
esxcli network vswitch standard list
- Mostra le statistiche per l’interfaccia di rete vmnic0:
esxcli network nic stats get -n vmnic0
- Verifica lo stato del firewall e le impostazioni delle regole:
esxcli network firewall get
esxcli network firewall ruleset list
NOTA: La politica di firewall predefinita è quella di eliminare il traffico se non sono impostate le regole opposte.
- È possibile disabilitare temporaneamente il firewall su un host ESXi per risolvere problemi:
esxcli network firewall set –enabled false - Il firewall deve essere abilitato con il comando:
esxcli network firewall set –enabled true
Si consiglia di abilitare il firewall ESXi per motivi di sicurezza.
Il network namespace include molti comandi. Solo i più basilari e i più popolari di essi sono considerati nella sezione Network del post di oggi. È possibile configurare un numero elevato di parametri di rete con ESXCLI, ma richiederebbe una lunga spiegazione che esula dall’ambito dell’articolo di oggi.
Comandi ESXCLI di storage
Il storage namespace ti permette di controllare ed editare le impostazioni di storage.
- Controlla le informazioni su volumi VMFS montati:
esxcli storage vmfs extent list - Visualizza le mappe dei file system VMFS su dispositivi di disco:
esxcli storage filesystem list - Elenca tutti i percorsi iSCSI nel sistema:
esxcli storage core path list
- Visualizza l’elenco delle condivisioni NFS montate:
esxcli storage nfs list
Come controllare SMART in ESXCLI
S.M.A.R.T. is useful for disk diagnostics and for preventing disk failure. You can read the S.M.A.R.T. data and, if you discover that something is wrong with your disk, you can make a timely decision to replace the disk.
- In primo luogo, elenca tutti i dispositivi di archiviazione e individua il nome del dispositivo univoco (vedi lo screenshot qui sotto):
esxcli storage core device list
- Quindi utilizza il comando per ottenere i dati S.M.A.R.T. di quel dispositivo disco:
esxcli storage core device smart get -d naa.50026b7267020435
dove naa.50026b7267020435 è il nome del dispositivo utilizzato in questo esempio.
Verifica l’elenco dell’adattatore iSCSI
iSCSI è un protocollo ampiamente utilizzato per accedere all’archiviazione condivisa a livello di blocco, e c’è uno spazio dei nomi separato iscsi in ESXCLI per la gestione dell’archiviazione iSCSI.
- Mostra l’elenco degli adattatori iSCSI disponibili:
esxcli iscsi adapter list
- Ripristinare la scoperta e il rilevamento dei dispositivi iSCSI:
esxcli iscsi adapter discovery rediscover -A nome_adapter esxcli storage core adapter rescan -A nome_adapter
Invece di
Verificare la lista dei VIB software per ESXi
I pacchetti software destinati a ESXi sono generalmente distribuiti come file VIB (vSphere installation bundle). Un file VIB è simile a un contenitore con pacchetti compressi che possono essere installati nel sistema, con un file descrittivo e un file di firma. A loro volta, i VIB sono generalmente distribuiti come file racchiusi in un file archivio nel formato ZIP standard. Potrebbe essere necessario includere i VIB in un’immagine ESXi per utilizzare l’hardware appropriato o installare i VIB in un sistema esistente per applicare una patch di sicurezza.
- È possibile visualizzare l’elenco dei pacchetti VIB installati nel tuo host ESXi:
esxcli software vib list - È possibile installare un VIB con ESXCLI (il host ESXi deve essere in modalità manutenzione):
esxcli software vib install -d /vmfs/volumes/datastore1/patches/nome_patch.zip
Gestione delle operazioni VM in ESXCLI
Lo spazio dei nomi vm può essere utilizzato per operazioni sui processi delle macchine virtuali in esecuzione.
- Controllare l’elenco delle VM in esecuzione e visualizzare i loro ID World:
esxcli vm process list
È possibile terminare la macchina virtuale non rispondente con i comandi della shell ESXi. Utilizzare ESXCLI, in questo caso, può essere utile quando una VM non può essere spenta utilizzando l’interfaccia grafica, come l’interfaccia grafica di VMware vSphere Client, VMware Host Client o VMware Workstation.
- Spegnere la VM utilizzando l’ID World visualizzato nell’output del comando
esxcli vm process list
. Nell’esempio corrente, l’ID World della VM necessaria è 75498.esxcli vm process kill -w 75498 -t soft
- Se il tipo di comando soft non è stato utile, considerare di eseguire uno spegnimento immediato della VM utilizzando il metodo hard.
esxcli vm process kill -w 75498 -t hard
Ci sono tre opzioni di comando disponibili per il comando kill:
- soft – viene inviato un segnale corretto nel sistema operativo guest per spegnere correttamente una VM
- hard – una VM viene spenta immediatamente
- Forza – La VM viene spenta in modo simile a come un computer viene spento quando si stacca il cavo di alimentazione. Utilizzare solo questo tipo di spegnimento della VM se i due tipi precedenti non hanno avuto successo.
Altri comandi utili della shell ESXi
Oltre ai comandi ESXCLI, è possibile utilizzare molti comandi della shell ESXi:
- Apri l’interfaccia utente DCUI di ESXi dalla console (i colori sono diversi quando ci si connette alla shell ESXi tramite SSH):
dcui
Premi Ctrl+C per tornare al prompt dei comandi.
- Converti un disco virtuale con provisioning spesso in un disco virtuale con provisioning sottile utilizzando vmkfstools:
vmkfstools -i /vmfs/volumes/vmfs_datastore/nome_vm/disco_spesso.vmdk -d sottile /vmfs/volumes/vmfs_datastore/nome_vm/nome_nuovo_disco_sottile.vmdk
Tra i comandi della shell ESXi, vmkfstools è un comando potente per eseguire operazioni di storage e gestire dispositivi di archiviazione, volumi VMFS e dischi virtuali. Leggi di più sul provisioning spesso e sottile e sul ridimensionamento del disco virtuale nel post del blog.
- Aprire il task manager di ESXi:
esxtop Dopo aver aperto il task manager con il comando
esxtop , è possibile passare tra le schede premendo i tasti appropriati:C – CPU
I – interrupt
M – memoria
N – rete
D – adattatore disco
U – dispositivo disco
V – VM disco
P – gestione potenza
- Trova il file nella directory corrente:
find . -name filename.txt - Sostituisci il carattere . con il nome della directory in cui desideri trovare un file e sostituisci
filename.txt
con il nome del tuo file. Ad esempio, se desideri trovare un file diskname.vmdk nella directory /vmfs/volumes/, esegui il comando:find /vmfs/volumes/ -name diskname.vmdk
- Apri la console interattiva VMware:
vsish
- Mostra i driver vmkernel caricati:
vmkload_mod --list
- Verifica le impostazioni della partizione di swap:
esxcli sched swap system get
- Puoi elencare gli utenti utilizzando uno dei seguenti comandi:
esxcli system account list
cat /etc/passwd or less/etc/passwd
- Puoi vedere tutti i comandi ESXi situati nella directory sbin:
ls /usr/sbin
Creazione di un nuovo utente
Ci sono almeno due metodi per creare un nuovo utente ESXi utilizzando i comandi della shell ESXi.
Il comando ESXi adduser
- Se digiti il comando
adduser
nella console ESXi, riceverai il messaggio:-sh: adduser: not found
- Dovresti definire il percorso completo al binario appropriato di busybox per eseguire questo comando:
/usr/lib/vmware/busybox/bin/busybox adduser
Ora puoi vedere le opzioni di utilizzo per questo comando.
- Infine, esegui il comando esatto per aggiungere un utente del sistema ESXi:
/usr/lib/vmware/busybox/bin/busybox adduser -s /bin/sh -G root -h / user1
Dove:
-s /bin/sh è lo shell utilizzato dopo il login dell’utente;
-G root – il nome del gruppo di cui l’utente nuovo è membro (il gruppo root);
-h / è il directory home (la directory root) dell’utente nuovo;
user1 è il nome utente.
- Inserisci una nuova password e conferma la password quando richiesto.
Crea un utente in ESXCLI
Come alternativa, puoi aggiungere un nuovo utente con un solo comando utilizzando ESXCLI:
esxcli system account add -d="NAKIVO user" -i="nakivo" -p="Password-Test321" -c="Password-Test321"
Dove:
-d significa la descrizione visualizzata
-p è la password impostata per il nuovo utente
-c è la conferma della password
Quale metodo scegliere per creare un nuovo utente nella riga di comando? Il comando singolo utilizzato nel secondo metodo potrebbe sembrare conveniente, ma non in termini di sicurezza. Se ricordi, c’era un messaggio di avviso visualizzato subito dopo aver effettuato l’accesso allo shell ESXi:
Tutti i comandi eseguiti sull’interfaccia a riga di comando di ESXi sono registrati e possono essere inclusi nei bundle di supporto. Non fornire password direttamente sulla riga di comando. La maggior parte degli strumenti può richiedere segreti o accettarli dall’input standard.
Se la sicurezza è una preoccupazione per te, inserisci comandi senza includere le password come testo normale nei comandi. Se è necessaria una password, di solito viene richiesta e può essere inserita nell’input di console standard. Ad esempio, se desideri creare un nuovo utente con ESXCLI, utilizza un comando come:
esxcli system account add -d="user2" -i="user2" -p -c
Verrà richiesta separatamente una password ESXi e non sarà visualizzata nella console durante l’inserimento della password.
Conclusione
Esistono comandi della console VMware per gestire i componenti del sistema, la rete, l’archiviazione, il software VIB e le macchine virtuali. L’uso dell’interfaccia a riga di comando in ESXi ti dà più potere oltre alle gradevoli interfacce utente grafiche di VMware vSphere Client e VMware Host Client.
Puoi utilizzare i comandi shell ESXi localmente e i comandi SSH ESXi in remoto per visualizzare e configurare le impostazioni che sono nascoste o non disponibili nell’interfaccia grafica. Usa la lista di comandi ESXi fornita in questo post del blog per ottimizzare finemente ESXi e sperimenta il potere aggiuntivo dell’uso dell’interfaccia a riga di comando in VMware vSphere.
Puoi imparare di più leggendo riguardo PowerCLI, un altro tipo di interfaccia a riga di comando per gestire VMware vSphere da Windows PowerShell.
Source:
https://www.nakivo.com/blog/most-useful-esxcli-esxi-shell-commands-vmware-environment/