如何解决Terraform创建azuread_application时的msgraph序列化报错
解决Terraform创建azuread_application实例报错的配置调整方案
报错根因
该报错是hashicorp/azuread provider v2.5.0版本的已知序列化缺陷,创建应用注册时如果未显式指定所有者字段,provider处理Microsoft Graph接口请求参数时,会生成空的ODataId字段导致JSON序列化失败。
调整方案(二选一即可)
方案1:升级azuread provider版本(推荐)
v2.6.0及以上版本的azuread provider已经修复了该缺陷,操作步骤如下:
- 修改terraform块中azuread provider的版本约束:
terraform { required_providers { azuread = { source = "hashicorp/azuread" version = ">= 2.6.0" } } }
- 执行命令拉取新版本provider:
terraform init -upgrade - 重新执行
terraform apply即可正常创建资源
方案2:固定使用v2.5.0版本时,显式指定owners参数
如果因环境约束不能升级provider,可以在azuread_application资源块中显式指定所有者属性,值为当前认证用服务主体的对象ID:
resource "azuread_application" "appRegistration" { display_name = var.instanceName # 填入当前认证用服务主体的对象ID,可在Azure AD应用注册页面的概述栏获取 owners = ["<服务主体对象ID>"] app_role { allowed_member_types = ["User", "Application"] description = "Admins can manage roles and perform all task actions" display_name = "Admin" enabled = true id = "1b19509b-32b1-4e9f-b71d-4992aa991967" value = "admin" } }
修改完成后直接执行terraform apply即可。
内容的提问来源于stack exchange,提问作者CodeMed
相关产品推荐
相关产品推荐

