
Мне нужно установить несколько программ примерно на 40 машин с Kubuntu 13.04, и я хотел бы узнать, какие у меня есть варианты, чтобы сделать это максимально эффективно.
EDIT: У меня уже настроены репозитории, и все машины представляют собой идентичные клоны, без аутентификации LDAP или централизованного сервера.
решение1
Подойдет любое ПО для управления конфигурациями, для этого они и предназначены, я бы посоветовал взглянуть на chef. Вот рекламный текст с их веб-страницы:
Chef — это платформа автоматизации, которая преобразует инфраструктуру в код. Перестаньте думать в терминах физических и виртуальных серверов. С Chef ваш реальный актив — это код, который оживляет эти серверы и предоставляемые ими услуги. Автоматизированная инфраструктура может ускорить время выхода на рынок, помочь вам управлять масштабом и сложностью, а также защитить ваши системы.
Независимо от того, находится ли ваша сеть в облаке, на месте или в гибридной среде, Chef может автоматизировать процесс настройки, развертывания и масштабирования ваших серверов и приложений, независимо от того, управляете ли вы 5 серверами, 5000 серверами или 500 000 серверами. Неудивительно, что Chef был выбран такими компаниями, как Facebook и Amazon, для решения критически важных задач.
это видео очень поможет: http://www.youtube.com/watch?v=0UXh5EnFZrM
домашняя страница: http://www.opscode.com/chef/
решение2
Чтобы расширить очень хороший ответ Рахула, можно достаточно легко настроить беспарольный доступ к каждой из машин, используя следующий подход:
установить
sshpass
на вашем локальном компьютере:sudo apt-get install sshpass
Это позволит вам передать пароль в качестве аргумента командной строки:
sshpass -p '<password>' ssh user@server
Создать ssh-ключ
ssh-keygen -t rsa
Вы можете упростить ситуацию, разрешив использовать пустую парольную фразу (в остальной части этого ответа предполагается, что вы это сделали; дайте мне знать, если ваши соображения безопасности не позволяют этого сделать, и я внесу соответствующие изменения).
Создайте файл со всеми интересующими вас IP-адресами и соответствующими им именами пользователей и паролями, по одному на строку:
1.2.3.4 bob bobs_password 11.22.33.44 hary harrys_password
Теперь используйте
sshpass
для копирования ваших ключевых файлов и — при условии, что вы использовали пустую парольную фразу — разрешите беспарольный доступ ко всем машинам:while read ip user pass; do sshpass -p "$pass" ssh ssh-copy-id -i ~/.ssh/id_rsa.pub $user@$ip; done < ips.txt
Теперь, когда у вас настроен доступ без пароля, установите свое программное обеспечение на каждую машину (предполагается, что она
$user
может работатьapt-get
, по сути, это$user
такroot
):while read ip user pass; do ssh $user@$ip "apt-get install package; done < ips.txt
решение3
Для долгосрочной цели
Если вам нужен инструмент автоматизации, который позволит централизовать управление различными версиями *nix, работающими в вашей сети, и управлять всеми возможными аспектами конфигурации, то вы можете взглянуть на:
- кукольный
- шеф-повар
- cfengine3
Для краткосрочной цели
Если вам нужно временное решение, чтобы просто установить какой-то пакет через apt-get
или yum
, то вы можете использовать shell или скрипт perl, python.
Если вы уже настроили аутентификацию без пароля, то вы можете просто использовать следующий скрипт:
#!/usr/bin/env bash
Servers_list=/opt/servers_list
PackageName="package-name"
for Host in $(< $Servers_list )
do
echo "Installing package on $Host"
ssh "${Host}" apt-get -y install "${PackageName}"
done
Если у вас нет беспарольной аутентификации, то вы можете использовать expect
инструмент или paramiko
модуль на Python.