Qual é a diferença entre shell e comando em Ansible?

Qual é a diferença entre shell e comando em Ansible?

No núcleo Ansible, existem diferentes módulos Ansible incluídos para quase todos os tipos de casos de uso. Os módulos também são conhecidos como 'biblioteca ou plugins de tarefas', unidades discretas de código usadas na tarefa do manual ou na linha de comando. Cada módulo Ansible geralmente é executado no nó de destino remoto e coleta a saída de retorno. Os dois módulos Ansible mais usados ​​são shell e comando.

O módulo Shell em Ansible é usado para executar todos os comandos de shell contra os hosts baseados em destino Unix. O módulo Shell executa comandos em nós ou scripts de shell. Outro módulo Ansible dedicado é o script que transfere o script do shell da máquina de controle para o servidor remoto e o executa. No módulo de comando, o comando fornecido é executado em todos os nós selecionados. O comando executado não será processado através do shell.

Os módulos Ansible são quase semelhantes e executam as mesmas tarefas na primeira visão, mas existem algumas diferenças cruciais entre esses módulos. Aqui, mencionaremos neste artigo algumas diferenças principais entre o shell e os módulos de comando em Ansible.

Diferente entre shell vs. Módulo de comando em Ansible

Na maioria dos casos de uso, os módulos de shell e de comando executam o mesmo trabalho. No entanto, existem poucas diferenças principais entre esses dois módulos.

Suporte de variável e operações

Ao usar o módulo de comando, os comandos não serão executados através de um shell. Consequentemente, variáveis ​​como $ home não estão disponíveis e operações como, | e não funcionará neste caso. Se você deseja usar essas variáveis ​​e operações, você precisa usar um módulo de shell.

Execução de comando

No módulo Shell, os comandos são executados através de um shell ou por padrão no nó remoto '/bin/sh'. Como mencionamos acima, no módulo de comando, a execução dos comandos não é processada através do shell. O local pode ser alterado com uma opção executável. Os recursos de tubulação e redirecionamento estão, portanto, disponíveis no módulo Shell.

Segurança

Se você deseja executar um comando previsivelmente e com segurança, é recomendável usar o módulo de comando em vez do shell. O módulo de comando não será afetado pelo ambiente do usuário; portanto; é mais seguro que o módulo de shell.

Conclusão

Embora ambos os módulos sejam úteis, você deve primeiro verificar se um módulo Ansible mais específico está disponível para a tarefa fornecida. É prática melhor usar módulos em vez de executar o comando bruto, porque os módulos cumprem todos os padrões, incluindo o manuseio de exceções. Se você achar que não há módulo disponível, é mais seguro usar os módulos de comando porque as tarefas não serão afetadas pelo ambiente do usuário Configuração. Use os módulos de shell se precisar de alguns recursos e operações de variáveis ​​específicas.