step ssh-host notes
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
---
|
||||
description: "Use when modifying modules/services/step-ca/ssh-host.nix. Covers Step SSH host certificate wiring, secret key contract, and host-side expectations required by consumers."
|
||||
name: "Step SSH Host Module Instructions"
|
||||
applyTo: "modules/services/step-ca/ssh-host.nix"
|
||||
---
|
||||
|
||||
# Step SSH Host Module Instructions
|
||||
|
||||
Use this instruction when changing the shared NixOS module in modules/services/step-ca/ssh-host.nix.
|
||||
|
||||
## Module Contract
|
||||
|
||||
- Keep this module reusable across hosts; do not hard-code host-local file paths beyond SSH system paths under /etc/ssh.
|
||||
- Preserve the option interface unless the task explicitly changes it:
|
||||
- step-ssh-host.hostname (required host identity used for cert principals)
|
||||
- step-ssh-host.provisioner (default: "admin")
|
||||
- Keep imports = [ inputs.self.modules.nixos.ssh ] so OpenSSH host certificate settings stay composed through the shared SSH module.
|
||||
|
||||
## Secret Key Contract
|
||||
|
||||
- This module currently consumes `config.sops.secrets."janus/admin_jwk"` as the Step provisioner password file.
|
||||
- Treat `janus/admin_jwk` as a public contract key name for current consumers. If you rename it, update all consumers and host secret files in the same change.
|
||||
- Keep secret permissions strict (root ownership and 0400 mode).
|
||||
- Do not assume a local sops file path in this module. The consuming host must define sops.defaultSopsFile.
|
||||
|
||||
## Host Expectations
|
||||
|
||||
When this module is enabled by a host, the host is expected to provide:
|
||||
|
||||
- A working Step trust/bootstrap path (for example via janus-ca or equivalent trust material).
|
||||
- `sops.defaultSopsFile` containing `janus.admin_jwk` (or equivalent if contract is intentionally changed everywhere).
|
||||
- `step-ssh-host.hostname` matching deployed host identity and DNS naming expectations.
|
||||
|
||||
## SSH Certificate Paths And Principals
|
||||
|
||||
- Preserve the default host key path contract at `/etc/ssh/ssh_host_ed25519_key` unless task scope requires coordinated changes.
|
||||
- Keep host certificate path aligned to `${sshKeyPath}-cert.pub`.
|
||||
- Keep principal issuance based on hostname and hostname.john-stream.com unless domain policy is intentionally migrated.
|
||||
- If changing key/cert filenames or principal naming, update `modules/services/ssh.nix` integration and host rollout notes in the same change.
|
||||
|
||||
## Renewal Behavior
|
||||
|
||||
- Maintain timer/service cadence unless explicitly requested:
|
||||
- timer OnUnitActiveSec = 4h
|
||||
- randomized delay enabled
|
||||
- Keep explicit handling for step ssh needs-renewal return codes to avoid silent failures.
|
||||
- If changing renewal semantics, document whether the service now only checks state or also performs certificate issuance.
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
After editing this module, validate at least one consuming host with:
|
||||
|
||||
1. nix eval .#nixosConfigurations.janus.config.system.build.toplevel.drvPath
|
||||
2. nix build .#nixosConfigurations.janus.config.system.build.toplevel --no-link --dry-run
|
||||
Reference in New Issue
Block a user