Саломея может быть полезна. проверьте его, http://www.salome-platform.org/
Если вам нравится, вы можете использовать мой сценарий, который я написал для своих серверов ... там всегда могут быть лучшие способы сделать это, но он делает то, что он должен;)
Создайте сценарий в /usr/local/bin/update
#!/bin/bash
# First get sudo rights
sudo echo ""
echo -e "\e[92m UPDATE PACKAGE SOURCES \e[39m"
sudo apt update
echo -e "\e[92m UPGRADE TO NEW PACKAGES \e[39m"
sudo apt upgrade
echo -e "\e[92m UPGRADE DISTRIBUTION-PACKAGES \e[39m"
sudo apt dist-upgrade
echo -e "\e[92m AUTOREMOVE OLD PACKAGES \e[39m"
sudo apt autoremove
clear
if [ -f /var/run/reboot-required ]; then
echo -e "\e[92m#####################################\e[39m"
echo -e "\e[92m# #\e[39m"
echo -e "\e[92m# DONE #\e[39m"
echo -e "\e[92m# #\e[39m"
echo -e "\e[92m# \e[91mNOTE: A reboot of the System is\e[92m #\e[39m"
echo -e "\e[92m# \e[91mrequired in order to\e[92m #\e[39m"
echo -e "\e[92m# \e[91mcomplete the Update!\e[92m #\e[39m"
echo -e "\e[92m# #\e[39m"
echo -e "\e[92m#####################################\e[39m"
else
echo -e "\e[92m#####################################\e[39m"
echo -e "\e[92m# #\e[39m"
echo -e "\e[92m# DONE #\e[39m"
echo -e "\e[92m# #\e[39m"
echo -e "\e[92m#####################################\e[39m"
, если вы доверяйте обновлениям, вы также можете использовать параметр -y, чтобы вам не приходилось взаимодействовать (самое время, конечно, иногда вам предлагается ввести ввод в зависимости от обновлений).
Сделать его исполняемым [ ! d5] chmod +x /usr/local/bin/update
сделать скрипт в /usr/local/bin/rebootServer
#!/bin/bash
echo -n "0"
sudo reboot &> /dev/null
exit
и сделать его исполняемым
chmod +x /usr/local/bin/rebootServer
run
sudo visudo
добавить строки
<userName> ALL=NOPASSWD: /usr/local/bin/update
<userName> ALL=NOPASSWD: /usr/local/bin/rebootServer
сохранить и выйти. Это позволяет пользователю sudo запускать rebootServer и update (и любой код / скрипт внутри них), не будучи продвинутым для ввода пароля sudo.
Один из /usr/local/bin/sshResponse
#!/bin/bash
echo -n "0"
и один в /usr/local/bin/rebootResponse
#!/bin/bash
#!/bin/bash
if [ -f /var/run/reboot-required ];
then
echo -n "1"
else
echo -n "0"
fi
И сделайте их исполняемыми тоже
chmod +x /usr/local/bin/sshResponse
chmod +x /usr/local/bin/rebootResponse
(d13) Второй используется для отображения позже, если на обновленных серверах требуется перезагрузка.
]
Поскольку вы не будете вводить пароль для каждого входа ssh, мы используем ключи. Запустите
ssh-keygen
и следуйте инструкциям.
Теперь вы передаете ключ на каждый клиентский сервер. Поэтому для каждого запуска сервера (на сервере управления)
ssh-copy-id <usernameOnClient>@<clientServerIP>
после этого вы должны иметь возможность подключиться к ssh с сервера управления, не запрашивая пароль.
Теперь сумасшедшая часть. Я использую следующую настройку для автоматического создания:
отдельного сценария перезагрузки для каждого клиентского сервера в /usr/local/bin/rebootSERVERNAME отдельного сценария обновления для каждого клиентского сервера в /usr/local/bin/updateSERVERNAME a /usr/local/bin/rebootAllServers a /usr/local/bin/updateAllServers ( последний из них также обновляет сам сервер управления)добавляет MY GENERATOR SCRIPT к /usr/local/bin/generateAllUpdateScripts и делает его исполняемым с помощью
chmod +x /usr/local/bin/generateAllUpdateScripts
Наконец, вам нужен файл в /root/.virtualMachines, откуда генератор читает клиентский сервер. Он должен выглядеть, например,
ClientServer1 192.168.1.2
ClientServer2 192.168.1.3
Сценарий генератора использует этот файл и считывает строку конфигурации сервера клиентов для строки для генерации по сценариям. (Нет пустых строк! Нет пробелов или _ или - разрешено в именах серверов!)
просто запустить
generateUpdateAllScripts
После вы должны уметь вызывать любую из этих команд:
выполняет сценарий обновления на каждом компьютере и дает сводку в конце концов обслуживающих клиентов, где обновляется, и если требуется перезагрузка
updateAllServers
перезагружает все серверы и в конце ждет, пока все серверы не вернутся в сеть или не появятся ошибки
rebootAllServers
updateSERVERNAME
rebootSERVERNAME
Ключевое слово - управление конфигурацией. Один инструмент, который я использую для этой цели, - Ansible. Там вы выражаете желаемую конфигурацию с помощью файла YAML, и Ansible заботится обо всем этом. Конечно, вы также можете перезагрузить хосты с этим, см. Этот ответ, который также дает вам первое впечатление о том, как он будет выглядеть.
Существуют также другие параметры, такие как Ansible , Puppet, или этот ответ .
Если вам нравится, вы можете использовать мой сценарий, который я написал для своих серверов ... там всегда могут быть лучшие способы сделать это, но он делает то, что он должен;)
Создайте сценарий в /usr/local/bin/update
#!/bin/bash
# First get sudo rights
sudo echo ""
echo -e "\e[92m UPDATE PACKAGE SOURCES \e[39m"
sudo apt update
echo -e "\e[92m UPGRADE TO NEW PACKAGES \e[39m"
sudo apt upgrade
echo -e "\e[92m UPGRADE DISTRIBUTION-PACKAGES \e[39m"
sudo apt dist-upgrade
echo -e "\e[92m AUTOREMOVE OLD PACKAGES \e[39m"
sudo apt autoremove
clear
if [ -f /var/run/reboot-required ]; then
echo -e "\e[92m#####################################\e[39m"
echo -e "\e[92m# #\e[39m"
echo -e "\e[92m# DONE #\e[39m"
echo -e "\e[92m# #\e[39m"
echo -e "\e[92m# \e[91mNOTE: A reboot of the System is\e[92m #\e[39m"
echo -e "\e[92m# \e[91mrequired in order to\e[92m #\e[39m"
echo -e "\e[92m# \e[91mcomplete the Update!\e[92m #\e[39m"
echo -e "\e[92m# #\e[39m"
echo -e "\e[92m#####################################\e[39m"
else
echo -e "\e[92m#####################################\e[39m"
echo -e "\e[92m# #\e[39m"
echo -e "\e[92m# DONE #\e[39m"
echo -e "\e[92m# #\e[39m"
echo -e "\e[92m#####################################\e[39m"
, если вы доверяйте обновлениям, вы также можете использовать параметр -y, чтобы вам не приходилось взаимодействовать (самое время, конечно, иногда вам предлагается ввести ввод в зависимости от обновлений).
Сделать его исполняемым [ ! d5] chmod +x /usr/local/bin/update
сделать скрипт в /usr/local/bin/rebootServer
#!/bin/bash
echo -n "0"
sudo reboot &> /dev/null
exit
и сделать его исполняемым
chmod +x /usr/local/bin/rebootServer
run
sudo visudo
добавить строки
<userName> ALL=NOPASSWD: /usr/local/bin/update
<userName> ALL=NOPASSWD: /usr/local/bin/rebootServer
сохранить и выйти. Это позволяет пользователю sudo запускать rebootServer и update (и любой код / скрипт внутри них), не будучи продвинутым для ввода пароля sudo.
Один из /usr/local/bin/sshResponse
#!/bin/bash
echo -n "0"
и один в /usr/local/bin/rebootResponse
#!/bin/bash
#!/bin/bash
if [ -f /var/run/reboot-required ];
then
echo -n "1"
else
echo -n "0"
fi
И сделайте их исполняемыми тоже
chmod +x /usr/local/bin/sshResponse
chmod +x /usr/local/bin/rebootResponse
(d13) Второй используется для отображения позже, если на обновленных серверах требуется перезагрузка.
]
Поскольку вы не будете вводить пароль для каждого входа ssh, мы используем ключи. Запустите
ssh-keygen
и следуйте инструкциям.
Теперь вы передаете ключ на каждый клиентский сервер. Поэтому для каждого запуска сервера (на сервере управления)
ssh-copy-id <usernameOnClient>@<clientServerIP>
после этого вы должны иметь возможность подключиться к ssh с сервера управления, не запрашивая пароль.
Теперь сумасшедшая часть. Я использую следующую настройку для автоматического создания:
отдельного сценария перезагрузки для каждого клиентского сервера в /usr/local/bin/rebootSERVERNAME отдельного сценария обновления для каждого клиентского сервера в /usr/local/bin/updateSERVERNAME a /usr/local/bin/rebootAllServers a /usr/local/bin/updateAllServers ( последний из них также обновляет сам сервер управления)добавляет MY GENERATOR SCRIPT к /usr/local/bin/generateAllUpdateScripts и делает его исполняемым с помощью
chmod +x /usr/local/bin/generateAllUpdateScripts
Наконец, вам нужен файл в /root/.virtualMachines, откуда генератор читает клиентский сервер. Он должен выглядеть, например,
ClientServer1 192.168.1.2
ClientServer2 192.168.1.3
Сценарий генератора использует этот файл и считывает строку конфигурации сервера клиентов для строки для генерации по сценариям. (Нет пустых строк! Нет пробелов или _ или - разрешено в именах серверов!)
просто запустить
generateUpdateAllScripts
После вы должны уметь вызывать любую из этих команд:
выполняет сценарий обновления на каждом компьютере и дает сводку в конце концов обслуживающих клиентов, где обновляется, и если требуется перезагрузка
updateAllServers
перезагружает все серверы и в конце ждет, пока все серверы не вернутся в сеть или не появятся ошибки
rebootAllServers
updateSERVERNAME
rebootSERVERNAME
Ключевое слово - управление конфигурацией. Один инструмент, который я использую для этой цели, - Ansible. Там вы выражаете желаемую конфигурацию с помощью файла YAML, и Ansible заботится обо всем этом. Конечно, вы также можете перезагрузить хосты с этим, см. Этот ответ, который также дает вам первое впечатление о том, как он будет выглядеть.
Существуют также другие параметры, такие как Ansible , Puppet, или этот ответ .