Cách quản lý các phân vùng được gắn (fstab + mount points) từ con rối


14

Tôi muốn quản lý các phân vùng được gắn kết từ con rối bao gồm cả sửa đổi /etc/fstabvà tạo các thư mục được sử dụng làm điểm gắn kết. Các mountloại tài nguyên cập nhật fstabtốt, nhưng sử dụng fileđể tạo các điểm gắn kết là một chút khó khăn.

Ví dụ: theo mặc định, chủ sở hữu của thư mục là root và nếu gốc (/) của phân vùng được gắn kết có chủ sở hữu khác, con rối sẽ cố gắng thay đổi nó và tôi không muốn điều này. Tôi biết rằng tôi có thể thiết lập chủ sở hữu của thư mục đó, nhưng tại sao tôi phải quan tâm những gì trên phân vùng được gắn kết? Tất cả tôi muốn làm là gắn kết nó. Có cách nào để khiến con rối không quan tâm đến các quyền của thư mục được sử dụng làm điểm gắn kết không?

Đây là những gì tôi đang sử dụng ngay bây giờ:

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",
}

Trong trường hợp có vấn đề, tôi đang sử dụng con rối-0.25.4-1.fc13.noarch.rpm và con rối-máy chủ-0.25.4-1.fc13.noarch.rpm.


PS undefhoạt động tốt cho chủ sở hữu, nhóm và quyền, nhưng không phải cho SELinux. Nếu các phân vùng đã được gắn kết, con rối phàn nàn:

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'

Các quyền của phân vùng được gắn kết là:

drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 /mnt/sda3/

trong khi các quyền của điểm gắn kết được tạo bởi con rối là:

 drwxr-xr-x. root root system_u:object_r:mnt_t:s0       /mnt/sda3/

PPS Tôi đã báo cáo một lỗi cho hành vi kỳ lạ này.

Câu trả lời:


9

Bạn có thể yêu cầu Puppet không quản lý một tham số đã cho bằng cách đặt nó thành undef.

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

Trong trường hợp này, nếu thư mục không tồn tại trước khi cài đặt, nó sẽ được tạo với tư cách là người dùng và nhóm puppetdđược bắt đầu dưới dạng (có lẽ là root: wheel) và với một ô mặc định. Con rối sẽ không quan tâm đến những gì chúng được thiết lập tại thời điểm tạo hoặc trên bất kỳ lần chạy tiếp theo nào.


Ngoài ra, nếu bạn muốn giao dịch một chút phức tạp để đảm bảo, bạn có thể sử dụng một thực tế tùy chỉnh để xác định các gắn kết hoạt động là gì và một câu lệnh chuyển đổi để đặt các quyền của thư mục tùy thuộc vào việc nó được gắn trước hay sau.


undefđã lừa Các thư mục được tạo với sự cho phép sau đây rwxr-xr-x. root root system_u:object_r:mnt_t:s0là tốt với tôi.
Cristian Ciupitu

1
Vui lòng thêm selrange => undef, selrole => undef, seltype => undef, seluser => undef,vào câu trả lời.
Cristian Ciupitu

Sẽ không có rủi ro khi con rối cố gắng quản lý thư mục gốc của hệ thống tập tin với "Đảm bảo => được gắn"?


2

Tôi có một thực tế tùy chỉnh (chỉ hoạt động với máy ATM chỉ có Linux) sẽ trả về tất cả các gắn kết cục bộ hiện đang được gắn trên một hệ thống. Nó đơn giản khủng khiếp, nhưng đối với tôi - có vẻ như bạn cũng có thể tìm thấy một số sử dụng cho nó. Dù sao, tôi đã ném nó lên github: https://github.com/justintime/puppet/tree/master/justintime-localmounts

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.