需要挂载文件并且在挂载后也更新文件吗?

需要挂载文件并且在挂载后也更新文件吗?

我正在尝试确保挂载目录存在,然后在挂载完成后更新该目录的权限。我收到以下错误:

err: Failed to apply catalog: Cannot alias File[pre_eos_mount] to ["/var/tmp/eos"] at /etc/puppet/modules/mymodule/manifests/eos.pp:29; resource ["File", "/var/tmp/eos"] already declared at /etc/puppet/modules/mymodule/manifests/eos.pp:47

我想做这样的事情:

文件 { $eos_mount:
    确保 => '目录',
    模式 => '1777',
    所有者 => 'root',
    组 => '根',
  }

  安装 { $eos_mount:
    确保 => '已安装',
    设备=>$lv_设备,
    fstype => $fstype,
    选项 => '默认,noatime,nodiratime',
    需要 => 文件[$eos_mount],
    通知 => 文件['post_eos'],
  }

  文件 {'post_eos':
    路径 => $eos_mount,
    确保 => '目录',
    模式 => '1777',
    所有者 => 'root',
    组 => '根',
  }

文件夹挂载后,有什么方法可以确保文件夹的权限?

答案1

在 puppet 3+ 中你可以像这样修改现有资源:

查看文档这里更多细节

file { $eos_mount :
  ensure  => 'directory',
  mode    => '1777',
  owner   => 'root',
  group   => 'root',
}

mount { $eos_mount :
  ensure  => 'mounted',
  device  => $lv_device,
  fstype  => $fstype,
  options => 'defaults,noatime,nodiratime',
  require => File[$eos_mount],
  notify  => File['post_eos'],
}

File[$eos_mount] {
  path    => $eos_mount,
  ensure  => 'directory',
  mode    => '1777',
  owner   => 'root',
  group   => 'root',
}

答案2

我宁愿使用模块:puppet-name_service_查找并执行以下操作:

$user_info = getpwnam($owner) 
$user_uid = $user_info['uid'] 
$group_info = getgrnam($group) 
$group_gid = $group_info['gid'] 

在 mount 选项中执行以下操作:

options => "defaults,noatime,nodiratime,uid=${user_uid},gid=${group_gid}",

答案3

据我从错误中理解,问题在于您file {'/var/tmp/eos': }之前已经在某处定义了资源,因此 Puppet Master 不允许您编译目录,因为资源必须是唯一的(资源类型 + $name)。

在这种情况下,当你有相同的资源的潜在冲突时,你应该使用虚拟资源,保证无论您包含它多少次,它只会在目录中添加一次。

相关内容