Ansible gặp khó khăn khi khởi động lại Giám sát


8

Tôi đang cố gắng khởi động lại Trình giám sát thông qua Ansible Playbook nhưng dường như tôi đang vấp phải một vấn đề với mô-đun giám sát cho Ansible.

Trong cấu hình Giám sát của tôi, tôi đã xác định một chương trình:

[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

Và điều này hoạt động tốt. Tuy nhiên, khi tôi cố gắng khởi động lại Trình giám sát thông qua Ansible, tôi gặp phải lỗi sau:

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

Cấu hình tác vụ Ansible của tôi trông như thế này:

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

Đối với các namethông số tôi đã cố gắng program:process, program, program:processnhưng không ai có vẻ làm việc. Tôi hiện đang sử dụng Ansible 1.5.4.


1
Điều đầu tiên cần làm là cập nhật Ansible. Hầu như không có lý do tại sao bạn nên có một phiên bản cũ như vậy.
Michael Hampton

Đây là phiên bản mới nhất đi kèm với Ubuntu 14.04 LTS. Tôi hiểu rằng nó hơi cũ nhưng không có gì trong hướng dẫn sử dụng Ansible liên quan đến mô-đun Giám sát cho biết tôi nên cập nhật (ngoài điều tên nhóm mà tôi không quan tâm). Cấp, một phiên bản mới hơn có thể có sửa lỗi, nhưng những gì tôi đang thử có vẻ khá thô sơ rằng không phải là phiên bản mới nhất có thể xử lý được.
Lu-ca

Tôi khá chắc chắn rằng bạn cần Ansible 1.6 trở lên cho việc này, vì đó là khi hỗ trợ nhóm được thêm vào. Ngay cả Red Hat cũng đang theo dõi phiên bản ổn định mới nhất (hiện đang có trên 1.9.4), vì vậy tôi không biết thỏa thuận với Ubuntu ở đây là gì. Tất nhiên trên Red Hat bạn chỉ có thể sử dụng systemd và quên đi tất cả những thứ giám sát này.
Michael Hampton

Đừng lo lắng. Đây là tài liệu tôi sắp tắt: docs.ansible.com/ansible/supervisorctl_module.html
Luke

Phải, và đó là cùng một trang ghi chú bạn cần 1.6!
Michael Hampton

Câu trả lời:


9

Các supervisorctlmô-đun Ansible không hỗ trợ các reloadlệnh ( xem tại đây ), đó là cần thiết cho người giám sát để lấy mục cấu hình mới.

Bạn có thể tự làm như thế này:

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

Tài liệu về tải lại / đọc lại / cập nhật / khởi động lại dường như bị thiếu và bài đăng trên blog này đã hết hạn ; bạn có thể thử nghiệm để đảm bảo reloadlàm những gì bạn mong đợi.

Cuối cùng, đừng đặt định nghĩa chương trình của bạn trong giám sát . Thay vào đó, hãy đặt chúng dưới dạng các tệp riêng lẻ trong /etc/supervisor/conf.d/*.conf. Điều đó làm cho việc cài đặt và bảo trì dễ dàng hơn nhiều.


2
Cảm ơn vì điều đó. Nhiều đánh giá cao, tuy nhiên, nó không làm cho một sự khác biệt. Các supervisorctlnhiệm vụ vẫn thất bại bởi vì nó không có thể tham khảo / tìm ra program:process. Đây dường như là một vấn đề trong mô-đun Ansible này (và vâng, tôi không đặt các định nghĩa chương trình của mình bên trong supervisord.confvà chúng được tải từ các conftệp bên ngoài ). Cuối cùng, tôi đã sử dụng một lệnh Ansible đơn giản, bỏ qua mô-đun Giám sát hoàn toàn: command: supervisorctl -c /etc/supervisor/supervisord.conf restartvà điều này hoạt động hoàn hảo.
Luke

Nó hoạt động mà không có -c, @luke?
tedder42
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.