Sobes.tech
Middle+

How will you install software on a large number of machines if you don't have Ansible and Python?

sobes.tech AI

Answer from AI

I will use one of the following strategies:

  1. Bash scripts using SSH. I will create a script that connects to each server via SSH in turn and executes installation commands.

    #!/bin/bash
    
    SERVERS=("server1" "server2" "server3") # List of servers
    
    for SERVER in "${SERVERS[@]}"; do
      echo "Connecting to ${SERVER}..."
      ssh ${SERVER} << EOF
      # Commands to install software on the remote server
      sudo apt update
      sudo apt install -y package-name
    EOF
      echo "Installation on ${SERVER} completed."
    done
    

    Pros: Simple for basic tasks, does not require additional tools. Cons: Scalability, error management, lack of idempotence.

  2. Package distribution. I will create packages (deb, rpm) with the necessary software and dependencies. Then distribute them to servers and install using standard package managers (apt, yum). Utilities like scp can be used to copy packages and SSH to run installation commands.

    #!/bin/bash
    
    SERVERS=("server1" "server2" "server3")
    PACKAGE_PATH="/path/to/package.deb"
    
    for SERVER in "${SERVERS[@]}"; do
      echo "Copying package to ${SERVER}..."
      scp ${PACKAGE_PATH} ${SERVER}:/tmp/package.deb
    
      echo "Installing package on ${SERVER}..."
      ssh ${SERVER} "sudo dpkg -i /tmp/package.deb"
    
      echo "Installation on ${SERVER} completed."
    done
    

    Pros: Using native package managers, managing dependencies. Cons: Requires creation and maintenance of packages.

  3. Using specialized deployment software. There are tools designed for software and image deployment, such as:

    • PXE Boot (Preboot Execution Environment): For installing operating systems and basic software during network boot.
    • Clonezilla: For cloning disks or partitions.
    • Custom scripts using rsync: For synchronizing files and directories with software.

    Each tool suits its scenario. PXE is good for initial OS installation, Clonezilla for quick deployment of identical images, rsync for synchronizing configuration and executable files.

The choice of method depends on the specifics of the software, the number of servers, automation requirements, and expertise level. I will primarily consider bash scripts for simple cases and package managers for more complex scenarios with dependencies.