Мы можем установить марионетку, не касаясь серверов?

На FreeBSD можно также использовать sockstat в случае, если lsof не работает на Вас (например, в виртуализированных системах, которые не имеют/dev/mem по любой причине). Получить список всех программ со слушанием сокеты IPv4:

sockstat -l4
5
14.05.2014, 10:29
6 ответов
[1128989] Здесь я подробно опишу [1129570] свой комментарий [1129571] с моим фактическим предложением. [12168] Мое основное предположение заключается в том, что вы не хотите устанавливать марионетки на клиентские узлы из-за их чистого номера. Если вы не можете "дотронуться до них" из-за проблемы с разрешениями, то я сомневаюсь, что вы вообще можете нажать конфигурацию, будь то через марионетку или любым другим способом.[12169]Вы можете настроить [1129572]ssh[1129573] на вход на машину без пароля, используя [1129574]ssh-keygen[1129575] так:[12170]Убедитесь, что парольная фраза пуста (поэтому скрипту, использующему эту [1129576]ssh[1129577], пароль не понадобится). [12171]В качестве второго шага, вам нужно скопировать открытый ключ на все хосты:[12172], где я предполагаю, что [1129578]hostnames_file[1129579] имеет по одному имени хоста в строке со списком всех хостов, которые вы хотите скопировать. [12173] Скорее всего, этот скрипт запросит ваш пароль столько раз, сколько хостов есть, но это произойдет только один раз, когда вы настраиваете ключи. [12174]Если ваш [1129580]пользователь [1129581] имеет свой домашний каталог, совместно используемый всеми клиентами (например, через NFS), вы можете сделать это: [12175]Теперь вы должны настроить доступ без пароля [1129582]sudo[1129583] к команде [1129584]apt-get[1129585] (или [1129586]yum[1129587] или [1129588]pacman[1129589], или любому другому выбранному вами пакетному менеджеру) для пользователя [1129590]ssh[1129591], для которого вы только что настроили доступ без пароля [1129592]ssh[1129593]. Теперь все так же просто, как:[12176]Обратите внимание, что вы можете использовать этот метод как рудиментарную форму управления конфигурацией также[1129594]*[1129595], но он гораздо более хрупкий, чем использование Puppet, Chef или аналогичного. [12177]Ссылки[12178]Вход в SSH без пароля[12179]3 Шаги по выполнению входа в SSH без пароля с использованием ssh-keygen & ssh-copy-id[12180](*)[1129601] Просто замените [1129602]sudo apt-get install puppet[1129603] на любую команду(ы), которую вы хотите запустить на всех ваших узлах.[1129015].
1
27.01.2020, 20:35
[1130013] Типичная марионеточная модель состоит из кукольного мастера и кукольных клиентов. При этом можно полностью пропустить кукольного мастера и просто использовать клиентов марионеток самостоятельно. (так называемые модули без марионеток). Для этого нужно обернуть команду [1130418] puppet application[1130419] в сценарий bash.

Вот простой пример манифеста марионеток без мастера, который компилирует последнюю версию 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]

1
27.01.2020, 20:35
[1129072]Кажется, вы ищете инструмент Configuration Management (CM) или Deployment Management (DM), для которого вам не нужно устанавливать [1129700]agent software[1129701] на удаленных машинах, которыми вы хотите управлять. [12208]Без агентской модели необходимо использовать другой метод доступа к удаленным машинам, обычно это SSH, с аутентификацией по открытому ключу или паролю.[12209]Для этой цели можно попробовать:[12210]Ansible[12211]Ansible[1129705] использует SSH, агент не нужен, файлы конфигурации находятся в формате [1129706]INI[1129707]. Допускается запись на Python.[12212](R)?ex[12213](R)?ex[1129711] использует SSH, агент не требуется, файл конфигурации можно записать простым языком [1129712]Perl[1129713], в формате [1129714]INI[1129715], или используя шаблон типа [1129716]YAML[1129717] или [1129718]Template::ToolKit[1129719]. (R)?ex записывается на Perl.[12214]Fabric[12215]Fabric[1129723] использует SSH, агент не требуется, конфигурационные файлы записываются на чистом питоне. Сама Fabric написана на Python.[12216]Salt Stack[12217]Salt Stack[1129727] является еще одним замечательным инструментом, вы можете использовать [1129728]saltt-ssh[1129729] для развертывания без использования агента, хотя [1129730]salt-minion[1129731] также доступен. Конфигурация в основном написана в [1129732]YAML[1129733]. Сама соль написана на Python.[12218]Простая демонстрация на моей машине, используя (R) ex:[12219]SSH только[12220]После настройки SSH, вы также можете выполнять те же функции без этих инструментов, используя [1129736]ssh[1129737] напрямую:[12221]
1
27.01.2020, 20:35
[1130074]Кукла предназначена для управления пакетами, файлами и сервисами. (Называется трифекта). Если вы хотите управлять этими вещами без мастера марионеток, вы можете использовать одно из следующих приложений.
  • kafo
  • Рубиновый жемчужина, который берет yaml конфигурационные файлы и генерирует структуру каталогов и марионеточные манифесты для установки любого приложения.
  • https://github.com/theforeman/kafo
Он был создан создателями [1130434] формана[1130435]. Так они сгенерировали свою программу установки.

fpm

fpm[1130439] - это лучший способ быстрого создания rpm и deb пакетов. Она также может создавать отдельные (без мастера) кукольные манифесты. На момент написания этой статьи, он всё ещё экспериментальный.

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\0BC19BFC9D71BE44FB2B3570BAE7D7CD
Вы не уточнили, какие именно скрипты вы пытаетесь запустить. Если вы управляете пакетом, файлом или службой, то вам, скорее всего, повезет с kafo при создании приложений. [1130091]
0
27.01.2020, 20:35

Вы можете использовать марионетку в режиме без мастера, но на ваших серверах все равно должен быть установлен клиент марионетки. Подробности настройки обсуждаются в этом сообщении блога, озаглавленном: Масштабирование 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, но это выходит за рамки вашего вопроса.

7
27.01.2020, 20:35

Это было недоступно, когда задавался вопрос, но для людей, которые приходят сейчас, ответ — использовать [Марионеточный болт](

0
25.05.2021, 16:51

Теги

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