Ich möchte die gemounteten Partitionen von Puppet aus verwalten, wozu sowohl das Ändern /etc/fstab
als auch das Erstellen der als Mountpunkte verwendeten Verzeichnisse gehört. Der mount
Ressourcentyp wird problemlos aktualisiert fstab
, die Verwendung file
zum Erstellen der Einhängepunkte ist jedoch etwas schwierig.
Beispielsweise ist der Eigentümer des Verzeichnisses standardmäßig root, und wenn der Stamm (/) der bereitgestellten Partition einen anderen Eigentümer hat, versucht Puppet, diesen zu ändern, und ich möchte dies nicht. Ich weiß, dass ich den Eigentümer dieses Verzeichnisses festlegen kann, aber warum sollte es mich interessieren, was sich auf der bereitgestellten Partition befindet? Alles was ich tun möchte, ist es zu montieren. Gibt es eine Möglichkeit, Puppet dazu zu bringen, sich nicht um die Berechtigungen des Verzeichnisses zu kümmern, das als Mount-Punkt verwendet wird?
Das verwende ich gerade:
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",
}
Falls es darauf ankommt, verwende ich puppet-0.25.4-1.fc13.noarch.rpm und puppet-server-0.25.4-1.fc13.noarch.rpm.
PS undef
funktioniert gut für Eigentümer, Gruppen und Berechtigungen, aber nicht für SELinux. Wenn die Partitionen bereits montiert sind, beschwert sich Marionette:
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'
Die Berechtigungen der gemounteten Partition sind:
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 /mnt/sda3/
während die Berechtigungen des von puppet erstellten Einhängepunkts sind:
drwxr-xr-x. root root system_u:object_r:mnt_t:s0 /mnt/sda3/
PPS Ich habe einen Fehler für dieses seltsame Verhalten gemeldet .
undef
hat den Trick gemacht. Die Verzeichnisse werden mit der folgenden Erlaubnis erstellt,rwxr-xr-x. root root system_u:object_r:mnt_t:s0
die für mich in Ordnung ist.selrange => undef, selrole => undef, seltype => undef, seluser => undef,
die Antwort.Keine wirkliche Antwort, aber dies wurde in Puppet 2.6.7 behoben: http://projects.puppetlabs.com/issues/3999
quelle
Ich habe eine benutzerdefinierte Tatsache (funktioniert nur mit Linux ATM), die alle derzeit gemounteten lokalen Bereitstellungen auf einem System zurückgibt. Es ist schrecklich einfach, funktioniert aber für mich - es sieht so aus, als ob Sie auch eine Verwendung dafür finden könnten. Wie auch immer, ich habe es auf Github geworfen: https://github.com/justintime/puppet/tree/master/justintime-localmounts
quelle