Назад | Перейти на главную страницу

Условное включение марионеток, основанное на том, что selinux не работает

У меня есть класс в модуле:

# File: modules/selinux/tools.pp
class selinux::tools {
        $packages = ['policycoreutils-python',]

        package { $packages:
                ensure => installed
        }
}

Затем мой узел по умолчанию:

# File: manifests/nodes/default.pp
node default {
        if $selinux {
                include selinux::tools
        }
}

Я перезапускаю puppetmaster и puppet агент. Однако пакет устанавливается на узел, даже если selinux факт ложен:

$ facter -p selinux
false

Что мне здесь не хватает?

"Истина" или "ложь" в selinux fact - это просто строка для Puppet, он не обрабатывает содержимое строки как логическое значение. Правильнее всего просто сравнить его с другой строкой:

if $selinux == "true" {
    include selinux::tools
}

Есть запрос функции , чтобы изменить поведение, чтобы логические значения Facter правильно обрабатывались как логические значения Puppet.