diff --git a/.changelog/3505.txt b/.changelog/3505.txt new file mode 100644 index 0000000000..3118b0a0c7 --- /dev/null +++ b/.changelog/3505.txt @@ -0,0 +1,3 @@ +```release-note:note +New environment variables: We added support for the `MONGODB_ATLAS_PUBLIC_API_KEY` and `MONGODB_ATLAS_PRIVATE_API_KEY` environment variables which are widely used across the MongoDB ecosystem. +``` diff --git a/docs/index.md b/docs/index.md index c751bab236..f02c4288d1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -49,7 +49,7 @@ You can use any the following methods: ### Environment Variables You can also provide your credentials via the environment variables, -`MONGODB_ATLAS_PUBLIC_KEY` and `MONGODB_ATLAS_PRIVATE_KEY`, +`MONGODB_ATLAS_PUBLIC_API_KEY` and `MONGODB_ATLAS_PRIVATE_API_KEY`, for your public and private MongoDB Atlas programmatic API key pair respectively: ```terraform @@ -59,14 +59,13 @@ provider "mongodbatlas" {} Usage (prefix the export commands with a space to avoid the keys being recorded in OS history): ```shell -$ export MONGODB_ATLAS_PUBLIC_KEY="" -$ export MONGODB_ATLAS_PRIVATE_KEY="" +$ export MONGODB_ATLAS_PUBLIC_API_KEY="" +$ export MONGODB_ATLAS_PRIVATE_API_KEY="" $ terraform plan ``` -As an alternative to `MONGODB_ATLAS_PUBLIC_KEY` and `MONGODB_ATLAS_PRIVATE_KEY` -if you are using [MongoDB CLI](https://docs.mongodb.com/mongocli/stable/) -then `MCLI_PUBLIC_API_KEY` and `MCLI_PRIVATE_API_KEY` are also supported. +We recommend that you use the `MONGODB_ATLAS_PUBLIC_API_KEY` and `MONGODB_ATLAS_PRIVATE_API_KEY` environment variables because they are compatible with other MongoDB tools, such as Atlas CLI. +You can still use `MONGODB_ATLAS_PUBLIC_KEY` and `MONGODB_ATLAS_PRIVATE_KEY` as alternative keys in your local environment. However, these environment variables are not guaranteed to work across all tools in the MongoDB ecosystem. ### AWS Secrets Manager AWS Secrets Manager (AWS SM) helps to manage, retrieve, and rotate database credentials, API keys, and other secrets throughout their lifecycles. See [product page](https://aws.amazon.com/secrets-manager/) and [documentation](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) for more details. diff --git a/internal/provider/provider.go b/internal/provider/provider.go index 061c21d7a0..4873ddcbf1 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -352,6 +352,7 @@ func setDefaultValuesWithValidations(ctx context.Context, data *tfMongodbAtlasPr if data.PublicKey.ValueString() == "" { data.PublicKey = types.StringValue(MultiEnvDefaultFunc([]string{ + "MONGODB_ATLAS_PUBLIC_API_KEY", "MONGODB_ATLAS_PUBLIC_KEY", "MCLI_PUBLIC_API_KEY", }, "").(string)) @@ -362,6 +363,7 @@ func setDefaultValuesWithValidations(ctx context.Context, data *tfMongodbAtlasPr if data.PrivateKey.ValueString() == "" { data.PrivateKey = types.StringValue(MultiEnvDefaultFunc([]string{ + "MONGODB_ATLAS_PRIVATE_API_KEY", "MONGODB_ATLAS_PRIVATE_KEY", "MCLI_PRIVATE_API_KEY", }, "").(string)) diff --git a/internal/provider/provider_sdk2.go b/internal/provider/provider_sdk2.go index b81132686c..052a3518d7 100644 --- a/internal/provider/provider_sdk2.go +++ b/internal/provider/provider_sdk2.go @@ -351,6 +351,7 @@ func setDefaultsAndValidations(d *schema.ResourceData) diag.Diagnostics { } if err := setValueFromConfigOrEnv(d, "public_key", []string{ + "MONGODB_ATLAS_PUBLIC_API_KEY", "MONGODB_ATLAS_PUBLIC_KEY", "MCLI_PUBLIC_API_KEY", }); err != nil { @@ -361,6 +362,7 @@ func setDefaultsAndValidations(d *schema.ResourceData) diag.Diagnostics { } if err := setValueFromConfigOrEnv(d, "private_key", []string{ + "MONGODB_ATLAS_PRIVATE_API_KEY", "MONGODB_ATLAS_PRIVATE_KEY", "MCLI_PRIVATE_API_KEY", }); err != nil {