我想从puppet管理已安装的分区,包括修改/etc/fstab
和创建用作安装点的目录。在mount
资源类型更新fstab
就好了,但使用file
创建的挂载点是有点棘手。
例如,默认情况下,目录的所有者为root,如果安装的分区的根(/)具有另一个所有者,则puppet会尝试更改它,但我不希望这样做。我知道我可以设置该目录的所有者,但是为什么我应该关心挂载分区上的内容?我要做的就是挂载它。有没有办法使p不关心用作安装点的目录的权限?
这是我现在正在使用的:
define extra_mount_point(
$device,
$location = "/mnt",
$fstype = "xfs",
$owner = "root",
$group = "root",
$mode = 0755,
$seltype = "public_content_t"
$options = "ro,relatime,nosuid,nodev,noexec",
) {
file { "${location}/${name}":
ensure => directory,
owner => "${owner}",
group => "${group}",
mode => $mode,
seltype => "${seltype}",
}
mount { "${location}/${name}":
atboot => true,
ensure => mounted,
device => "${device}",
fstype => "${fstype}",
options => "${options}",
dump => 0,
pass => 2,
require => File["${location}/${name}"],
}
}
extra_mount_point { "sda3":
device => "/dev/sda3",
fstype => "xfs",
owner => "ciupicri",
group => "ciupicri",
$options => "relatime,nosuid,nodev,noexec",
}
万一重要,我使用的是puppet-0.25.4-1.fc13.noarch.rpm和puppet-server-0.25.4-1.fc13.noarch.rpm。
PS undef
适用于所有者,组和权限,但不适用于SELinux。如果已经安装了分区,木偶会抱怨:
puppetd[18052]: Failed to set SELinux context system_u:object_r:public_content_t:s0 on /mnt/sda3
puppetd[18052]: (/File[/mnt/sda3]/seluser) seluser changed 'unconfined_u' to 'system_u'
puppetd[18052]: Failed to set SELinux context unconfined_u:object_r:mnt_t:s0 on /mnt/sda3
puppetd[18052]: (/File[/mnt/sda3]/seltype) seltype changed 'public_content_t' to 'mnt_t'
挂载分区的权限为:
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 /mnt/sda3/
而由puppet创建的安装点的权限为:
drwxr-xr-x. root root system_u:object_r:mnt_t:s0 /mnt/sda3/
PPS我已经报告了这种奇怪行为的错误。
undef
做到了。使用以下权限创建目录rwxr-xr-x. root root system_u:object_r:mnt_t:s0
对我来说是很好的。