Chef infra 在chef上,使用poise service和poise monit,我如何使用systemd作为基础

Chef infra 在chef上,使用poise service和poise monit,我如何使用systemd作为基础,chef-infra,monit,Chef Infra,Monit,这里我的根本问题是“提供者”一词的使用。Monit是运行和监视服务状态的提供程序。但是monit反过来依赖于系统上的提供者来启动和停止服务——sysinitv、upstart、systemd 从我看来 服务提供商 包括monit服务提供商以允许poise_服务 资源将Monit用作服务管理器。这使用正常的 来自poise服务的sysvinit提供程序生成初始化脚本,但是 通过Monit管理服务状态 现在,我想做的是管理各种进程,例如通过Monit管理状态的redis server,但是syste

这里我的根本问题是“提供者”一词的使用。Monit是运行和监视服务状态的提供程序。但是monit反过来依赖于系统上的提供者来启动和停止服务——sysinitv、upstart、systemd

从我看来

服务提供商

包括monit服务提供商以允许poise_服务 资源将Monit用作服务管理器。这使用正常的 来自poise服务的sysvinit提供程序生成初始化脚本,但是 通过Monit管理服务状态

现在,我想做的是管理各种进程,例如通过Monit管理状态的
redis server
,但是
systemd
做底层管道

我是否应该这样做:

#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
很好:在
systemd
下启动monit本身,而不是通过
/etc/init.d/monit

环境:

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

您必须创建自己的服务提供者类,因为它100%硬连接到sysvinit样式(由于它是它的子类)。我想我看不出将monit和systemd一起使用有多大意义,systemd已经跟踪失败的单元并重新启动它们。你可以直接通过厨师社区联络我