Complete the Audita amendment and resume Notarius planning
This commit is contained in:
@@ -65,3 +65,44 @@
|
||||
- Treat `rakestraw-ansible` as a style reference for direct tasks, shallow
|
||||
control flow, and concise variable use, while retaining current practices
|
||||
such as fully qualified collection names.
|
||||
|
||||
## Application Configuration Interfaces
|
||||
|
||||
- Expose application configuration through documented, field-specific role
|
||||
variables suitable for `host_vars`, `group_vars`, play variables, and
|
||||
composing roles.
|
||||
- Give structurally required fields concrete defaults. Define optional
|
||||
application settings as `null` unless the role intentionally owns the
|
||||
corresponding policy.
|
||||
- Treat a null optional variable as "omit this field from the rendered
|
||||
configuration." Do not copy documented upstream defaults into role defaults
|
||||
merely to write them back to the application.
|
||||
- Let the application supply its built-in defaults for omitted fields. This
|
||||
avoids freezing a duplicate defaults database in Ansible and permits upstream
|
||||
default changes to take effect naturally.
|
||||
- Use `is not none` when conditionally rendering optional values. Do not use
|
||||
truthiness, because false, zero, an empty string, or an empty collection may
|
||||
be an intentional value.
|
||||
- Emit a nested configuration section only when at least one of its descendant
|
||||
variables is non-null.
|
||||
- Serialize strings and collections with appropriate Ansible or Jinja filters.
|
||||
Do not construct YAML quoting manually.
|
||||
- Keep argument specifications aligned with the public variables. Optional
|
||||
nullable variables are not required; use a permissive type only when the
|
||||
native application accepts more than one scalar type.
|
||||
- Prefer one field-specific interface. Do not provide a parallel raw mapping,
|
||||
template override, or merge mechanism unless a concrete requirement defines
|
||||
its precedence and behavior.
|
||||
- Application roles expose native configuration choices. The suite-level role
|
||||
supplies cross-application and deployment-specific policy through those
|
||||
variables.
|
||||
- Manage the resulting file with one ordinary `ansible.builtin.template` task.
|
||||
Do not add configuration assembly facts, preliminary file inspection, or
|
||||
production validation unless independently required.
|
||||
- Tests should prove the minimal default document, representative rendering
|
||||
across all sections, omission of null fields, preservation of intentional
|
||||
falsey values, native configuration validity, and repeated convergence.
|
||||
|
||||
Role defaults define what Ansible intends to manage, not a mirror of every
|
||||
application default. A concrete default means the role deliberately owns that
|
||||
policy; a null default leaves the policy with the application.
|
||||
|
||||
Reference in New Issue
Block a user