NodeRings Docs

Secrets

Vault-backed organisation secrets for cloud-init via secret.KEY

Secrets store sensitive values (API tokens, license keys, bootstrap passwords) in HashiCorp Vault. Reference them in cloud-init templates with {{ secret.API_TOKEN }}: never paste raw secrets into template YAML.

Manage secrets at /configuration/secrets under Orchestration → Secrets.


Create a secret

Add key and value

The value is shown once at creation. Copy it to a password manager if needed: list and get operations return metadata only, not the plaintext value.

Use in cloud-init

#cloud-config
write_files:
  - path: /etc/nrings/token
    content: {{ secret.API_TOKEN | tojson }}
    permissions: '0600'

Security practices

Never echo secret values in support tickets, chat logs, or template comments. NodeRings does not return decrypted values on GET or LIST.

  • Use environment variables for non-sensitive config.
  • Rotate secrets by creating a new Vault version via Update (see below).

Reserved key rules match environment variables: keys cannot use vm, secret, password, and other built-in namespaces.


Secret rotation

When you update a secret's value in NodeRings:

  1. Vault stores a new version of the secret path.
  2. Running VMs are unchanged: cloud-init runs at first boot only; injected files are not updated in place.
  3. New VMs created after the update receive the latest value at compile time.

Rotation runbook

StepAction
1Update the secret value in /configuration/secrets.
2Confirm templates still reference {{ secret.KEY }} (no hard-coded values).
3For existing VMs that need the new credential, rebuild or reprovision (delete + create, or your internal rebuild process).
4Optionally revoke the old credential at the upstream service after new VMs are live.

There is no background job that re-compiles cloud-init for the fleet when secrets change. Plan rotation around VM lifecycle or maintenance windows.


Next