퍼펫에서 마운트 된 파티션 (fstab + 마운트 지점)을 관리하는 방법


14

꼭두각시에서 마운트 된 파티션을 관리하고 /etc/fstab마운트 지점으로 사용되는 디렉토리를 수정 하고 생성하는 것을 포함하고 싶습니다 . mount자원 유형 업데이트는 fstab잘하지만, 사용하는 file마운트 포인트를 작성하는 것은 조금 까다 롭습니다.

예를 들어, 기본적으로 디렉토리의 소유자는 root 이고 마운트 된 파티션의 루트 (/)에 다른 소유자가 있으면 꼭두각시가이를 변경하려고 시도하므로이를 원하지 않습니다. 나는 그 디렉토리의 소유자를 설정할 수 있다는 것을 알고 있지만 왜 마운트 된 파티션에 무엇이 있어야합니까? 내가하고 싶은 것은 마운트입니다. 꼭두각시가 마운트 지점으로 사용되는 디렉토리의 권한에 신경 쓰지 않도록하는 방법이 있습니까?

이것이 내가 지금 사용하고있는 것입니다 :

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/

퍼펫이 생성 한 마운트 지점의 권한은 다음과 같습니다.

 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루트 및 휠로 시작되고 기본 umask로 시작된 사용자 및 그룹으로 작성됩니다 . 꼭두각시는 생성시 또는 후속 실행시 설정되는 내용에 신경 쓰지 않습니다.


또는 약간의 복잡성을 보장하기 위해 사용자 정의 팩트를 사용하여 활성 마운트가 무엇인지 판별하고 스위치 명령문을 사용하여 마운트 여부에 따라 디렉토리 권한을 설정할 수 있습니다.


undef트릭을했다. 디렉토리는 다음과 같은 권한으로 작성 rwxr-xr-x. root root system_u:object_r:mnt_t:s0되며 나에게 적합합니다.
Cristian Ciupitu

1
selrange => undef, selrole => undef, seltype => undef, seluser => undef,답변에 추가하십시오 .
Cristian Ciupitu

꼭두각시가 "ensure => mounted"로 파일 시스템의 루트를 관리하려고 할 위험이 있습니까?


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.