exec { 'asd': command => 'echo asd', path => '/usr/bin:/usr/sbin:/bin:/sbin', provider => shell, }
execПозволяет выполнять консольные команды, скрипты непосредственно при запуске puppet.command — команда для запуска. Если опущена, равна заголовку. Адрес команд должен быть задан полностью, если не прописаны пути для поиска в атрибуте path.path — пути для поиска команд. Можно задать сразу несколько разделяя их двоеточием ':'. Чтобы не указывать этот параметр у каждого ресурса exec, можно задать этот параметр по умолчанию в самом начале манифеста, например, так: Exec { path => '/usr/bin:/bin:/usr/sbin:/sbin' }.cwd — текущая директория (переменная окружения $PWD в bash). Если директория не существует, команда не запустится.creates — файл, который создаёт команда. Если атрибут задан, то команда не запустится, если файл существует.environment — любые другие переменные окружения, которые необходимя для запуска команды. Имеет преимущество над арибутом path, то есть данную переменную можно переопределить.group, user — группа и пользователь с правами которых выполнять данную команду.logoutput — включать ли вывод команды в лог, равно true, false и on_failure (только в случае выхода с ошибкой).onlyif — задаёт проверочную команду. Основная команда (атрибут command) будет выполнена, только если эта команда выполнится без ошибок (код выхода будет 0), например:Код: [Выделить]exec { "logrotate": path => "/usr/bin:/usr/sbin:/bin", onlyif => "test `du /var/log/messages | cut -f1` -gt 100000"}При этом onlyif может проверять массив команд и выполнить основную команду только тогда, когда все команды массива выполнятся:Код: [Выделить]onlyif => ["test -f /tmp/file1", "test -f /tmp/file2"]
exec { "logrotate": path => "/usr/bin:/usr/sbin:/bin", onlyif => "test `du /var/log/messages | cut -f1` -gt 100000"}
onlyif => ["test -f /tmp/file1", "test -f /tmp/file2"]
Для управления линуксовыми машинами стоит посмотреть ansible.