mirror of
https://github.com/jmcorgan/fips.git
synced 2026-07-30 19:46:15 +00:00
packaging: ship fips.yaml as an example, not a dpkg conf-file
Installing /etc/fips/fips.yaml as a live dpkg conf-file collides with a configuration-management-rendered or operator-edited config on upgrade: dpkg either prompts interactively (keep/replace), stalling unattended upgrades, or clobbers the local file. Ship the default config as /usr/share/doc/fips/fips.yaml.example (mode 644) and drop it from conf-files. postinst now seeds /etc/fips/fips.yaml from the example only when it does not already exist (mode 600), yielding to any existing config without a prompt or clobber. Add ConditionPathExists for the config to the service unit so a missing config skips the unit cleanly rather than crash-looping.
This commit is contained in:
+12
-2
@@ -33,10 +33,20 @@ packaging/
|
||||
### Debian/Ubuntu (`.deb`)
|
||||
|
||||
Built with [cargo-deb](https://github.com/kornelski/cargo-deb). Installs
|
||||
`fips`, `fipsctl`, and `fipstop` to `/usr/bin/`, places config at
|
||||
`/etc/fips/fips.yaml` (preserved on upgrade), and enables the systemd
|
||||
`fips`, `fipsctl`, and `fipstop` to `/usr/bin/`, and enables the systemd
|
||||
service.
|
||||
|
||||
The default configuration ships as an example at
|
||||
`/usr/share/fips/fips.yaml.example` and is **not** a dpkg conf-file.
|
||||
(It is deliberately **not** under `/usr/share/doc`, which minimal and
|
||||
container installs path-exclude, since the postinst reads it at install
|
||||
time.)
|
||||
On install, `postinst` seeds `/etc/fips/fips.yaml` (mode 600) from the
|
||||
example **only if it does not already exist**, so a configuration that
|
||||
was rendered by configuration management or edited by an operator is
|
||||
never prompted for or clobbered on upgrade. To reset to defaults, remove
|
||||
`/etc/fips/fips.yaml` and reinstall, or copy the example back manually.
|
||||
|
||||
```sh
|
||||
# Build
|
||||
make deb
|
||||
|
||||
Reference in New Issue
Block a user