Ansible Playbook to run Shell commands

Question:

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?

Answer:

You don’t even need a playbook to do this :

  • Restarting nginx :

ansible your_host -m service -a 'name=nginx state=restarted'

  • Kill a process by process id

ansible your_host -m command -a 'kill -TERM your_pid'

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 :

Create an inventory file (hosts) containing :

Invoke with :

and it should work.

This is all very basic and can be grasped easily reading the docs or any tutorial out there.

Leave a Reply