Настройте ulimit с помощью Puppet

Мне интересно, как запустить команду ulimit, используя тип Puppets exec. Проблема с ulimit заключается в том, что это не двоичный файл, поэтому его нужно вызывать с помощью /bin/bash перед ним. Я пытаюсь изменить размер файла ядра на неограниченный. У меня есть это, но не распознает ulimit.

exec {"ulimit":
        command => "/bin/bash ulimit -c unlimited",
}

Я могу выполнить 'ulimit -c unlimited' в командной строке, и это без проблем изменит значение. Проблема заключается в том, чтобы сделать это через Puppet. Любая помощь будет отличной.

5 ответов

Я бы порекомендовал попробовать внести это изменение, используя /etc/security/limits.conf, например:

<user>   soft   core   unlimited
<user>   hard   core   unlimited

Вы можете сделать это, используя Augeas, как описано здесь. Не уверен в вашей точной необходимости / случае использования, но, по крайней мере, подумайте о проспекте!

Другой способ - установить erwbgy puppet module и просто определить:

include limits
limits::entry { 'my-limits':
    domain => $user,
    type   => 'soft',
    item   => 'core',
    value  => 'unlimited',
}

в тебе кукольный сценарий.

Увеличьте системный ulimit (root) до максимального значения, которое вы предпочитаете

* soft nofile 1000000
* hard nofile 250000

А затем добавить определенные пользователем ограничения, например, для пользователя httpd

httpd hard nofile 100000
httpd soft nofile 25000

Примечание: в этом случае httpd не может превышать верхний системный предел (*), sysetm не допустит этого, даже если вы предоставили пользователю httpd более высокое значение

Процессы, возможно, должны быть перезапущены (нет необходимости перезапускать Систему), чтобы они могли получить новые значения, однако вы можете дважды проверить, подняли ли они это или нет, посмотрев: $cat /proc//limit

Если нет, то просто перезапустите процесс.

Команда неверна, она должна быть:

command => "/bin/bash -c 'ulimit -c unlimited'"

Если вы изменяете лимиты с помощью /etc/security/limits.conf, вы должны перезапустить процессы, чтобы они использовали новые лимиты.

Например, если ваш агент puppet должен перезапустить службу ("service myservice restart"), служба будет запущена из процесса puppet, который выполняется с пользователем root и со старыми ограничениями.

Таким образом, сценарий инициализации службы вашего сервиса в /etc/init.d должен заставить логин, например, изменить пользователя с помощью "su" или "sudo", чтобы заставить сервис использовать новые ограничения.

Смотрите http://linux.die.net/man/5/limits.conf

"Также обратите внимание, что все настройки лимита устанавливаются для каждого входа в систему. Они не являются глобальными и не являются постоянными; существуют только на время сеанса".

Другие вопросы по тегам