Ansible Playbook to run Shell commands
You don't even need a playbook to do this :
- Restarting nginx :
ansible your_host -m service -a 'name=nginx state=restarted'
(see service module)
- Kill a process by process id
ansible your_host -m command -a 'kill -TERM your_pid'
(adjust signal, and use pkill/killall if you need to match a name; see command module)
However, I wouldn't say that ansible shines if you're just using it for ad-hoc commands.
If you need a tutorial to get you started with playbooks, there is one over here.
Now if you can to put these (the official name for service, commands, etc.. are modules) in a playbook (let's call it playbook.yml), you can just :
- hosts: webappserver
tasks:
- name: Stops whatever
command: kill -TERM your_pid
notify:
- Restart nginx
- name: Another task
command: echo "Do whatever you want to"
handlers:
- name: Restart nginx
service: name=nginx state=restarted
Create an inventory file (hosts
) containing :
# webappserver should resolve !
webappserver
Invoke with :
ansible playbook.yml -i hosts
and it should work.
This is all very basic and can be grasped easily reading the docs or any tutorial out there.
Rai Ehtisham
Python,PHP,Java and Frontend Developer with experties in Oracle Administration and SQL.
Updated on December 18, 2020Comments
-
Rai Ehtisham over 3 years
I recently dived into Ansible for one of my servers, and found it really interesting and time saving. I am running an Ubuntu dedicated server and have configured number of web applications written on Python and a few on PHP. For Python I am using uwsgi as the HTTP gateway. I have written shell scripts to start/restart a few processes in order to run the instance of a specific web application. What I have to do everytime is, connect ssh and navigate to that specific application and run the script.
WHAT I NEED
I've been trying to find a way to write Ansible playbook to do all that from my personal computer with one line of command, but I have no clue how to do that. I have'nt found a very explanatory (for a beginner) documentation or help on the internet.
QUESTION
How can I restart Nginx with Ansible playbook? How can I kill a process by process id?
-
Rai Ehtisham over 10 yearsI'm not talking about ad-hoc commands. When restarting a project's instance, my shell script kills the process by id and then starts the process again and clears any logs generated by the application. I need to know, is it possible to do it in a playbook to avoid running that shell script every time i want to restart the instance, by logging into the server using ssh and bla bla bla.
-
leucos over 10 yearsYes. The commands I mentioned can be put in a playbook. See edited answer.
-
Rai Ehtisham over 10 yearsThx for the help, will get back to you on this in a few hours
-
leucos over 10 yearsNice ! Good luck with Ansible, it's great !