На FreeBSD можно также использовать sockstat в случае, если lsof не работает на Вас (например, в виртуализированных системах, которые не имеют/dev/mem по любой причине). Получить список всех программ со слушанием сокеты IPv4:
sockstat -l4
Вот простой пример манифеста марионеток без мастера, который компилирует последнюю версию redis из исходников, а затем создает RPM.
https://github.com/spuder/fpm-redisВот более сложный пример, который мы используем в моей компании под названием builder. Вы можете посмотреть презентацию о нем здесь:
https://www.youtube.com/watch?v=EFByexKKkIE
Microsoft Exchange Server 2000: 6.0.4417 or higher
Microsoft Exchange Server 2000 SP1: 6.0.4712 or higher
Microsoft Exchange Server 2000 SP2: 6.0.5762 or higher
Microsoft Exchange Server 2000 SP3: 6.0.6249 or higher
Microsoft Exchange Server 2003: 6.5.6944 or higher
Microsoft Exchange Server 2003 SP1: 6.5.7226 or higher
Microsoft Exchange Server 2003 SP2: 6.5.7638 or higher
Microsoft Exchange Server 2007: 8.0.685.24 or higher
Builder - это просто скрипт, который любой разработчик может применить на любой ВМ, которая автоматически установит набор продуктов через марионетку. Это закрытый исходный код, но я постараюсь как можно лучше объяснить базовую архитектуру.
Одно из преимуществ обёртывания вашего кукольного манифеста в такой сценарий bash, как этот, заключается в том, что вы можете просто написать свои собственные переменные Facter, которые впоследствии могут быть использованы. Глядя на простой пример из github/spuder/fpm-redis :Подготовьте переменные с верхним регистром 'FACTER'
Марионеточный манифест может затем ссылаться на строчную переменную (слово 'FACTER_' снимается автоматически).
Возвращаясь к коду сборщика, он модуляризирован таким образом, что для каждого продукта есть каталог, который необходимо установить. Таким образом, можно определить файлы свойств.
Файлы свойств - это просто bash-скрипт, содержащий переменные окружения, а также список кукольных манифестов для применения. Иногда пакеты нужно устанавливать в определённом порядке, поэтому они делятся на операции до и после.
Возврат к подсказке меню, упомянутой выше. Конструктор сгенерировал список пунктов меню путем итерации по каталогу сборки.
Это отличный способ использовать преимущества марионеток, без марионеточного мастера. [1130045]
fpm
fpm[1130439] - это лучший способ быстрого создания rpm и deb пакетов. Она также может создавать отдельные (без мастера) кукольные манифесты. На момент написания этой статьи, он всё ещё экспериментальный.
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\0BC19BFC9D71BE44FB2B3570BAE7D7CD
Вы не уточнили, какие именно скрипты вы пытаетесь запустить. Если вы управляете пакетом, файлом или службой, то вам, скорее всего, повезет с kafo при создании приложений. [1130091] Вы можете использовать марионетку в режиме без мастера, но на ваших серверах все равно должен быть установлен клиент марионетки. Подробности настройки обсуждаются в этом сообщении блога, озаглавленном: Масштабирование Puppet с помощью Git .
В статье показано, как настроить репозиторий Git для поддержки файлов манифеста Puppet ( .pp
), а затем просто запустить Puppet вручную, чтобы применить их.
package { "screen":
ensure => installed,
}
Просто сохраните это как something.pp и запустите с Puppet:
$ sudo puppet -v something.pp
info: Applying configuration version '1264090058'
notice: //Package[screen]/ensure: created
Но этот метод все еще очень соответствует модели клиент / сервер, которую вы обычно видите при развертывании Puppet.
Также есть ветка из списка рассылки марионеточных пользователей под названием: Re: [Puppet Users] Без хозяина: что я теряю? , которая может пролить свет на некоторые другие варианты. Я также нашел это сообщение в блоге под названием: Puppet Without Masters , в котором также обсуждаются варианты выполнения того, что вы ищете.
Я также направлю вас к этому сообщению под названием: Управление конфигурацией: push vs. pull , в котором обсуждаются различия в подходах при управлении конфигурацией. Puppet - это, строго говоря, вытягивающее решение, поэтому то, что вы предлагаете, будет сложно использовать, поскольку то, что вы ищете, больше похоже на проталкивающее решение с ваших настольных компьютеров на ваши серверы.
Есть и другие решения, если вы действительно хотите использовать методологию push, но это выходит за рамки вашего вопроса.
Это было недоступно, когда задавался вопрос, но для людей, которые приходят сейчас, ответ — использовать [Марионеточный болт](