Набор sysctl.conf параметры с Марионеткой

От открытого (2) страница справочника:

Портативные программы, которые хотят выполнить атомарный захват файла с помощью lockfile и должны избежать уверенности в поддержке NFS O_EXCL, могут создать уникальный файл в той же файловой системе (например, включив имя хоста и PID), и использовать ссылку (2) для создания ссылки на lockfile. Если ссылка (2) возвраты 0, блокировка успешна. Иначе используйте статистику (2) на уникальном файле, чтобы проверить, увеличилось ли его число каналов до 2, в этом случае блокировка также успешна.

10
задан 21 February 2012 в 18:56
3 ответа

Конкретный ответ: Сразу же говоря, вы вызываете sysctl :: value, но значение не объявлено в вашем классе sysctl. См. этот пример , в котором используется объявление sysctl :: conf. Без define value не существует подкласса sysctl :: value, который можно было бы вызвать.


Общий ответ и руководство: Конструкция Augeas (см. Также ее ] справочная документация по типу ), которая является частью текущих версий Puppet, позволяет поддерживать строки в файле конфигурации и даже учитывает контекст, поэтому он может управлять такими файлами, как конфигурация git. Приведенный ниже пример демонстрирует функциональность и указывает на отличную справочную коллекцию конфигураций Puppet - хранилище актуальных конфигураций для серверов Википедии.

14
ответ дан 2 December 2019 в 22:05

Я использовал этот модуль в прошлом с RHEL5: puppet-sysctl

Чтобы использовать его, вам нужно установить модуль в папку модулей (возможно, / etc / puppet / modules / sysctl), включить класс на вашем узле: (включить sysctl), а затем вызвать ресурс def выглядит следующим образом:

class s_sysctl::rhel_defaults {
    include sysctl

    # Controls IP packet forwarding
    sysctl::set_value { "net.ipv4.ip_forward": 
                         value => 0 
    }

    # Controls source route verification
    sysctl::set_value { "net.ipv4.conf.default.rp_filter": value => 1 }
}

Итак, вам может быть интересно, куда же на самом деле идет этот код? Мне нравится организовывать свое дерево марионеток следующим образом:

site.pp -> nodes.pp -> roles.pp -> /etc/puppet/site-modules/s_sysctl -> /etc/puppet/modules/sysctl

Таким образом, модули сайтов содержат данные hiera или настраиваемые параметры, а модули остаются универсальными, подключаемыми и «модульными».

2
ответ дан 2 December 2019 в 22:05

Как пока вам не нужно изменять значение (или вас устраивает добавление строк с новыми значениями), вы можете использовать Common строку . При изменении значения можно использовать пару конфигураций присутствует / отсутствует .

Чтобы изменить значение - при условии, что линия уже существует - можно использовать заменить в том же модуле.

Или вы можете посмотреть, как эти определения написаны, чтобы сделать их подходящими для вашей задачи - что, заметьте, я действительно считаю простым и достаточно распространенным, чтобы его должны были обеспечивать типы Puppet по умолчанию.

Так почему бы и нет? Потому что Puppet ожидает, что вы будете полностью управлять тем, чем управляете. То есть вам следует распространить весь sysctl-файл, а не просто добавлять или удалять то или иное значение. Я не говорю, что это обязательно легко сделать, но если вам это сойдет с рук, значит, это самый простой способ сделать это.

вам следует распространить весь sysctl-файл, а не просто добавлять или удалять то или иное значение. Я не говорю, что это обязательно легко сделать, но если вам это сойдет с рук, значит, это самый простой способ сделать это.

вам следует распространить весь sysctl-файл, а не просто добавлять или удалять то или иное значение. Я не говорю, что это обязательно легко сделать, но если вам это сойдет с рук, значит, это самый простой способ сделать это.

0
ответ дан 2 December 2019 в 22:05

Теги

Похожие вопросы