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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
- 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 :
1 2 3 |
# webappserver should resolve ! webappserver |
Invoke with :
1 2 |
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.