En el núcleo ansible, hay diferentes módulos ansibles incluidos para casi todos los tipos de casos de uso. Los módulos también se conocen como 'complementos de biblioteca o tareas', unidades discretas de código utilizadas en la tarea del libro de jugadas o la línea de comandos. Cada módulo ansible generalmente se ejecuta en el nodo de destino remoto y recoge la salida de retorno. Los dos módulos Ansible más utilizados son Shell and Command.
El módulo de shell en Ansible se usa para ejecutar todos los comandos de shell contra los hosts basados en unix de destino. El módulo shell ejecuta comandos en nodos o scripts de shell. Otro módulo ansible dedicado es el script que transfiere el script de shell desde la máquina de control al servidor remoto y la ejecuta. En el módulo de comando, el comando dado se ejecuta en todos los nodos seleccionados. El comando ejecutado no se procesará a través del shell.
Los módulos ansibles son casi similares y realizan las mismas tareas en la primera vista, pero hay algunas diferencias cruciales entre estos módulos. Aquí, mencionaremos en este artículo algunas diferencias principales entre el shell y los módulos de comando en Ansible.
Diferente entre Shell Vs. Módulo de comando en Ansible
En la mayoría de los casos de uso, tanto los módulos de shell como de comando realizan el mismo trabajo. Sin embargo, hay pocas diferencias principales entre estos dos módulos.
Soporte de variables y de operaciones
Mientras usa el módulo de comando, los comandos no se ejecutarán a través de un shell. En consecuencia, variables como $ Home no están disponibles, y operaciones como, | y y no funcionará en este caso. Si desea usar estas variables y operaciones, debe usar un módulo de shell.
Ejecución de comando
En el módulo shell, los comandos se ejecutan a través de un shell o de forma predeterminada en el nodo remoto '/bin/sh'. Como hemos mencionado anteriormente, en el módulo de comando, la ejecución de los comandos no se procesa a través del shell. La ubicación se puede cambiar con una opción ejecutable. Por lo tanto, las funciones de tuberías y redirección están disponibles en el módulo de shell.
Seguridad
Si desea ejecutar un comando previsible y de forma segura, se recomienda usar el módulo de comando en lugar del shell. El módulo de comando no se verá afectado por el entorno del usuario, entonces; es más seguro que el módulo de shell.
Conclusión
Aunque ambos módulos son útiles, primero debe verificar si hay un módulo Ansible más específico disponible para la tarea dada. Es la mejor práctica usar módulos en lugar de ejecutar el comando sin procesar porque los módulos cumplen todos los estándares, incluido el manejo de excepciones. Si encuentra que no hay módulo disponible, es más seguro usar los módulos de comando porque las tareas no se verán afectadas a través de la configuración del entorno del usuario. Use los módulos de shell si necesita algunas características y operaciones de variables específicas.