12

我最近为我的一台服务器深入研究了 Ansible,发现它非常有趣且节省时间。我正在运行一个 Ubuntu 专用服务器,并配置了许多用 Python 编写的 Web 应用程序和一些用 PHP 编写的 Web 应用程序。对于 Python,我使用 uwsgi 作为 HTTP 网关。我编写了 shell 脚本来启动/重新启动一些进程,以便运行特定 Web 应用程序的实例。我每次都要做的是,连接 ssh 并导航到该特定应用程序并运行脚本。

我需要的

我一直在尝试找到一种方法来编写 Ansible 剧本,以便在我的个人计算机上使用一行命令来完成所有这些工作,但我不知道如何做到这一点。我还没有在互联网上找到非常解释性(对于初学者)的文档或帮助。

问题

如何使用 Ansible playbook 重启 Nginx?如何通过进程 ID 杀死进程?

4

1 回答 1

14

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

  • 重启nginx:

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

(见服务模块

  • 通过进程 id 杀死进程

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

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

但是,如果您只是将它用于临时命令,我不会说 ansible 会发光。

如果你需要一个教程来帮助你开始使用剧本,这里有一个

现在,如果您可以将这些(服务、命令等的正式名称是modules)放在剧本中(我们称之为 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

它应该可以工作。

这都是非常基础的,可以通过阅读文档或任何教程轻松掌握。

于 2013-11-24T19:28:54.033 回答