2016-12-01 46 views
2

我试图在/etc/fstab文件中将选项nosgid附加到/dev/shm安装。我怎样才能将这个值附加到文件中的现有选项?我尝试运行以下代码时出现错误。木偶安装类型:追加选项属性值

class osharden { 
    mount { "/dev/shm" : 
    device => 'tmpfs', 
    options +> 'nosgid', 
    fstype => tmpfs, 
    } 
} 

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Syntax error at '+>'; expected '}' at /etc/puppet/modules/osharden/manifests/init.pp:4 on node

回答

3

的plussignment运算符(+>)仅适用于附加值在覆盖一个已声明的资源的属性上下文中数组值属性。 The options attribute of the Mount resource type将单个字符串作为其值,并且您试图在资源的常规声明中使用plussignment,而不是覆盖。换句话说,plussignment是没有办法执行这项任务。

有关目标系统当前状态的信息通过节点事实传达给Puppet目录编译器。如果您像这里所说的那样,您想让Puppet考虑先前的挂载选项,那么您需要编写一个自定义或外部事实,将该信息传递给目录编译器。 Puppet本身可以将事实代码分发给客户端。然后,您将根据初始选项(包括nosgid)计算所需的选项值,并管理装载选项以获得计算值。

请注意,这比仅追加“nosgid”更复杂,因为如果它已经存在,您不想再追加该选项,并且您可能想要避免sgidnosgid都包含在选项中。您也可能希望避免出现诸如“默认值,不合理”之类的结果。

老实说,我认为所有这些可能比它的价值更麻烦。我建议管理安装选项字符串,而不考虑它的原始值。例如:

mount { "/dev/shm" : 
    ensure => 'mounted', 
    device => 'tmpfs', 
    options => 'rw,nosuid,nosgid,dev,exec,async', 
    fstype => 'tmpfs', 
    atboot => 1, 
    pass => 0, 
}