Как развернуть программы на нескольких машинах

Как развернуть программы на нескольких машинах

Мне нужно установить несколько программ примерно на 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

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

  1. установитьsshpassна вашем локальном компьютере:

    sudo apt-get install sshpass
    

    Это позволит вам передать пароль в качестве аргумента командной строки:

     sshpass -p '<password>' ssh user@server
    
  2. Создать ssh-ключ

    ssh-keygen -t rsa
    

    Вы можете упростить ситуацию, разрешив использовать пустую парольную фразу (в остальной части этого ответа предполагается, что вы это сделали; дайте мне знать, если ваши соображения безопасности не позволяют этого сделать, и я внесу соответствующие изменения).

  3. Создайте файл со всеми интересующими вас 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
    
  4. Теперь, когда у вас настроен доступ без пароля, установите свое программное обеспечение на каждую машину (предполагается, что она $userможет работать apt-get, по сути, это $userтак root):

     while read ip user pass; do 
       ssh $user@$ip "apt-get install package; 
     done < ips.txt
    

решение3

Для долгосрочной цели

Если вам нужен инструмент автоматизации, который позволит централизовать управление различными версиями *nix, работающими в вашей сети, и управлять всеми возможными аспектами конфигурации, то вы можете взглянуть на:

  1. кукольный
  2. шеф-повар
  3. 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.

Связанный контент