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.