2017-11-02 14 views
0

내 기본 문제는 여기 제공자이라는 용어의 사용입니다. Monit은 서비스 상태를 실행하고 모니터링하는 공급자입니다. 하지만 monit은 시스템의 제공자에 의존하여 서비스를 시작하고 중지합니다 - sysinitv, upstart, systemd. cookbooks/poise-monit에서주방장, poise-service 및 poise-monit을 사용하여 systemd를 기본으로 사용하는 방법

나는

서비스 제공 업체

MONIT 서비스 제공자가 서비스 관리자로 MONIT를 사용하는 poise_service에게 자원을 할 수 있도록 포함되어 참조하십시오. 정상적인 poises-service의 sysvinit 공급자를 사용하여 초기화 스크립트를 생성하지만 은 Monit을 통해 서비스 상태를 관리합니다.

지금, 내가 뭘 원하는 상태를 관리 할 수 ​​MONIT를 통해 같은 redis-server 등 다양한 프로세스를 관리하지만, 기본 배관은 systemd 않습니다. systemd에서보다는 /etc/init.d/monit를 통해 시작 MONIT 자체 :

#configuration file for redis 
fnp_redis_conf = "#{node['redis']['conf_dir']}/redis.conf" 

template fnp_redis_conf do 
    source  "redis.conf.erb" 
    owner   "root" 
    group   "root" 
    mode   "0644" 
    variables  :redis => node['redis'], :redis_server => node['redis']['server'] 
end 

#instructions for systemd 
poise_service 'redis-server' do 
    provider Chef::Provider::Service::Systemd 
    command '/usr/local/bin/redis-server #{fnp_redis_conf}' 
end 

#instructions for monit to call on systemd 
poise_service 'redis-server' do 
    command 'systemctl start redis-server' 
    provider :monit 
end 

니스 가지고 :

나는 이런 식으로 뭔가를해야한다.

환경 :

macos 12 host 
Ubuntu 16.04 guest 
Chef Development Kit Version: 2.3.4 
chef-client version: 13.4.19 
delivery version: master (73ebb72a6c42b3d2ff5370c476be800fee7e5427) 
berks version: 6.3.1 
kitchen version: 1.17.0 
inspec version: 1.36.1 

답변

1

당신은 https://github.com/poise/poise-monit/blob/master/lib/poise_monit/service_providers/monit.rb는 Sysvinit의 스타일에 100 % 내장 돼 있기 때문에 자신의 서비스 제공 클래스를 만드는 것 (그것의 서브 클래스 인의 미덕에 의해). 나는 monit과 systemd를 함께 사용하는 것이별로 중요하지 않다고 생각한다. systemd는 이미 실패한 유닛을 추적하여 다시 시작한다. 너는 요리사 공동체의 여유 로움에 좀 더 직접 다가 갈 수있다.