Purpose
Automate consistent DHCP configuration generation across multiple sites from a normalized file-based configuration layout.
Current state
Last touched: 2022-07-12. Functionality and completeness: Core generator logic is implemented; documentation and validation tooling are pending.
Next step
Add baseline automated tests to cover critical flows; Add CI pipeline for build/test/lint; Document deployment/runtime environment (or add Dockerfile); Document interfaces (CLI flags, API endpoints, file formats); Add structured logging and basic health checks.
Interfaces
Inputs- Configuration files (TOML/YAML/JSON/INI/CONF)
Outputs- DHCP config text (stdout)
Reality to Action trace
Reality IngestionNot in scope.
Canonical StorageNot in scope.
Automation EnginesContributes in this stage.
Human InterfacesNot in scope.
Operational AdoptionContributes in this stage.
Core workflow
TBD. Document the 5-10 steps that define the core workflow.
Artifacts
- `conf/` folder structure and file naming conventions (site code, subnet folders, host overrides)
Operational notes
Constraints and scars
- Assumes CIDR masks of /22, /23, or /24; other masks abort with errors.
Reliability posture
Failure modes and safe behavior: Missing config files abort with errors; malformed values produce invalid DHCP output. Idempotency / retries / batching behavior: Deterministic output for a given config tree; no retries.
Observability
- Logs: stdout/stderr from the script
- Metrics/health checks: None documented
- Logs: stdout/stderr from the shell script.
Security and privacy
Config files may include IP/MAC assignments; treat the conf/ directory as sensitive.
Ownership
OwnersJosh Barton
UsersJosh Barton (owner)
iscdhcp
Architecture & Major Components
High-level diagram (text):
- Entry/trigger -> core logic -> outputs (details per docs below)
Entry/trigger
→core logic
→outputs
Entry points: iscdhcp/generate-dhcpd-conf.sh
Top-level folders: conf
Key abstractions: Config folder traversal and DHCP stanza generation
Setup / Build / Run
- Build system(s): None (bash script).
- Update conf/ files and run the generator to emit dhcpd.conf content.