12

私は最近、自分のサーバーの 1 つで Ansible に飛び込みましたが、非常に興味深く、時間を節約できることがわかりました。私は Ubuntu 専用サーバーを実行しており、Python で記述された多数の Web アプリケーションと PHP でいくつかの Web アプリケーションを構成しています。Python の場合、HTTP ゲートウェイとして uwsgi を使用しています。特定の Web アプリケーションのインスタンスを実行するために、いくつかのプロセスを開始/再起動するシェル スクリプトを作成しました。私が毎回しなければならないことは、ssh に接続してその特定のアプリケーションに移動し、スクリプトを実行することです。

必要なもの

Ansible プレイブックを作成して、パーソナル コンピューターから 1 行のコマンドですべてを実行する方法を見つけようとしていますが、その方法がわかりません。非常に説明的な (初心者向けの) ドキュメントやインターネット上のヘルプは見つかりませんでした。

質問

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 が優れているとは言えません。

Playbook の使用を開始するためのチュートリアルが必要な場合は、こちらにあります。

これら (サービス、コマンドなどの正式な名前はモジュール) をプレイブック (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 に答える