web-dev-qa-db-ja.com

シェルコマンドを実行するためのAnsiblePlaybook

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

必要なもの

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

質問

AnsibleプレイブックでNginxを再起動するにはどうすればよいですか?プロセスIDでプロセスを強制終了するにはどうすればよいですか?

10
Rai Ehtisham

これを行うのにプレイブックも必要ありません:

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

プレイブックを使い始めるためのチュートリアルが必要な場合は、1つあります ここ

これら(サービス、コマンドなどの正式な名前は 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

そしてそれはうまくいくはずです。

これはすべて非常に基本的なものであり、ドキュメントやチュートリアルを読んで簡単に理解できます。

13
leucos