最近、サーバーの1つでAnsibleに飛び込んだところ、非常に興味深く、時間を節約できることがわかりました。私はUbuntu専用サーバーを実行しており、PythonとPHPでいくつかのWebアプリケーションを構成しています。Pythonの場合、HTTPとしてuwsgiを使用していますゲートウェイ。特定のWebアプリケーションのインスタンスを実行するために、いくつかのプロセスを開始/再起動するシェルスクリプトを作成しました。毎回行う必要があるのは、sshに接続し、その特定のアプリケーションに移動してスクリプトを実行することです。
必要なもの
私は、1行のコマンドでパーソナルコンピューターからすべてを実行するためのAnsibleプレイブックを作成する方法を見つけようとしてきましたが、その方法がわかりません。私はインターネット上で非常に説明的な(初心者向けの)ドキュメントやヘルプを見つけていません。
質問
AnsibleプレイブックでNginxを再起動するにはどうすればよいですか?プロセスIDでプロセスを強制終了するにはどうすればよいですか?
これを行うのにプレイブックも必要ありません:
ansible your_Host -m service -a 'name=nginx state=restarted'
( サービスモジュール を参照)
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
そしてそれはうまくいくはずです。
これはすべて非常に基本的なものであり、ドキュメントやチュートリアルを読んで簡単に理解できます。