Update BUILD.md, README.md files

This commit is contained in:
XenGi 2021-03-01 22:06:45 +00:00
commit ff9d8a6443
2 changed files with 40 additions and 3 deletions

21
BUILD.md Normal file
View file

@ -0,0 +1,21 @@
Image building
==============
## Notes
- Gentoo base?
- CentOS/Rocky base?
## Process
1. Setup minimal base rootfs
2. Install needed packages
3. Create `/config` directory
4. Setup git repository for config files
5. Initial ansible run with default config
6. Setup symlinks to `/config/*`
7. Run testsuite
8. Export rootfs as btrfs snapshot
9. Release snapshot as new DEVELOP version
10. Run testsuite
11. Once a week: Release snapshot as RELEASE version

View file

@ -40,11 +40,11 @@ MBR/BIOS:
/dev/disk3 btrfs@home /home
/dev/disk3 btrfs@root-2021-04-01 /
/dev/disk3 btrfs@root-2021-04-20 /
/dev/disk3 btrfs@conf-2021-04-01 /config
/dev/disk3 btrfs@conf-2021-04-20 /config
/dev/disk3 btrfs@config /config
```
- Every installed release has it's own subvolume for rootfs and config in case a configuration changes with an update
- Every installed release has it's own subvolume for the rootfs
- The `config` subvolumes has a git repository which saves all configuration changes and the used version
- The user can choose which one to boot into
### Update flow
@ -69,6 +69,22 @@ Update process:
- the system reboots, now with the `last` entry being the default booting into the last known working system
- the user gets displayed an error because `last` and `current` is not the pointing to the same version and `last` is booted indicating an error
### Configuration changes
- User changes current config via HTTP API (Web interface)
- Background process puts changes into ansible variables in `/config`
- When user discards changes git repo under `/config` is reset to original state
- When change is ready and user triggers commit via HTTP API
- Changes form a git commit with name `[$VERSION] $username - $change summary`
- Timer is setup to revert to old config in 600s
- Changes get applied via ansible
- User confirms working state via HTTP API
- Timer get removed
- If new change is not confirmed and Timer gets triggered
- git commit is reverted
- Ansible runs again with old config
- User get an error message
---
Made with ❤️ and 🪄✨.