Як керувати встановленими перегородками (fstab + точки монтажу) від лялькових


14

Я хочу керувати встановленими розділами з лялькових, що включає в себе як модифікацію, так /etc/fstabі створення каталогів, використовуваних як точки монтажу. Тип mountресурсу оновлюється fstabпросто чудово, але використовувати fileдля створення точок монтування трохи складніше.

Наприклад, за замовчуванням власник каталогу є root, і якщо у 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",
}

У випадку, якщо це має значення, я використовую ляльковий-0.25.4-1.fc13.noarch.rpm та ляльковий сервер-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

Ви можете сказати Лялькові не керувати заданим метапараметром, встановивши його undef.

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

У цьому випадку, якщо каталог не існує до монтажу, він буде створений як користувач та група, які puppetdбули запущені як (імовірно, root: wheel) та з umask за замовчуванням. Лялечку не хвилюватиметься, на що вони встановлені під час створення або під час наступних запусків.


Крім того, якщо ви хочете торгувати трохи складності для впевненості, ви можете скористатися спеціальним фактом, щоб визначити, що таке активні кріплення, і оператором перемикання для встановлення дозволів каталогу в залежності від того, він встановлений до або після встановлення.


undefзробив трюк. Каталоги створюються з наступного дозволу, rwxr-xr-x. root root system_u:object_r:mnt_t:s0який у мене добре.
Крістіан Цюпіту

1
Будь ласка, додайте selrange => undef, selrole => undef, seltype => undef, seluser => undef,до відповіді.
Крістіан Цюпіту

Чи не виникне ризик, щоб маріонетка намагалася керувати коренем файлової системи за допомогою "secure => mount"?


2

У мене є власний факт (працює лише з банкоматами для Linux), який повертає всі поточні локальні кріплення в системі. Це жахливо просто, але працює для мене - схоже, ви також можете знайти для цього певну користь. У всякому разі, я кинув це на github: https://github.com/justintime/puppet/tree/master/justintime-localmounts

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.