Qual è la differenza tra shell e comando in ansible?

Qual è la differenza tra shell e comando in ansible?

Nel nucleo Ansible, ci sono diversi moduli ansible inclusi per quasi tutti i tipi di casi d'uso. I moduli sono anche noti come "plug -in libreria o attività", unità discrete di codice utilizzate sull'attività di playbook o sulla riga di comando. Ogni modulo Ansible di solito esegue sul nodo target remoto e raccoglie l'output di restituzione. I due moduli Ansible più comunemente usati sono shell e comando.

Il modulo shell in Ansible viene utilizzato per eseguire tutti i comandi shell rispetto agli host basati su UNIX di destinazione. Il modulo shell esegue comandi in nodi o script di shell. Un altro modulo Ansible dedicato è lo script che trasferisce lo script shell dalla macchina di controllo al server remoto ed lo esegue. Nel modulo di comando, il comando dato esegue su tutti i nodi selezionati. Il comando eseguito non verrà elaborato tramite la shell.

I moduli Ansible sono quasi simili ed eseguono le stesse attività alla prima vista, ma ci sono alcune differenze cruciali tra questi moduli. Qui, menzioneremo in questo articolo alcune principali differenze tra i moduli di shell e comandi in Ansible.

Diverso tra shell vs. Modulo di comando in Ansible

Nella maggior parte dei casi d'uso, sia i moduli di shell che di comando eseguono lo stesso lavoro. Tuttavia, ci sono poche differenze principali tra questi due moduli.

Supporto variabile e operativo

Durante l'utilizzo del modulo di comando, i comandi non verranno eseguiti tramite una shell. Di conseguenza, variabili come $ home non sono disponibili e operazioni come, | e e non funzionerà in questo caso. Se si desidera utilizzare queste variabili e operazioni, è necessario utilizzare un modulo shell.

Esecuzione del comando

Nel modulo shell, i comandi vengono eseguiti tramite una shell o per impostazione predefinita nel nodo remoto '/bin/sh'. Come abbiamo menzionato sopra, nel modulo di comando, l'esecuzione dei comandi non viene elaborata attraverso la shell. La posizione può essere modificata con un'opzione eseguibile. Le caratteristiche di tubazioni e reindirizzamento sono quindi disponibili nel modulo shell.

Sicurezza

Se si desidera eseguire un comando prevedibilmente e in modo sicuro, si consiglia di utilizzare il modulo di comando anziché la shell. Il modulo di comando non sarà influenzato dall'ambiente dell'utente, quindi; è più sicuro del modulo shell.

Conclusione

Sebbene entrambi i moduli siano utili, dovresti prima verificare se un modulo ANSIBLE più specifico è disponibile per l'attività data. È migliore pratica utilizzare i moduli invece di eseguire il comando grezzo perché i moduli soddisfano tutti gli standard, inclusa la gestione delle eccezioni. Se trovi che non è disponibile un modulo, è più sicuro utilizzare i moduli di comando perché le attività non saranno interessate attraverso l'impostazione dell'ambiente utente. Utilizzare i moduli shell se sono necessarie alcune caratteristiche e operazioni variabili specifiche.