Simple server deployment and configuration
system-deploy is a systemd inspired server configuration tool with focus on simplicity and ease of use.
Overview
system-deploy started as my personal server configuration and management tool. It’s heavily inspired by systemd’s unit files and is focused on simplicity and ease of use. Thanks to the programming language, the released binary is statically linked and does not require any external dependencies like heavy execution environments or preinstalled packages.
Features
- systemd unit file syntax
- static binary without external dependencies
- detect changes and trigger actions
- multi-platform supported
- extensible and hackable
Getting started
This section will give you a quick overview on how to work with system-deploy so you can jumpstart your server configuration. For more information on system-deploy, examples and more documentation please checkout the sections on the left.
Installation
To install system-deploy, just download the latest release binary for your platform from the release page and copy it to a location inside your $PATH.
For example, to install system-deploy to /usr/local/bin, use the following:
VERSION=0.1.0
DOWNLOAD_LINK=https://github.com/ppacher/system-deploy/releases/download/v${VERSION}/system-deploy_${VERSION}_linux_x86_64.tar.gz
# Download and unpack the archive
wget -O system-deploy.tar.gz ${DOWNLOAD_LINK}
tar xfz ./system-deploy.tar.gz
# Add execution permissions and copy to /usr/local/bin
chmod a+x ./system-deploy
sudo mv ./system-deploy /usr/local/bin
Finally, try running system-deploy:
system-deploy help
Create your first task
Now, let’s create your first system-deploy task by creating the directory ~/.deploy/ and a task file:
~/.deploy/10-install-tools.task
[Task]
Description=Install various tools
[InstallPackages]
# AptPkgs will only be installed if `apt` is
# available (i.e. on Debia, Ubuntu and friends)
AptPkgs=vim git golang zsh restic ssmtp htop acl
AptPkgs=tree unattended-upgrades
# PacmanPkgs will onyl be installed if `pacman`
# is available (i.e. on Arch Linux, Manjaro, ...)
PacmanPkgs=vim go git acl zsh restic htop tree msmtp
Finally, execute all tasks in ~/.deploy:
$ system-deploy ~/.deploy
INFO[0004] 10-install-tools.task : updated
Congrats, you just created your first deployment task! Time to read on:
📖 Documentation 🧰 Actions 📓 Examples
About the project
system-deploy is © 2020 by Patrick Pacher and Contributors
License
system-deploy itself is licensed under a BSD 3-clause license. See LICENSE for more information.
Note that the binaries distributed via the release page are licensed under GPL-3 because the EditFile action is compiled against a GPL-3 licensed library.