Как централизовать администрирование серверов Ubuntu [dублировать]

Саломея может быть полезна. проверьте его, http://www.salome-platform.org/

1
задан 6 July 2017 в 15:07

4 ответа

Если вам нравится, вы можете использовать мой сценарий, который я написал для своих серверов ... там всегда могут быть лучшие способы сделать это, но он делает то, что он должен;)

1. На каждом клиентском сервере

a) скрипт обновления (этот также на сервере управления)

Создайте сценарий в /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

b) rebootServer

сделать скрипт в /usr/local/bin/rebootServer

#!/bin/bash echo -n "0" sudo reboot &> /dev/null exit

и сделать его исполняемым

chmod +x /usr/local/bin/rebootServer

c) visudo

run

sudo visudo

добавить строки

<userName> ALL=NOPASSWD: /usr/local/bin/update <userName> ALL=NOPASSWD: /usr/local/bin/rebootServer

сохранить и выйти. Это позволяет пользователю sudo запускать rebootServer и update (и любой код / ​​скрипт внутри них), не будучи продвинутым для ввода пароля sudo.

d) добавить еще два скрипта управления

Один из /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) Второй используется для отображения позже, если на обновленных серверах требуется перезагрузка.

]

2. На главном / контрольном сервере

a) ssh-keygen

Поскольку вы не будете вводить пароль для каждого входа ssh, мы используем ключи. Запустите

ssh-keygen

и следуйте инструкциям.

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

ssh-copy-id <usernameOnClient>@<clientServerIP>

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

b ) сценарий генератора

Теперь сумасшедшая часть. Я использую следующую настройку для автоматического создания:

отдельного сценария перезагрузки для каждого клиентского сервера в /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

c) конфигурационный файл

Наконец, вам нужен файл в /root/.virtualMachines, откуда генератор читает клиентский сервер. Он должен выглядеть, например,

ClientServer1 192.168.1.2 ClientServer2 192.168.1.3

3. Использование

a) добавить клиентские серверы в /root/.virtualMachines

Сценарий генератора использует этот файл и считывает строку конфигурации сервера клиентов для строки для генерации по сценариям. (Нет пустых строк! Нет пробелов или _ или - разрешено в именах серверов!)

b) сгенерировать скрипты

просто запустить

generateUpdateAllScripts

После вы должны уметь вызывать любую из этих команд:

для обновления всех серверов

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

updateAllServers

для перезагрузки всех серверов

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

rebootAllServers

обновление определенного сервера

updateSERVERNAME

перезагрузка определенного сервера

rebootSERVERNAME
0
ответ дан 18 July 2018 в 10:39

Ключевое слово - управление конфигурацией. Один инструмент, который я использую для этой цели, - Ansible. Там вы выражаете желаемую конфигурацию с помощью файла YAML, и Ansible заботится обо всем этом. Конечно, вы также можете перезагрузить хосты с этим, см. Этот ответ, который также дает вам первое впечатление о том, как он будет выглядеть.

Существуют также другие параметры, такие как Ansible , Puppet, или этот ответ .

0
ответ дан 18 July 2018 в 10:39

Если вам нравится, вы можете использовать мой сценарий, который я написал для своих серверов ... там всегда могут быть лучшие способы сделать это, но он делает то, что он должен;)

1. На каждом клиентском сервере

a) скрипт обновления (этот также на сервере управления)

Создайте сценарий в /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

b) rebootServer

сделать скрипт в /usr/local/bin/rebootServer

#!/bin/bash echo -n "0" sudo reboot &> /dev/null exit

и сделать его исполняемым

chmod +x /usr/local/bin/rebootServer

c) visudo

run

sudo visudo

добавить строки

<userName> ALL=NOPASSWD: /usr/local/bin/update <userName> ALL=NOPASSWD: /usr/local/bin/rebootServer

сохранить и выйти. Это позволяет пользователю sudo запускать rebootServer и update (и любой код / ​​скрипт внутри них), не будучи продвинутым для ввода пароля sudo.

d) добавить еще два скрипта управления

Один из /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) Второй используется для отображения позже, если на обновленных серверах требуется перезагрузка.

]

2. На главном / контрольном сервере

a) ssh-keygen

Поскольку вы не будете вводить пароль для каждого входа ssh, мы используем ключи. Запустите

ssh-keygen

и следуйте инструкциям.

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

ssh-copy-id <usernameOnClient>@<clientServerIP>

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

b ) сценарий генератора

Теперь сумасшедшая часть. Я использую следующую настройку для автоматического создания:

отдельного сценария перезагрузки для каждого клиентского сервера в /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

c) конфигурационный файл

Наконец, вам нужен файл в /root/.virtualMachines, откуда генератор читает клиентский сервер. Он должен выглядеть, например,

ClientServer1 192.168.1.2 ClientServer2 192.168.1.3

3. Использование

a) добавить клиентские серверы в /root/.virtualMachines

Сценарий генератора использует этот файл и считывает строку конфигурации сервера клиентов для строки для генерации по сценариям. (Нет пустых строк! Нет пробелов или _ или - разрешено в именах серверов!)

b) сгенерировать скрипты

просто запустить

generateUpdateAllScripts

После вы должны уметь вызывать любую из этих команд:

для обновления всех серверов

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

updateAllServers

для перезагрузки всех серверов

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

rebootAllServers

обновление определенного сервера

updateSERVERNAME

перезагрузка определенного сервера

rebootSERVERNAME
0
ответ дан 24 July 2018 в 19:37

Ключевое слово - управление конфигурацией. Один инструмент, который я использую для этой цели, - Ansible. Там вы выражаете желаемую конфигурацию с помощью файла YAML, и Ansible заботится обо всем этом. Конечно, вы также можете перезагрузить хосты с этим, см. Этот ответ, который также дает вам первое впечатление о том, как он будет выглядеть.

Существуют также другие параметры, такие как Ansible , Puppet, или этот ответ .

0
ответ дан 24 July 2018 в 19:37

Другие вопросы по тегам:

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