Compare commits
No commits in common. "8845a6b4087a418b80f46637bd740396e092e319" and "3cdd4ba8b57ed95f63be70860b009b518ee08d79" have entirely different histories.
8845a6b408
...
3cdd4ba8b5
65
README.md
65
README.md
|
@ -1,70 +1,5 @@
|
||||||
# infra-rebuild
|
# infra-rebuild
|
||||||
|
|
||||||
infra-rebuild mirrors nixos-rebuild closely in its command-line interface, but focuses on making infrastructure deployment more convenient. It is built for infrastructure defined in a flake, where each hosts configuration is represented by a different `nixosConfiguration` in the flakes output.
|
|
||||||
|
|
||||||
For building the configuration of e.g. two hosts called `web-01` and `git` one can simply run:
|
|
||||||
|
|
||||||
```
|
|
||||||
infra-rebuild build web-01 git
|
|
||||||
```
|
|
||||||
|
|
||||||
For deploying the hosts - using the switch operation - it's as simple as:
|
|
||||||
|
|
||||||
```
|
|
||||||
infra-rebuild switch web-01 git
|
|
||||||
```
|
|
||||||
|
|
||||||
Here infra-rebuild will simply run `nixos-rebuild switch` with the `target-host` option set for each 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
|
## 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.
|
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.
|
||||||
|
|
Loading…
Reference in a new issue