Installed Packages
Define which packages to
install and their sources.
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.
Define which packages to
install and their sources.
Specify commands to be
executed during setup.
Configure network interfaces
and settings.
Include additional scripts or
tools to run as part of the setup.
Set SELinux status as required.
Add users, set their
passwords, their groups
and their shell.
Customize environment
variables and configure shell
settings.
Customize user crontabs for
scheduled tasks.
Add new repositories to
sources list.
Change system time.
TIP
If you want to request a new feature, you can do that here (opens new window).
Educational institutions can
leverage AutoPilot to
quickly deploy standardized
environments for students and
faculty.
Developers can use New
System to configure their
development machines with
the necessary programming
languages, libraries, frameworks,
and tools.
Individuals who frequently
set up new machines or
reinstall their operating
systems can benefit from
AutoPilot by automating
the setup process.
AutoPilot automates test
environment setup, providing
quality assurance teams
and testers with
consistent, repeatable
configurations and necessary
tools.
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.
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.
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.
When switching operating systems,
AutoPilot automates setup
of applications, configurations, and
settings, ensuring a smooth
transition and minimizing
manual reinstallation and
reconfiguration.
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?
← user_input SELinux →