Skip to content

slipp integrates with Ansible Vault for secure secret management. Generate secrets, store them encrypted, and use them in deployments and local development.

  1. Generate a secret

    Terminal window
    slipp secret
    # Output: 64 hex chars (256-bit)
  2. Add to vault

    Terminal window
    slipp secrets add vault_db_password myproject
  3. Use in templates

    group_vars/all.yml
    database_password: "{{ vault_db_password }}"
  4. Encrypt vault

    Terminal window
    ansible-vault encrypt inventory/host_vars/myhost/vault.yml
Terminal window
slipp secret

Output: 64 hex characters (256-bit entropy)

Terminal window
# 16 bytes (128-bit)
slipp secret --bytes 16
# 64 bytes (512-bit)
slipp secret --bytes 64
Terminal window
slipp secrets list

Shows all registered projects with vault files:

Available vaults:
project vault secrets
myproject inventory/.../vault.yml 5
auth-service inventory/.../vault.yml 3
Terminal window
slipp secrets list myproject
Secrets in inventory/host_vars/myhost/vault.yml:
- vault_db_password
- vault_api_key
- vault_jwt_secret
Terminal window
slipp secrets list myproject vault_db_password
# Output: {{ vault_db_password }}
Terminal window
slipp secrets add vault_db_password myproject

Generates a random secret and adds it to the vault.

Terminal window
slipp secrets add vault_signing_key myproject --jwk

Generates an RSA keypair for JWT signing.

Terminal window
slipp secrets add vault_session_key myproject --bytes 64

Auto-generate secrets for all {{ vault_* }} references:

Terminal window
slipp secrets sync inventory/host_vars/myhost/vars.yml
  1. Scans the YAML file for {{ vault_* }} patterns
  2. Lists found references
  3. Generates random secrets for each
  4. Creates vault.yml in the same directory

Reference vault secrets in your vars files:

group_vars/all.yml
database:
password: "{{ vault_db_password }}"
api:
secret_key: "{{ vault_api_key }}"

Load vault secrets as environment variables:

Terminal window
slipp run dev --vault myproject --cmd "npm run dev"

Secrets are transformed and injected:

  • vault_db_password becomes DB_PASSWORD
  • vault_api_key becomes API_KEY

Combine secrets from multiple projects:

Terminal window
slipp run dev --vault myproject --vault shared-secrets
  1. Create vars file with references

    inventory/host_vars/myhost/vars.yml
    matrix_sliding_sync_shared_secret: "{{ vault_sliding_sync_secret }}"
    matrix_postgres_connection_password: "{{ vault_postgres_password }}"
  2. Generate secrets

    Terminal window
    slipp secrets sync inventory/host_vars/myhost/vars.yml
  3. Encrypt vault

    Terminal window
    ansible-vault encrypt inventory/host_vars/myhost/vault.yml
  4. Deploy

    Terminal window
    slipp deploy
    # Prompts for vault password
  1. Add to vault

    Terminal window
    slipp secrets add vault_new_secret myproject
  2. Reference in vars

    new_service_key: "{{ vault_new_secret }}"
  3. Redeploy

    Terminal window
    slipp deploy