ex_doppler logo

Manage and access your Doppler secrets without leaving Elixir

Hex Version Hex Docs Apache 2 License Mastodon Follow

Table of Contents

Installation

Add :ex_doppler to your list of deps in mix.exs:

{:ex_doppler, "~> 1.0"}

Then run mix deps.get to install ExDoppler and its dependencies.

Quick Start

  1. Create a Doppler Token

  2. Put your token in your environment (NEVER put the token anywhere in your code)

    export HISTIGNORE='export DOPPLER_TOKEN*'
    
    export DOPPLER_TOKEN='dp.st.prd.xxxx'
    
  3. Use ExDoppler to access your secrets

       secret_value = ExDoppler.get_secret_raw!("example-project", "dev_personal", "DB_URL")
  4. You're good to go. I really recommend you have a look at the docs

Mapping

RealmActions ImplementedExDoppler ModuleNotes
Activity LogsList, RetrieveExDoppler.ActivityLogs
AuthsMe, ODIC, RevokeExDoppler.Auths
Config LogsList, Retrieve, RollbackExDoppler.ConfigLogs
ConfigsList, Retrieve, Create, Rename, Clone, Lock, Unlock, DeleteExDoppler.Configs
EnvironmentsList, Retrieve, Create, Update, DeleteExDoppler.Environments
IntegrationsList, Retrieve, Create, Update, Get Options, DeleteExDoppler.Integrations
InvitesListExDoppler.Invites
Project MembersList, RetrieveExDoppler.ProjectMembers
Project RolesList, Retrieve, CreateExDoppler.ProjectRoles
ProjectsList, Retrieve, Create, Update, Delete, List Project PermissionsExDoppler.Projects
Secret SyncsRetrieve, Create, DeleteExDoppler.SecretSyncs
SecretsList, Retrieve, Download, List Names, Create, Update, Update Note, DeleteExDoppler or ExDoppler.Secrets
Service AccountsListExDoppler.ServiceAccounts
Service TokensList, Create, DeleteExDoppler.ServiceTokens
SharesPlain TextExDoppler.Shares
WebhooksList, Retrieve, Enable, Disable, Create, DeleteExDoppler.Webhooks
Workplace RolesList, RetrieveExDoppler.WorkplaceRoles
Workplace UsersList, Retrieve, UpdateExDoppler.WorkplaceUsers
WorkplaceRetrieve, UpdateExDoppler.Workplaces

Not Implemented

Realm : ActionImplementedNotes
Project Roles : Create⁉️Requires a Team tier
Project Roles : Update⁉️Requires a Team tier
Project Members : Add⁉️Requires a Team tier
Project Members : Update⁉️Requires a Team tier
Project Members : Delete⁉️Requires a Team tier
Project Roles : Delete⁉️Requires a Team tier
Trusted IPs : List⁉️Requires a Team tier
Trusted IPs : Add⁉️Requires a Team tier
Trusted IPs : Delete⁉️Requires a Team tier
Groups : List⁉️Requires a Team tier
Groups : Create⁉️Requires a Team tier
Groups : Retrieve⁉️Requires a Team tier
Groups : Update⁉️Requires a Team tier
Groups : Delete⁉️Requires a Team tier
Groups : Add Member⁉️Requires a Team tier
Groups : Delete Memeber⁉️Requires a Team tier
Groups : Retrieve Memeber⁉️Requires a Team tier
Service Accounts : List⁉️Requires a Team tier
Service Accounts : Create⁉️Requires a Team tier
Service Accounts : Retrieve⁉️Requires a Team tier
Service Accounts : Update⁉️Requires a Team tier
Service Accounts : Delete⁉️Requires a Team tier
Service Account Tokens : List⁉️Requires a Team tier
Service Account Tokens : Create⁉️Requires a Team tier
Service Account Tokens : Retrieve⁉️Requires a Team tier
Service Account Tokens : Delete⁉️Requires a Team tier
Webhooks : Update⁉️It's...complex
Workplace Roles : Create⁉️Requires a Team tier
Workplace Roles : Update⁉️Requires a Team tier
Workplace Roles : Delete⁉️Requires a Team tier
Configs : Inheritable⁉️Requires a Team tier
Configs : Inherits⁉️Requires a Team tier
Change Request Policies : Create⁉️Requires a Team tier
Change Request Policies : Retrieve⁉️Requires a Team tier
Change Request Policies : Update⁉️Requires a Team tier
Change Request Policies : Delete⁉️Requires a Team tier
Dynamic Secrets : Issue Lease⁉️Requires a Team tier
Dynamic Secrets : Revoke⁉️Requires a Team tier
Share : E2E Encrypted⁉️Spent hours trying to get the link to actually decrypt