Ser*_* Vu 3 terraform hashicorp-vault
当我运行时,+ terraform apply --auto-approve我可以看到以下错误:
Error: error writing to Vault: Error making API request.
URL: POST http://host.docker.internal:8200/v1/sys/auth/approle
Code: 400. Errors:
* path is already in use at approle/
on main.tf line 3, in resource "vault_auth_backend" "approle":
3: resource "vault_auth_backend" "approle" {
Run Code Online (Sandbox Code Playgroud)
这是来自的片段main.tf:
provider "vault" {}
resource "vault_auth_backend" "approle" {
type = "approle"
}
Run Code Online (Sandbox Code Playgroud)
我该如何修复它?在本地,当我在开发模式下运行保管库服务器时,我可能会看到同样的问题,并且我刚刚重新启动了解决问题的开发服务器,但现在我可以在运行时看到问题docker run。
小智 6
这 path is already in use at approle/是关键
通过POST http://host.docker.internal:8200/v1/sys/auth/approle,我们可以推断您的 Terraform 状态还不知道该approle路径上已安装了身份验证方法,因此它尝试创建它,并且 Vault 拒绝该请求,因为该路径已被使用。
上下文:\n在 Vault 中,您将身份验证方法(例如)挂载approle到路径approle/(例如,它允许您多次挂载相同的身份验证方法,例如 Kubernetes 或 JWT 或 OIDC 方法在不同路径上挂载多次,以便每个新挂载具有特定于给定身份提供商的设置。这\xe2\x80\x99s 如何为 AzureAD 和 Google 或不同的 kubernetes 集群提供 OIDC)
回到你的问题,有几种方法可以解决这个问题:
\n解决方案 1. 将 Terraform 状态与世界的当前状态同步以赶上
\n出现错误是因为 Terraform 还没有意识到它approle已经安装在approle/. Aterraform refresh可能会解决这个问题,但您更有可能必须手动将现有资源与 Terraform 状态“链接” terraform import vault_auth_backend.approle approle(请参阅 Vault 提供程序文档)
解决方案2.从干净的状态开始
\n如果您的approle/路径由于之前的测试而已被使用,您只需从 Vault 中卸载它,以便 Terraform 正确地跟上。vault auth disable approle/ 将删除现有的 approle 身份验证。\n警告,如果approle已用于真实身份验证,则现有角色、角色 ID 和秘密 ID 将立即撤销。仅当任何服务不依赖现有的 approle 身份验证方法\xe2\x80\x99 时才执行此操作。
| 归档时间: |
|
| 查看次数: |
12038 次 |
| 最近记录: |