# AutoPilot AutoPilot icon Introduction

AutoPilot (opens new window) is a free to use bash (opens new window) script (for both Debian and RHEL related operating systems) written by Noam Alum (opens new window) meant to automate the process of setting up a new system.
It uses YAML (opens new window) for its configuration file, so it is very easy to set up, and you can create numerous configuration files for different occasions. (I like to call them "Profiles" 🙃)

I used GitHub (opens new window) for version controle.

AutoPilotBanner



# Features:

TIP

If you want to request a new feature, you can do that here (opens new window).


# Use Cases:

  • Educational Institutions

    Educational institutions can
    leverage AutoPilot to
    quickly deploy standardized
    environments for students and
    faculty.

  • Development Environments

    Developers can use New
    System to configure their
    development machines with
    the necessary programming
    languages, libraries, frameworks,
    and tools.

  • Personal Use

    Individuals who frequently
    set up new machines or
    reinstall their operating
    systems can benefit from
    AutoPilot by automating
    the setup process.

  • Testing and QA

    AutoPilot automates test
    environment setup, providing
    quality assurance teams
    and testers with
    consistent, repeatable
    configurations and necessary
    tools.

  • Temporary Setups

    For temporary or event-based
    setups like trade shows
    or conferences, AutoPilot
    quickly prepares machines with
    the required software and
    settings, making deployment and
    management easier for short
    periods.

  • Rescue and Recovery

    When a system needs
    recovery or rebuilding after
    a failure, AutoPilot
    automates software reinstallation
    and settings reconfiguration,
    reducing the time to
    restore it to its original
    state.

  • Company Deployment

    A company can use
    AutoPilot to quickly
    configure new machines,
    ensuring consistent software
    and settings. This includes
    installing productivity tools,
    setting up configurations,
    and applying security policies.

  • OS Migration

    When switching operating systems,
    AutoPilot automates setup
    of applications, configurations, and
    settings, ensuring a smooth
    transition and minimizing
    manual reinstallation and
    reconfiguration.

  • System Formatting

    If you need to format
    and reinstall your operating
    system, AutoPilot handles
    post-installation setup. It
    automates software installation,
    configuration, and personalization,
    helping you get back
    to work faster.



I've used utils.sh (opens new window) to ensure the quality of the script and YAML to make it easyer creating a configuration file, for refrence, heres an example configuration file:

# AutoPilot - Example configuration file

# SELinux status
SELinux: Disabled

# List of packages to be installed
Installed_packages:
  - name: FireJail
    type: Pm
    source: firejail
  - name: Discord
    type: Pkg
    source: "https://discord.com/api/download?platform=linux&format=deb"
  - name: NVIM
    type: Sh
    source: "https://docs.alum.sh/files/NVIM-install.sh"
  - name: Chrome
    type: Pkg
    source: "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb"
  - name: git
    type: Pm
    source: git

Network_Configuration:
  - nic: tun0
    ip: 192.168.2.14/24
    gateway: 192.168.2.1
    dns: 8.8.8.8,8.4.8.4
  - nic: eth0
    ip: "%DHCP%"
    gateway: "%DHCP%"
    dns: "%DHCP%"

# Shell commands to run
Run_Lines:
  - echo "Hello"
  - echo "Hello world"

# List of plugins
Plugins:
  - name: FireJail
    script: plugins/firejail
  - name: make_backup
    script: plugins/make_backup

# User management
Users:
  - name: noam
    pass: "%Gen%"
    group: noam,sudo
    shell: /bin/bash
  - name: shay
    pass: "mL{3_Ajx04,,,.......||||||//3QZ"
    group: shay
    shell: /bin/bash

# Network Configuration
Network_Configuration:
  - nic: tun0
    ip: 192.168.2.14
    gateway: 192.168.2.1
    dns: 8.8.8.8,8.4.8.4
  - nic: eth0
    ip: "%DHCP%"
    gateway: "%DHCP%"
    dns: "%DHCP%"

Notice the readability and ease of use.


How can you contribute?