在Azure manually中生成服务主体时,由于操作的结果,我提供了密码。
不是这种情况,但是如果我使用Terraform创建服务主体,则密码不在此模块的输出之内:
+ azuread_service_principal.k8s_principal
id: <computed>
application_id: "${azuread_application.app.application_id}"
display_name: <computed>
有什么我想念的吗?与CLI相比,为什么Terraform行为的输出有所不同?
答案 0 :(得分:1)
在terraform文档中,azuread_service_principal块仅定义了参数df.groupby(['A','B',(df.C%100==0).cumsum().shift().fillna(0)]).\
agg({'D':'sum','C':lambda x: x[x%100==0]}).reset_index(level=[0,1]).sort_values('A',ascending=False).reset_index(drop=True)
A B D C
0 11035 20190101 10.7 100
1 11035 20190101 7.7 200
2 11001 20190109 9.3 200
和属性application_id
,id
,因此您只能看到这些资源。另外,azuread_service_principal_password块允许您导出服务主体密码的密钥ID。您仍然看不到真实密码。
在Azure CLI az ad sp create-for-rbac中具有可选参数--Password。这样您就可以看到密码输出。
答案 1 :(得分:1)
password
输入到azuread_service_principal_password块中。这样,您可以生成一个随机密码并自己导出。完整的Terraform代码如下:
resource "azuread_application" "app" {
name = "${local.application_name}"
}
# Create Service Principal
resource "azuread_service_principal" "app" {
application_id = "${azuread_application.app.application_id}"
}
resource "random_string" "password" {
length = 32
special = true
}
# Create Service Principal password
resource "azuread_service_principal_password" "app" {
end_date = "2299-12-30T23:00:00Z" # Forever
service_principal_id = "${azuread_service_principal.app.id}"
value = "${random_string.password.result}"
}
output "sp_password" {
value = "${azuread_service_principal_password.app.value}"
sensitive = true
}