Puppet 挂载类型:追加选项属性值

Puppet mount type: append option attribute value

我正在尝试将选项 nosgid 附加到 /etc/fstab 文件中的 /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

加号运算符 (+>) 仅适用于在 overriding[=28= 的上下文中将值附加到 array-valued 属性] 已声明资源的属性。 The options attribute of the Mount resource type 将单个字符串作为其值,并且您正尝试在资源的常规声明中使用加号,而不是覆盖。换句话说,plussignment 无法完成此任务。

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

请注意,这比仅附加“,nosgid”更复杂,因为如果该选项已经存在,您不想再次附加该选项,并且您可能希望避免 sgidnosgid 两者都包含在选项中。您可能还想避免 "defaults,nosgid".

这样的结果

老实说,我认为这一切可能带来的麻烦多于它的价值。我建议管理安装选项字符串,而不考虑其原始值。例如:

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