我正在使用salt-stack来管理我的生产机器。 奴才运行Raspbian,我和我已经配置了systemd服务。服务配置文件位于/lib/systemd/system/my_service.service
当我运行以下命令时:
sudo salt my_minion service.stop my_service
返回以下错误:
ERROR: Unable to run command ['/etc/init.d/my_service', 'stop'] with the context {'with_communicate': True, 'shell': False, 'env': {'LANG': 'en_GB.UTF-8', 'PATH': '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', 'LC_ALL': 'C'}, 'stdout': -1, 'close_fds': True, 'stdin': None, 'stderr': -2, 'cwd': '/root'}, reason: [Errno 2] No such file or directory
我知道salt尝试使用sysvinit而不是systemd。
有没有办法告诉盐使用systemd?
修改
尝试添加
providers:
service: systemd
按照Eric的建议>到/ etc / salt / minion。仍然得到相同的错误
编辑2
从2015.8.3开始,使用Erics建议+升级版盐水来修复问题至2015.8.8
答案 0 :(得分:2)
这几乎可以肯定,因为较新的Raspbian基于Debian 8,而Salt的系统执行模块无法正确检测较新的Raspbian需要systemd。 OP可以使用sudo salt my_minion grains.items
的输出回复此消息吗?请编辑您认为有个人身份信息的任何谷物,我主要对处理操作系统名称和版本的谷物感兴趣。
编辑:还有一件事。请确认Raspbian框中存在/run/systemd/system
。我认为这里发生的是两个模块都声称是提供service
模块的模块。
https://github.com/saltstack/salt/pull/32421应该解决这个问题,但你可以通过在你的Raspbian爪牙上添加以下/etc/salt/minion
来立即解决这个问题(无需等待新的Salt版本):
providers:
service: systemd