Ansibleはスーパーバイザの再起動に問題があります


8

Ansibleプレイブックを使用してスーパーバイザを再起動しようとしていますが、Ansibleのスーパーバイザモジュールの問題に遭遇しているようです。

私のスーパーバイザー構成で、プログラムを定義しました:

[program:process]
process_name=%(program_name)s_%(process_num)02d
command=/home/box1/workers/bin/process
numprocs=64
directory=/home/box1/workers/bin
autostart=true
autorestart=true
startretries=5
stderr_logfile=/tmp/%(program_name)s-err.log
stdout_logfile=/tmp/%(program_name)s-out.log
user=root

そして、これはうまくいきます。しかし、Ansibleを介してスーパーバイザを再起動しようとすると、次のエラーが発生します。

failed: [box1] => {"failed": true}
msg: program:process: ERROR (no such process)
program:process: ERROR (no such process)

私のAnsibleタスク構成は次のようになります。

- name: Restart Supervisor
  sudo: yes
  supervisorctl: name=program:process state=restarted config=/etc/supervisor/supervisord.conf

name私が試してみましたパラメータprogram:processprogramprogram:そしてprocessどれも仕事に思えません。現在、Ansible 1.5.4を使用しています。


1
最初にすることは、Ansibleを更新することです。このような古いバージョンを使用する理由はほとんどありません。
マイケルハンプトン

これは、Ubuntu 14.04 LTSに付属している標準バージョンです。私はそれが少し古いことを理解していますが、スーパバイザモジュールに関するAnsibleマニュアルでは、更新する必要があることを何も示していません(グループの名前は関係ありません)。確かに、新しいバージョンにはバグ修正が含まれている可能性がありますが、私が試みていることは、最新バージョンでは対応できないはずのかなり初歩的なもののようです。
ルーク

アイムかなりグループのサポートが追加されたときにそれはだとあなたは、このためのAnsible 1.6以降が必要です。Red Hatでさえ最新の安定バージョン(現在1.9.4にあります)を追跡しているため、Ubuntuとの取り決めがここではわかりません。もちろんRed Hatでは、systemdを使用して、このすべてのスーパーバイザーのことを忘れることができます。
マイケルハンプトン

心配ない。これは、私が作成するドキュメントです:docs.ansible.com/ansible/supervisorctl_module.html
Luke

そう、これは1.6が必要だと言っているページと全く同じです!
マイケルハンプトン

回答:


9

supervisorctlAnsibleモジュールがサポートされていないreloadコマンド(ここを参照してください新しい設定項目をピックアップするスーパーバイザーのために必要とされます)、。

あなたはこのように自分でそれを行うことができます:

- command: supervisorctl reread
  sudo: yes
- supervisorctl: name=program:process state=restarted config=/etc/supervisor/supervisord.conf
  sudo: yes

reload / reread / update / restartに関するドキュメントが不足しているようで、このブログ投稿は古くなっています。実験reloadして、期待どおりの結果が得られることを確認できます。

最後に、プログラム定義をsupervisord.confに記述しないでください。代わりに、それらを個別のファイルとして/etc/supervisor/conf.d/*.confに配置します。これにより、インストールとメンテナンスがはるかに簡単になります。


2
それをありがとう。しかし、多くの場合、違いはありません。をsupervisorctl参照/検索できないため、タスクはまだ失敗していますprogram:process。これはこのAnsibleモジュールの問題のようです(そして、はい、プログラム定義を内に配置せずsupervisord.conf、それらは外部confファイルからロードされます)。最後に、Supervisorモジュールを完全にバイパスして、単純なAnsibleコマンドを実行しましたcommand: supervisorctl -c /etc/supervisor/supervisord.conf restart。これは完全に機能します。
ルーク

-c@luke なしで動作しますか?
tedder42 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.