Ansible Command Module With Examples
Ansible Command Module:
Ansible command module is used to run any commands or run any scripts in the remote target machine.
With the command module, you can run any Linux or shell commands in the target machine.
ansible command module ad hoc:
ansible web -m command -a "cp /tmp/devops.txt /home/project/devops.txt"
here web is my target server hostname, you can mention your server hostname or group name, so this command will execute on this server.
-m represents module name
-a represents arguments
copy a file by using ansible command module:
- name: copy a file by using ansible command module command: cp /tmp/devops.txt /home/project/devops.txt
when you execute this task the devops.txt file in tmp will be copied to /home/project in the remote target server.
so this will completely be executed on the target server(machine)
NOTE: this task is not copying a file from ansible master to target server, this file copying from one location to another location in target server(machine).
run a script by using ansible command module:
- name: Execute the script by using ansible command module command: "/bin/sh {{ jboss_dir }}/bin/add-user.sh”
it will execute that add-user.sh shell script
here jboss_dir is a variable. this variable value is defined in the default.yml file in the role or any other variable files.
running ansible command module with creates args :
- name: running command module with args command: /usr/bin/add_user.sh args: creates: "/devops/jboss/abc.txt"
here add_user.sh script will run only when /devops/jboss/abc.txt doesn't exist
if the file has already existed then this task will skip
here creates is an argument, you can pass chdir argument depends on your requirement.
creates:
in this argument we will provide the path of a file, If the file already exists then this step won't be run, it will skip that task.
chdir:
here we will provide a path to the directory, so the commands will execute in this directory or Change the shell into this directory before running the command.
ansible command module with multiple commands or with_items:
- name: ansible command module with_items command: "{{ item }}" with_items: - cp /tmp/httpd.service /usr/lib/systemd/system/httpd.service - mv /usr/lib/systemd/system/httpd.service /usr/lib/systemd/system/httpd.service.bk
It will Copy the httpd_service file from temp to system and
It will rename the file from httpd.service to httpd.service.bk in the remote target server.
so we use with_items to run multiple commands in a loop. here you can pass any number of commands depends on your requirement.
ansible command module with chdir:
- name: Running "make install" for httpd 2.4 command: 'make install chdir=/usr/local/src/httpd-2.4/'
it will execute ’make install’ command in /usr/local/src/httpd-2.4/ not in ansible default user directory
or shell will be changed into this directory before running the make install command.
- ansible command module with arguments
- multiple arguments ansible command module output
- examples ansible command module multiple commands
- command module ansible playbook example
- ansible command module multiple lines
- ansible command module ignore the error