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

时间:2016-12-01 19:35:43

标签: puppet

我正在尝试将选项nosgid附加到/dev/shm文件中的/etc/fstab装载。如何将此值附加到文件中的现有选项?我尝试运行以下代码时收到错误。

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

错误:无法从远程服务器检索目录:SERVER上的错误400:'+>'处的语法错误;在节点上的/etc/puppet/modules/osharden/manifests/init.pp:4预期'}'

1 个答案:

答案 0 :(得分:3)

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

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

请注意,这比仅附加“,nosgid”更复杂,因为如果它已经存在,您不想再次附加该选项,并且您可能希望避免sgidnosgid这两个选项被包括在选项中。您可能还想避免使用“defaults,nosgid”等结果。

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

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