Создавайте скрипты, которые запускаются на разных серверах - PullRequest
0 голосов
/ 01 июля 2011

У меня есть три сервера, которые используются для управления кучей других клиентских серверов.На одном из управляющих серверов есть nagios, на другом - веб-прокси, на другом - сервер ldap и MySQL.

Всякий раз, когда мне нужно включить новый клиентский сервер, я должен войти на сервер A и создать запись SQL, перейти к nagios и создать запись, перейти на веб-сервер и добавить прокси-сервер.Вы получаете картину.Я хотел бы, чтобы все серверы имели общий каталог скриптов, скажем, «/ opt / boxes / scripts», и там есть несколько скриптов, которые знают, где они могут работать.Скажем, я на сервере A и запускаю сценарий X, который должен работать на сервере B, на самом деле он будет работать на сервере B.

Есть ли простой способ сделать это?Желательно Perl Base, так как это то, о чем я немного знаю.

1 Ответ

1 голос
/ 13 марта 2013

Одним из простых способов может быть создание каталога для каждого сценария на каждом из компьютеров.

В одном каталоге выполняется действительный сценарий.Во всех других каталогах скрипт выполняет ssh на соответствующий сервер и запускает реальный скрипт.

Например,

Скрипт для добавления клиента ssh servera -c servera-addclient-to-sql sshserverb -c serverb-addclient-to-nagios ssh serverc -c serverc-addclient-to-webproxy

Добавить сценарии, которые знают, где они выполняются, тоже довольно просто.

В свободном виде

$RunWhere = "XXXX"
$ScriptName = "YYYY"

if `hostname` ne "XXXX" {ssh $RunWhere -c $Scriptname @ARGS ; exit; }
else {
Do the actual stuff
}

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

...