我有以下傀儡服务:
service { "[email protected]":
provider => systemd,
ensure => running,
enable => true,
}
当我尝试在客户端上应用此配置时,它会引发以下错误:
错误:/Stage[main]//Node[puppetclient]/Service[[电子邮件保护]]/enable:从 false 更改为 true 失败:无法启用[电子邮件保护]:
该服务运行良好,我可以通过向 getty.target.wants 添加符号链接来确保它在系统启动时启动:
ln -s /lib/systemd/system/[电子邮件保护]/etc/systemd/system/getty.target.wants/[电子邮件保护]
当然,我可以继续从服务定义中删除“enable => true”,并在 puppet 配置中手动包含符号链接,但 puppet 不应该处理这个问题吗?我做错了什么吗?
答案1
目前 Puppet 中的 systemd 提供程序仅使用两个命令来获取服务enable
状态:
systemctl is-enabled <unit>
,检查当前启用状态的返回代码systemctl enable/disable <unit>
去改变它
当启用不存在的 getty@ 服务实例时,enable 命令会引发错误:
$ sudo systemctl enable [email protected]
Failed to issue method call: No such file or directory
这会导致 Puppet 中显示错误(尽管 stderr 似乎没有显示)。
在我看来,这似乎是 systemd 中的一个漏洞,导致您无法启用模板的新实例。已经有Fedora 中的 BZ#752774,但评论表明它可能不会很快被添加。
你最好提交功能要求反对 Puppet 添加专门用于启用新实例的支持。在您的功能请求中,我建议链接到Lennart 对单位实例的解释作为背景。