docs: document configuration

This commit is contained in:
June 2024-06-08 21:34:12 +02:00
parent 9e96034997
commit 8845a6b408
Signed by: june
SSH key fingerprint: SHA256:o9EAq4Y9N9K0pBQeBTqhSDrND5E7oB+60ZNx0U1yPe0

View file

@ -18,6 +18,53 @@ Here infra-rebuild will simply run `nixos-rebuild switch` with the `target-host`
Because infra-rebuild tries to be usable without any configuration, by default it queries the hosts FQDN from its `nixosConfiguration` and uses that for the target host.
However to override aspects of the target host for specific or all hosts, infra-rebuild also accepts a `deployment_configuration.json` as configuration.
## Configuration
infra-rebuild accepts optional configuration in a `deployment_configuration.json`. \
The following keys are available to be set for configuring various aspects of deployment for specific or all hosts:
- `default.targetPort`: A default port to use for connecting to all host.
- `default.targetUser`: A default user to use for connecting to all host.
- `hosts.<host>.targetPort`: The port to use for connecting to `<host>`.
- `hosts.<host>.targetUser`: The user to use for connecting to `<host>`.
- `hosts.<host>.targetHostname`: The hostname to use for connecting to `<host>`.
### Example
An example `deployment_configuration.json` might look like this then:
```json
{
"default": {
"targetPort": 2222,
"targetUser": "deploy"
},
"hosts": {
"web-01": {
"targetUser": "web-deploy",
"targetHostname": "web-01-intern.infra.example",
"targetPort": 22
}
},
"git": {
"targetUser": "git-deploy"
}
}
```
### Order of Precedence
The order of precedence from least to greatest for `targetPort` and `targetUser` is the following:
1. system default
2. `default.targetPort/User`
3. `hosts.<host>.targetPort/User`
The order of precedence from least to greatest for `targetHostname` is the following:
1. FQDN from hosts nixosConfiguration
2. `hosts.<host>.targetHostname`
## License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.