8a08f429d2 | ||
---|---|---|
internal | ||
.gitignore | ||
LICENSE | ||
README.md | ||
args.go | ||
help.go | ||
main.go |
README.md
| nix-amer |
name: nix-amer
version: 0.1.0
description: Configuration automation tool
author: xdrm-brackets
Need to automate the setup of your linux server or desktop ? This tool is made for you.
[TOC]
I. Commands
Your whole setup remains in 1 only build file. Each line contains one instruction, the list of instructions is listed below.
1) Comments
Each line beginning with one of the following characters : [
, #
or ;
is considered a comment and is not interpreted.
2) package management
These instructions allow you to interact with the package system available on your system.
install <packages>
Install the listed packages. If more than one, use spaces to separate package names.
delete <packages>
Remove the listed packages. If more than one, use spaces to separate package names.
3) setup configuration
This instruction allow you to set fields of configuration files without the need of an editor and in a developer-readable manner.
set <expr> <content>
Update a configuration file where <expr> is a dot-separated human-readable path expression and <content> is a string or a file. If a string is given, it will override/add the field ; if a file is given the configuration file will be replaced by it.
4) service management
These instructions allow you to interact with the service system (cf. systemd).
service [enable|start|stop|restart|reload] <services>
Perform the action on services. If more than one, use spaces to separate service names.
5) aliases
The file format allows you to create aliases to file paths for more readability in the path expression or with the run
command.
alias name /path/to.file
Create the alias name
which resolves to the path /path/to.file
.
6) custom scripts
These instructions allow you to use custom scripts for complex operations.
run <script>
Execute the executable located at the path <script>. If script is an alias it will resolve to its path
II. Path Expressions
The syntax is pretty fast-forward, it uses 2 levels (file, fields) to find your configuration line : location_or_alias@fields
.
Field | Description | Example |
---|---|---|
location_or_alias |
Path to the configuration file to edit. The file will be created if not found. If the path is an alias created before in the file, it will resolve to the alias value as a filename. | /etc/nginx/nginx.conf , some-alias |
fields |
Dot-separated chain of strings that match a configuration field. If the field does not point to a raw field but an existing field container, the <value> will replace the group with a text value. | AllowGroups , http.gzip |
The
fields
is processed only for known file formats listed in this section.
File Formats
Configuration files can be written according to some standards or application-specific syntax. This tool uses standard and third-party to parse the following formats :
xml is not yet supported ; complex structure the library outputs (attributes vs. content) to understand better
-
yaml with go-yaml/yaml.
-
ini with go-ini/ini.
-
and more to come...
Example
Launch the following command to install your server :
$ nix-amer -p apt-get myserver.build
Replace
apt-get
by your package manager;nix-amer -help
for available options.
myserver.build
[ comment starts with opening brackets '['
[aliases]
alias sshd /etc/ssh/sshd_config
alias nginx /etc/nginx/nginx.conf
alias sslh /etc/default/sslh
[install packages]
install nginx ssh
install sslh
[nginx]
set nginx@http.gzip off
service enable nginx
service start nginx
[sshd]
set sshd@PermitRootLogin no
set sshd@PermitEmptyPasswords no
service enable sshd
service enable ssh
[sslh]
set sslh@RUN yes
set sslh@DEAMON_OPTS "--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:44300 --pidfile /var/run/sslh/sslh.pid"
service enable sslh
service start sslh