2018-11-06 13:01:05 +00:00
# | nix-amer |
2018-11-06 10:17:33 +00:00
2018-11-06 13:01:05 +00:00
```yaml
name: nix-amer
version: 0.1.0
description: Configuration automation tool
author: xdrm-brackets
```
2018-11-06 10:19:09 +00:00
2018-11-06 13:01:05 +00:00
>Need to automate the setup of your linux server or desktop ? This tool is made for you.
[TOC]
----
2018-11-06 16:17:39 +00:00
2018-11-06 13:01:05 +00:00
### I. Build Format
2018-11-06 16:17:39 +00:00
2018-11-06 13:01:05 +00:00
Your whole setup remains in 1 only build file. Each line contains one instruction, the list of instructions is listed below.
#### 1) package management
These instructions allow you to interact with the package system available on your system.
```
ins < packages >
```
Install the listed packages. If more than one, use spaces to separate package names.
```
upd
```
Update/upgrade your system.
```
del < packages >
```
Remove the listed packages. If more than one, use spaces to separate package names.
#### 3) update configuration files
This instruction allow you to update configuration files without the need of an editor and in a developer-readable manner.
```
cnf < expr > < content >
```
2018-11-06 16:17:39 +00:00
Update a configuration file where \<expr\> is a dot-separated human-readable [path expression ](#ii-path-expressions ) and \<content\> is a string or a file. If a string is given, it will < u > override/add the field</ u > ; if a file is given the configuration file will be < u > replaced</ u > by it.
2018-11-06 13:01:05 +00:00
```
cnf < expr >
```
Remove a configuration field matching the \<expr\> path.
2018-11-06 16:17:39 +00:00
2018-11-06 13:01:05 +00:00
#### 4) service management
These instructions allow you to interact with the service system (_cf. systemd_).
```
ser [enable|start|stop|restart|reload] < services >
```
Perform the action on services. If more than one, use spaces to separate service names.
2018-11-06 16:17:39 +00:00
#### 5) custom scripts
These instructions allow you to use custom scripts for complex operations.
```
run < script >
```
Execute the \<script\> file.
2018-11-06 13:01:05 +00:00
----
2018-11-06 16:17:39 +00:00
2018-11-06 13:01:05 +00:00
### II. Path Expressions
2018-11-07 10:35:04 +00:00
The syntax is pretty fast-forward, it uses 3 levels to find your configuration line : `[subject.path].[field.path]` .
2018-11-06 13:01:05 +00:00
| Field | Description | Example |
2018-11-06 16:17:39 +00:00
| --------- | :----------------------------------- | -------------------------- |
2018-11-07 10:35:04 +00:00
| `subject.path` | Dot-separated path to the configuration file to edit. Available program paths are listed in this [table ](tablefile ). | `sshd` , `httpd` , `nginx` , `nginx.vhost.default` |
| `field.path` | Dot-separated chain of strings that match with a configuration field. If **omitted** , the \<value\> will just be added at the end of the configuration file. In the same way if the field does not point to a raw field but a parent or group containing fields, the \<value\> will be added at the end of the group. | `sshd.AllowGroups` , `nginx.http.gzip` |
2018-11-06 16:17:39 +00:00
----
## Example
_myserver.build_
```
2018-11-06 17:03:31 +00:00
sys name ubuntu # required to choose which
sys version 18.4 # package-manager to use
2018-11-06 16:17:39 +00:00
upd
ins nginx ssh sslh
cnf nginx.http.gzip on
2018-11-07 10:35:04 +00:00
cnf nginx.vhost.new-site ./localConfFile
2018-11-06 16:17:39 +00:00
ser enable nginx
ser start nginx
cnf sshd.PermitRootLogin no
cnf sshd.PermitEmptyPasswords no
cnf sshd.StrictModes yes
cnf sshd.Port 22
ser enable sshd
ser enable ssh
cnf sslh.RUN yes
cnf 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"
ser enable sslh
ser start sslh
```