/etc/fstab
マウントポイントとして使用されるディレクトリの変更と作成の両方を含む、パペットからマウントされたパーティションを管理したい。mount
リソースタイプの更新がfstab
うまく、しかし、使用してfile
マウントポイントを作成するためには少しトリッキーです。
たとえば、デフォルトではディレクトリの所有者はルートであり、マウントされたパーティションのルート(/)に別の所有者がいる場合、puppetはそれを変更しようとしますが、これは望ましくありません。そのディレクトリの所有者を設定できることは知っていますが、マウントされたパーティションの内容を気にする必要があるのはなぜですか?私がやりたいのはそれをマウントすることだけです。マウントポイントとして使用されるディレクトリの権限を気にしないようにパペットを作成する方法はありますか?
これは私が今使用しているものです:
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に対しては機能しません。パーティションがすでにマウントされている場合、puppetは次のように文句を言います。
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
で作成されますが、これで十分です。