Ansible에서 관리자를 다시 시작하는 데 어려움이 있습니다


8

Ansible Playbook을 통해 Supervisor를 다시 시작하려고하지만 Ansible의 supervisor 모듈에 문제가있는 것 같습니다.

내 Supervisor 설정에서 프로그램을 정의했습니다.

[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을 통해 Supervisor를 다시 시작하려고하면 다음 오류가 발생합니다.

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:process, program, program:그리고 process하지만 아무도 제대로 작동하지 않습니다. 현재 Ansible 1.5.4에 있습니다.


1
가장 먼저 할 일은 Ansible을 업데이트하는 것입니다. 이전 버전을 사용해야하는 이유는 거의 없습니다.
Michael Hampton

Ubuntu 14.04 LTS와 함께 제공되는 기본 버전입니다. 나는 그것이 약간 오래되었지만 Supervisor 모듈과 관련하여 Ansible 매뉴얼에서 업데이트해야한다고 표시하지 않습니다 (관심이없는 그룹 이름과는 별개). 물론, 최신 버전에는 버그 수정이있을 수 있지만, 내가 시도하는 것은 최신 버전이 아니라면 그것을 처리 할 수 ​​있다는 것은 매우 기초적인 것 같습니다.
Luke

그룹 지원이 추가 될 때 당신이 그의,이 1.6 이상을 Ansible 필요가있다. Red Hat조차도 최신 안정 버전 (현재 1.9.4에 있음)을 추적하고 있으므로 우분투와의 거래가 무엇인지 모르겠습니다. 물론 Red Hat에서는 systemd를 사용하고이 모든 감독자를 잊어 버릴 수 있습니다.
Michael Hampton

걱정 마. 이것은 내가 떠나는 문서입니다. docs.ansible.com/ansible/supervisorctl_module.html
Luke

맞습니다. 1.6이 필요하다는 것을 알려주는 페이지와 동일합니다.
Michael Hampton

답변:


9

supervisorctlAnsible 모듈은 지원하지 않습니다 reload명령 ( 여기에서 볼 새 구성 항목을 데리러 관리자에 필요).

다음과 같이 스스로 할 수 있습니다.

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

다시로드 / 다시 읽기 / 업데이트 / 다시 시작에 대한 설명서가 누락 된 것 같습니다. 이 블로그 게시물이 오래되었습니다 . 당신은 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이는 완벽하게 작동합니다.
Luke

-c@luke 없이 작동 합니까?
tedder42
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.