パペットからマウントされたパーティション(fstab +マウントポイント)を管理する方法


14

/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 この奇妙な動作のバグを報告しました。

回答:


9

に設定することにより、特定のメタパラメータを管理しないようにPuppetに指示できますundef

file { "${location}/${name}":
    ensure                  => directory,
    owner                   => undef,
    group                   => undef,
    mode                    => undef,
    selinux_ignore_defaults => true,
}

このイベントで、マウントする前にディレクトリが存在しない場合、puppetd(おそらくroot:wheel)として起動され、デフォルトのumaskを持つユーザーおよびグループとして作成されます。Puppetは、作成時または以降の実行時にこれらが設定されているものを気にしません。


あるいは、多少の複雑さを保証と交換したい場合は、カスタムファクトを使用してアクティブなマウントを決定し、switchステートメントを使用して、マウント前またはマウント後に応じてディレクトリのアクセス許可を設定できます。


undefトリックをしました。ディレクトリは次の権限rwxr-xr-x. root root system_u:object_r:mnt_t:s0で作成されますが、これで十分です。
クリスチャン・シウピトゥ

1
selrange => undef, selrole => undef, seltype => undef, seluser => undef,答えに追加してください。
クリスチャン・シウピトゥ

「保証=>マウント」でファイルシステムのルートを管理しようとするパペットにリスクはありませんか?

7

実際には答えではありませんが、これはpuppet 2.6.7で修正されています:http ://projects.puppetlabs.com/issues/3999


はい、あなたは正しいです、私はどういうわけかこの質問を忘れていました。ありがとうございました!
クリスチャンシウピトゥ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.