Chcę zarządzać zamontowanymi partycjami z marionetki, która obejmuje zarówno modyfikowanie, jak /etc/fstab
i tworzenie katalogów używanych jako punkty montowania. Typ mount
zasobu aktualizuje się fstab
dobrze, ale używanie go file
do tworzenia punktów montowania jest nieco trudne.
Na przykład domyślnie właścicielem katalogu jest root, a jeśli root (/) zamontowanej partycji ma innego właściciela, marionetka spróbuje go zmienić i nie chcę tego. Wiem, że mogę ustawić właściciela tego katalogu, ale dlaczego miałbym przejmować się tym, co jest na zamontowanej partycji? Wszystko, co chcę zrobić, to zamontować. Czy istnieje sposób, aby marionetka nie przejmowała się uprawnieniami katalogu używanego jako punkt montowania?
Z tego właśnie korzystam:
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",
}
W razie potrzeby używam puppet-0.25.4-1.fc13.noarch.rpm i puppet-server-0.25.4-1.fc13.noarch.rpm.
PS undef
działa dobrze dla właściciela, grupy i uprawnień, ale nie dla SELinux. Jeśli partycje są już zamontowane, marionetka narzeka:
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'
Uprawnienia zamontowanej partycji to:
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 /mnt/sda3/
podczas gdy uprawnienia do punktu montowania utworzonego przez marionetkę to:
drwxr-xr-x. root root system_u:object_r:mnt_t:s0 /mnt/sda3/
PPS Zgłosiłem błąd dotyczący tego dziwnego zachowania.
undef
wykonał lewę. Katalogi są tworzone z następującym uprawnieniem,rwxr-xr-x. root root system_u:object_r:mnt_t:s0
co jest dla mnie w porządku.selrange => undef, selrole => undef, seltype => undef, seluser => undef,
do odpowiedzi.Naprawdę nie jest to odpowiedź, ale zostało to naprawione w lalce 2.6.7: http://projects.puppetlabs.com/issues/3999
źródło
Mam niestandardowy fakt (działa tylko z ATM w systemie Linux), który zwróci wszystkie aktualnie zamontowane lokalne podłączenia w systemie. To jest okropnie proste, ale działa dla mnie - wygląda na to, że może się to przydać. W każdym razie rzuciłem to na github: https://github.com/justintime/puppet/tree/master/justintime-localmounts
źródło