secrets
from corio import sec
secrets builds on encrypt + sets to provide repo-oriented secret file workflows.
Main model:
Config: reads.secrets.yml, definitions, and contextsEncryptcommand: writes encrypted<raw>.black.ymlfiles from<raw>.red.ymlfilesDecryptcommand: writes<raw>.red.ymlfiles back from<raw>.black.ymlwhen allowed
Install:
pip install "corio[secrets]" --upgrade
High-level behavior
- Define raw file globs and encrypted nodes in
.secrets.yml; the.red.ymlsuffix is implicit. - Run encrypt mode to produce
*.black.yml. - Run decrypt mode for selected contexts when needed.
Any *.red.yml file not covered by a definition is still encrypted. All of its fields are encrypted and a warning is
logged.
Encryption deletes each red file by default after its black counterpart has been written or verified. Pass
--delete false to retain red files. Decryption writes red files by default; pass --restore true to write each value
to its original filename and format instead. Pass --force true to overwrite every target regardless of its age or
current contents, and --preserve true to copy the black file's permissions and ownership to the decrypted target.
Minimal .secrets.yml shape
contexts:
- name: web
files:
- "services/web/**/*.yml"
definitions:
- files:
- "services/web/**/*.yml"
nodes:
- "env/password"
- "env/token"
CLI
Entry point:
corio secrets encrypt --context=web
corio secrets decrypt --context=web
For example, the definition path services/web/config.yaml matches
services/web/config.yaml.red.yml. Encryption writes
services/web/config.yaml.black.yml, and decryption restores the red file when the encrypted side is newer or changed.