题 如何使用puppet启用systemd实例化服务?


我有以下傀儡服务:

service { "getty@ttyUSB0.service": 
    provider => systemd,
    ensure => running,
    enable => true,
}

当我尝试在我的客户端上应用此配置时,它会引发以下错误:

错误:/Stage[main]//Node[puppetclient]/Service[getty@ttyUSB0.service]/enable:从false更改为true失败:无法启用getty@ttyUSB0.service:

该服务运行正常,我可以通过向getty.target.wants添加符号链接来确保它在系统启动时启动:

ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttyUSB0.service

在源代码中,我可以继续从服务定义中删除“enable => true”并在puppet配置中手动包含符号链接,但是不应该用木偶来处理这个问题吗?我做错了什么吗?


8
2018-06-04 16:53






答案:


今天Puppet中的systemd提供程序仅使用两个命令来进行服务 enable 州:

  • systemctl is-enabled <unit>,检查当前启用状态的返回码
  • systemctl enable/disable <unit> 改变它

启用尚不存在的getty @ service实例时,enable命令会引发错误:

$ sudo systemctl enable getty@ttyUSB0.service
Failed to issue method call: No such file or directory

然后这会导致Puppet中显示的错误(虽然似乎没有显示stderr)。

它看起来像是systemd中的一个缺口,你无法启用模板的新实例。已经有了 BZ#752774在Fedora,但评论表明可能不会很快添加。

提交申请可能会更好 功能要求 反对Puppet专门为启用新实例添加支持。在您的功能请求中,我建议链接到 Lennart对单位实例的解释 为背景。


6
2018-06-04 23:28