我正在尝试向 Puppet 中的用户默认资源添加一个要求:
User { require => Mount['/home'] }
使用 Puppet 0.25 时出现以下错误:
错误:无法从远程服务器检索目录:服务器上的错误 400:'+>' 处的语法错误;节点 ip-bar.internal 上的 /home/rpinson/puppetmaster/manifests/foo.pp:71 处的预期为 '}'
有办法实现这个吗?
答案1
在这种情况下,利用定义资源而不是资源默认值可能会更容易。
define myuser (
... # you certainly need the rest of the user attribute.
) {
user { $name:
require => Mount['/home'],
... # and the rest of your attributes.
}
}
如果您声明 myuser{'johndoe': },那么它也应该具有 mount 作为要求。
答案2
使用资源收集器:
User <| |> {
require +> Mount['/home'],
}
这增加了对所有用户实例的要求,但也有实现任何虚拟用户的副作用。
据我记得,0.25 版本支持此功能。
此外,+>
运算符不能用于常规参数定义,只能用于覆盖或收集器。请将其替换为=>
。