Ansible mengalami kesulitan memulai kembali Supervisor

8

Saya mencoba untuk memulai kembali Supervisor melalui Playbook Ansible saya tetapi saya sepertinya akan mengalami masalah dengan modul supervisor untuk Ansible.

Dalam konfigurasi Supervisor saya, saya telah mendefinisikan sebuah program:

[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

Dan ini bekerja dengan baik. Namun, ketika saya mencoba me-restart Supervisor melalui Ansible saya mendapatkan kesalahan berikut:

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

Konfigurasi tugas Ansible saya terlihat seperti ini:

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

Untuk nameparameter saya telah mencoba program:process, program, program:dan processtetapi tampaknya tidak bekerja. Saya saat ini pada Ansible 1.5.4.

Luke
sumber
1
Hal pertama yang harus dilakukan adalah memperbarui Ansible. Hampir tidak ada alasan mengapa Anda harus menggunakan versi lama.
Michael Hampton
Ini adalah versi out of the box yang hadir dengan Ubuntu 14.04 LTS. Saya mengerti ini sedikit ketinggalan jaman tetapi tidak ada dalam manual Ansible sehubungan dengan modul Supervisor menunjukkan saya harus memperbarui (terlepas dari hal nama grup yang saya tidak tertarik). Memang, versi yang lebih baru mungkin memiliki perbaikan bug tetapi, apa yang saya coba tampaknya sangat sederhana bahwa bukan versi terbaru harus dapat mengatasinya.
Luke
Saya cukup yakin Anda perlu An 1.6 atau lebih baru untuk ini, karena saat itulah dukungan kelompok ditambahkan. Bahkan Red Hat sedang melacak versi stabil terbaru (mereka saat ini di 1.9.4), jadi saya tidak tahu apa masalahnya dengan Ubuntu di sini. Tentu saja di Red Hat Anda bisa menggunakan systemd dan melupakan semua hal-hal pengawas ini.
Michael Hampton
Jangan khawatir. Ini adalah dokumentasi yang saya pakai
Luke
Benar, dan itulah halaman yang sama yang mencatat bahwa Anda membutuhkan 1,6!
Michael Hampton

Jawaban:

9

The supervisorctlmodul Ansible tidak mendukung reloadperintah ( lihat di sini ), yang diperlukan untuk atasan untuk mengambil entri konfigurasi baru.

Anda bisa melakukannya sendiri seperti ini:

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

Dokumentasi tentang memuat ulang / membaca ulang / memperbarui / memulai kembali sepertinya tidak ada, dan posting blog ini sudah usang ; Anda dapat bereksperimen untuk memastikan reloadmelakukan apa yang Anda harapkan.

Terakhir, jangan letakkan definisi program Anda di supervisord.conf . Sebagai gantinya, letakkan sebagai file individual di /etc/supervisor/conf.d/*.conf. Itu membuat instalasi dan pemeliharaan lebih mudah.

tedder42
sumber
2
Terima kasih untuk itu. Sangat dihargai, bagaimanapun, itu tidak membuat perbedaan. The supervisorctltugas masih gagal karena tidak dapat referensi / menemukan program:process. Ini tampaknya menjadi masalah dalam modul Ansible ini (dan ya, saya tidak menempatkan definisi program saya di dalam supervisord.confdan mereka dimuat dari conffile eksternal ). Pada akhirnya saya pergi dengan perintah Ansible sederhana, melewati modul Supervisor sama sekali: command: supervisorctl -c /etc/supervisor/supervisord.conf restartdan ini bekerja dengan sempurna.
Luke
apakah itu bekerja tanpa -c, @ Lukas?
tedder42