Ansible Playbook运行Shell命令

我最近在我的一台服务器上安装了Ansible,发现它非常有趣,而且省时。 我正在运行一个Ubuntu专用服务器,并已经configuration了多个用Python编写的Web应用程序,还有一些用PHP编写的。 对于Python,我使用uwsgi作为HTTP网关。 我写了shell脚本来启动/重新启动几个进程,以运行特定的Web应用程序的实例。 我每次必须做的是连接ssh并导航到特定的应用程序并运行脚本。

我需要的

我一直在试图find一种方法来编写Ansible的手册,以完成从我的个人计算机执行所有命令,但我不知道如何做到这一点。 我还没有find一个非常有说服力的(对于初学者)文档或在互联网上的帮助。

如何用Ansible playbook重新启动Nginx? 我怎样才能杀死进程ID的进程?

你甚至不需要一个剧本来做到这一点:

  • 重新启动nginx:

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

(请参阅服务模块 )

  • 通过进程ID杀死一个进程

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

(调整信号,如果需要匹配一个名称,请使用pkill / killall;请参阅命令模块 )

但是,如果您只是将它用于临时命令,我不会说这是可以理解的。

如果你需要一个教程,让你开始使用的手册,有一个在这里 。

现在,如果你可以把这些(官方名称为服务,命令等是模块 )放在一个剧本(我们称之为playbook.yml),你可以:

 - 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 

创建一个清单文件( hosts ),其中包含:

 # webappserver should resolve ! webappserver 

调用:

 ansible playbook.yml -i hosts 

它应该工作。

这是非常基本的,可以很容易地阅读文档或任何教程。