Sobes.tech
Middle
92
questionbank

Если у вас есть много машин и нет Ansible и Python, каким образом вы будете устанавливать на них программное обеспечение?

Answer from AI

sobes.tech AI

Можно использовать bash-скрипты, которые будут запускаться по SSH или распределяться другими способами.

  • SSH с циклами:

    #!/bin/bash
    
    # Список серверов
    SERVERS=("server1" "server2" "server3")
    
    # Команда для установки пакета
    INSTALL_CMD="sudo apt-get update && sudo apt-get install -y nginx"
    
    for server in "${SERVERS[@]}"
    do
      echo "Подключение к $server..."
      ssh $server "$INSTALL_CMD"
      if [ $? -eq 0 ]; then
        echo "Установка на $server успешна."
      else
        echo "Ошибка установки на $server."
      fi
    done
    

    Этот подход требует наличия SSH доступа с авторизацией по ключам без пароля.

  • SSH с параллельным выполнением: Для ускорения можно выполнять команды параллельно, например, через GNU Parallel:

    #!/bin/bash
    
    # Список серверов
    SERVERS=("server1" "server2" "server3")
    
    # Команда для установки пакета
    INSTALL_CMD="sudo apt-get update && sudo apt-get install -y htop"
    
    # Запуск команды параллельно на всех серверах
    printf "%s\n" "${SERVERS[@]}" | parallel -j 10 ssh {} "$INSTALL_CMD"
    
    

    Требуется предварительная установка parallel на машине, откуда запускается скрипт.

  • Развертывание пакетов (Deb/RPM): Создание установочных пакетов и их распространение на сервера с последующей локальной установкой.

    #!/bin/bash
    
    # Копирование пакета на сервер
    SERVER="server1"
    PACKAGE="my-app_1.0.deb"
    scp $PACKAGE $SERVER:/tmp/
    
    # Установка пакета по SSH
    ssh $SERVER "sudo dpkg -i /tmp/$PACKAGE && sudo apt-get install -f -y"
    
  • Облачные init-скрипты: Если машины разворачиваются в облаке, можно использовать user-data или cloud-init скрипты для автоматической установки ПО при старте машины.

  • PXE и скрипты после установки: Для Bare Metal серверов можно настроить PXE загрузку и автоматическую установку операционной системы со скриптами, выполняющими установку ПО после завершения инсталляции ОС.

Выбор метода зависит от количества машин, топологии сети, необходимости автоматизации и имеющейся инфраструктуры. Bash и SSH являются базовыми инструментами, доступными почти на любой Linux-системе.