Hello DevSecOps Automation learners!! You can do wonders by learning Ansible Automations along with me.
The Ansible can run the command module as default that is you don't need to mentioned with -m option for command. That means when you don't mention any module then it is working with the 'command module'
Ansible Shell vs Command module |
Here we will execute in details of experiment with 4 different use cases which could be part of your automation playbook construct:
- Both operate similarly
- When redirect operator used
- When pipes used between commands
- Multiple commands need to run
Let's examine these use cases
1. Both operate similarly
If we need to run single Linux command to be executed then both shell, commands modules operates same way there is no difference. Here I'm using "who -r" command to be run. If we don't mention any module name then command module by default.
# Using default command module ansible web -a "who -r" #or ansible web -m command -a "who -r" # trying with localhost also fine ansible localhost -m command -a "who -r" # using shell module here ansible web -m shell -a "who -r"
Ansible Shell vs Command module usage |
2. When the redirection operator used
# Using shell module creating a redirecting file ansible localhost -m shell -a "whoami >user.dat"
3. When pipe used between commands
# Using shell module with pipe ansible web -m shell -a "who -r|awk -F' ' '{print $3}'" # pipe is not allowed in the command module ... so fails ansible web -m command -a "who -r|awk -F' ' '{print $3}'"
Image:
# works good with shell ansible web -m shell -a "who -r && uptime" # fails to output with command module ansible web -m command -a "who -r && uptime" # command fails when ; used ansible web -m command -a "who -r; uptime" # It is okay for shell module for ; separate multiple commands ansible web -m shell -a "who -r; uptime"The execution of the above commands output Image:
Ansible Shell vs Command module using && and ; |
No comments:
Post a Comment