Backend/azure/update to latest sdks#36258
Conversation
…-11-09 to 2023-11-03
|
The failed "Unit Tests" is not related to this PR. |
|
Thanks for this submission, I let the HashiCorp Azure team know about this PR. |
|
@mbfrahry Thanks for the new round of review! I've updated the code according to all the feedbacks you've provided. Test passed: backend/remote-state/azure on εéá backend/azure/update-to-latest-sdks via Go v1.23.3
$ TF_ACC=1 go test -timeout=20h -parallel=20 ./...
ok github.com/hashicorp/terraform/internal/backend/remote-state/azure 264.298s |
|
@mbfrahry CI passed now. |
| @@ -0,0 +1,5 @@ | |||
| kind: ENHANCEMENTS | |||
| body: Update the `azure` backend authentication mechanisms | |||
There was a problem hiding this comment.
We should make this more descriptive with some of the changes coming into this PR like the new fields and any bug fixes that might be fixed through these changes
trujillo-adam
left a comment
There was a problem hiding this comment.
I reviewed the docs and suggested some changes to improve the grammar and consistency with our style guidelines. I am uncertain about the accuracy of the suggestions because the existing description are vague. Please make any necessary corrections following the sentence patterns I added.
| * `endpoint` - (Optional) The Custom Endpoint for Azure Resource Manager. This can also be sourced from the `ARM_ENDPOINT` environment variable. | ||
|
|
||
| ~> **NOTE:** An `endpoint` should only be configured when using Azure Stack. | ||
| * `environment` - (Optional) The Azure Environment which should be used. This can also be sourced from the `ARM_ENVIRONMENT` environment variable. Possible values are `public`, `china` and `usgovernment`. Defaults to `public`. |
There was a problem hiding this comment.
| * `environment` - (Optional) The Azure Environment which should be used. This can also be sourced from the `ARM_ENVIRONMENT` environment variable. Possible values are `public`, `china` and `usgovernment`. Defaults to `public`. | |
| - `environment`: (Optional) Specifies the Azure environment to use. Specify one of the following values: | |
| - `public`, | |
| - `china` | |
| - `usgovernment`. | |
| The default is `public`. | |
| You can set the `ARM_ENVIRONMENT` environment variable to configure this option. |
Addresses grammar issues and writing style violations.
|
|
||
| * `snapshot` - (Optional) Should the Blob used to store the Terraform Statefile be snapshotted before use? Defaults to `false`. This value can also be sourced from the `ARM_SNAPSHOT` environment variable. | ||
|
|
||
| * `use_cli` - (Optional) Should Azure CLI be used for authentication? Defaults to `false`. This value can also be sourced from the `ARM_USE_CLI` environment variable. |
There was a problem hiding this comment.
| * `use_cli` - (Optional) Should Azure CLI be used for authentication? Defaults to `false`. This value can also be sourced from the `ARM_USE_CLI` environment variable. | |
| - `use_cli`: (Optional) Enables Terraform to use the Azure CLI for authentication. The default is `false`. You can also set the `ARM_USE_CLI` environment variable to configure this option. |
Not sure why some of these are phrased as questions, but we should directly and concretely state what the option does.
There was a problem hiding this comment.
The question style is what we've been using for the azreurm document all the time, for bools.
|
|
||
| * `use_oidc` - (Optional) Should OIDC authentication be used? This can also be sourced from the `ARM_USE_OIDC` environment variable. | ||
|
|
||
| * `use_aks_workload_identity` (Optional) Should Azure AKS Workload Identity be used for Authentication? This can also be sourced from the `ARM_USE_AKS_WORKLOAD_IDENTITY` environment variable. |
There was a problem hiding this comment.
| * `use_aks_workload_identity` (Optional) Should Azure AKS Workload Identity be used for Authentication? This can also be sourced from the `ARM_USE_AKS_WORKLOAD_IDENTITY` environment variable. | |
| - `use_aks_workload_identity`: (Optional) Enables Terraform to use the Azure AKS workload identity for authentication. You can set the `ARM_USE_AKS_WORKLOAD_IDENTITY` environment variable to configure this option. |
|
|
||
| * `client_id` - (Optional) The Client ID of the Service Principal. This can also be sourced from the `ARM_CLIENT_ID` environment variable. | ||
|
|
||
| * `client_id_file_path` (Optional) The path to a file containing the Client ID which should be used. This can also be sourced from the `ARM_CLIENT_ID_FILE_PATH` Environment Variable. |
There was a problem hiding this comment.
| * `client_id_file_path` (Optional) The path to a file containing the Client ID which should be used. This can also be sourced from the `ARM_CLIENT_ID_FILE_PATH` Environment Variable. | |
| - `client_id_file_path`: (Optional) Specifies the path to a file containing the client ID. Terraform presents the client ID when authenticating with Azure. You can set the `ARM_CLIENT_ID_FILE_PATH` environment variable to configure this option. |
What does Terraform do with the client ID? Please correct this suggestion as necessary.
There was a problem hiding this comment.
Terraform presents the client ID when authenticating with Azure
|
|
||
| * `client_certificate_path` - (Optional) The path to the PFX file used as the Client Certificate when authenticating as a Service Principal. This can also be sourced from the `ARM_CLIENT_CERTIFICATE_PATH` environment variable. | ||
|
|
||
| * `client_certificate` - (Optional) Base64 encoded PKCS#12 certificate bundle to use when authenticating as a Service Principal using a Client Certificate. This can also be sourced from the `ARM_CLIENT_CERTIFICATE` environment variable. |
There was a problem hiding this comment.
| * `client_certificate` - (Optional) Base64 encoded PKCS#12 certificate bundle to use when authenticating as a Service Principal using a Client Certificate. This can also be sourced from the `ARM_CLIENT_CERTIFICATE` environment variable. | |
| - `client_certificate`: (Optional) Specifies a base64-encoded PKCS#12 certificate bundle to use for authenticating as a service principal using a client certificate. You can set the `ARM_CLIENT_CERTIFICATE` environment variable to configure this option. |
|
|
||
| * `client_id` - (Optional) The Client ID of the Service Principal. This can also be sourced from the `ARM_CLIENT_ID` environment variable. | ||
|
|
||
| * `client_id_file_path` (Optional) The path to a file containing the Client ID which should be used. This can also be sourced from the `ARM_CLIENT_ID_FILE_PATH` Environment Variable. |
There was a problem hiding this comment.
| * `client_id_file_path` (Optional) The path to a file containing the Client ID which should be used. This can also be sourced from the `ARM_CLIENT_ID_FILE_PATH` Environment Variable. | |
| - `client_id_file_path`: (Optional) Specifies the path to a file containing the client ID. Terraform presents the file client ID when authenticating with Azure. This can also be sourced from the `ARM_CLIENT_ID_FILE_PATH` Environment Variable. |
Again, not sure if I'm describing the process correctly, but we should use active voice to make this information clear.
|
|
||
| * `client_secret` - (Optional) The Client Secret of the Service Principal. This can also be sourced from the `ARM_CLIENT_SECRET` environment variable. | ||
|
|
||
| * `client_secret_file_path` - (Optional) The path to a file containing the Client Secret which should be used. This can also be sourced from the `ARM_CLIENT_SECRET_FILE_PATH` Environment Variable. |
There was a problem hiding this comment.
| * `client_secret_file_path` - (Optional) The path to a file containing the Client Secret which should be used. This can also be sourced from the `ARM_CLIENT_SECRET_FILE_PATH` Environment Variable. | |
| - `client_secret_file_path`: (Optional) Specifies the path to a file containing the client secret. Terraform must present the client secret to authenticate with Azure. You can set the `ARM_CLIENT_SECRET_FILE_PATH` environment variable to configure this option. |
Thank you for pointing this out! Whilst by scanning the suggested changes, it makes this document a little bit inconsistent itself. I suggest we can create a dedicated PR to rephrase the document here to be consistent with the other docs in this repo. WDYT? |
I don't mind if the styles are a little inconsistent on this page until we can open a new PR to address the rest of it. We do not expect people to read this type of reference information from top to bottom, so the inconsistencies might not even be that noticeable. And besides, progress over perfection :) |
SarahFrench
left a comment
There was a problem hiding this comment.
Sorry @magodo - could you please move the location of your change file (see comment). This is necessary for automation that will pull this change into the branch for the minor release we're currently preparing, v1.11
|
I'm going to lock this pull request because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active contributions. |
This PR updates the
azurebackend authentication to match theterraform-provider-azurermprovider authentication, in several ways:azurermprovider v4.14.0)The backend configuration logic is updated to match the provider logic. As a result, some new properties are added:
use_cliuse_aks_workload_identityclient_id_file_pathclient_certificateclient_id_file_pathclient_secret_file_pathOne implementation detail is that the using the same Azure storage dataplane SDK, the storage client requires a base URI of the storage account, which is derived by sending a GET to the storage account. This is skipped in case the storage shared access key or sas token is specified, which is to behave identically as the current version.
Also, this PR improves the acctests in following ways:
go testis big enough to avoid env vars clean for the single process (launched bygo test) won't interfere the paused tests.Fixes #34322
Target Release
1.11.0
Draft CHANGELOG entry
ENHANCEMENTS
Test