我正在尝试使用模板部署创建带有数据湖的 Azure HDInsight。但我在执行模板时遇到了问题,因为我认为原因是“服务主体名称”与 azure 数据湖存储的集成。
错误:
"message": "DeploymentDocument 'AmbariConfiguration_1_7' 验证失败。错误:'访问数据湖存储帐户解调器时出错:从 AAD 获取 AppPrincipalId XXXXXX-XXXXXXXXX-XXXXX-XXX 的 OAuth token 时出错-XXXXX。
请查看下面的屏幕截图以了解更多详细信息。
我尝试创建 AD Web 应用程序并为该应用程序分配“所有者”角色。然后我将其分配给订阅的所有者。然后为应用程序添加“数据湖权限”。但我仍然认为我可能失踪了。
集群集成片段
"properties": {
"clusterVersion": "[parameters('clusterVersion')]",
"osType": "Linux",
"tier": "standard",
"clusterDefinition": {
"kind": "[parameters('clusterKind')]",
"configurations": {
"gateway": {
"restAuthCredential.isEnabled": true,
"restAuthCredential.username": "[parameters('clusterLoginUserName')]",
"restAuthCredential.password": "[parameters('clusterLoginPassword')]"
},
"core-site": {
"fs.defaultFS": "adl://home",
"dfs.adls.home.hostname": "demodls.azuredatalakestore.net",
"dfs.adls.home.mountpoint": "/clusters/democluster/"
},
"clusterIdentity": {
"clusterIdentity.applicationId": "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX",
"clusterIdentity.certificate": "[parameters('identityCertificate')]",
"clusterIdentity.aadTenantId": "https://login.windows.net/XXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXX",
"clusterIdentity.resourceUri": "https://management.core.windows.net/",
"clusterIdentity.certificatePassword": "[parameters('identityCertificatePassword')]"
}
}
},
在这里我有一些疑问
“SecureString”值(例如“parameter.json”中的 clusterpassword、sshpassword)是否应该以明文形式给出,或者我必须将其转换为 Securestring 并向其提供安全字符串值?
字段“identityCertificate”应该是“Certificate.pfx”文件内容的“base64”编码,否则我必须将其转换为 Base64 -> SecureString 并在parameter.json中给出它?
非常感谢帮助!谢谢
问候
最佳答案
identityCertificate
应是证书 .pfx 文件内容的 Base64 编码字符串表示形式。它在 ARM 模板定义文件中标记为 SecureString
类型,以便在您以后获取部署历史记录时不会存储/返回明文。使用 SecureString
标记字段有助于确保密码和其他此类字段不会保留在您的部署历史记录中。
对如何编写群集创建 ARM 模板进行故障排除的一种简单方法是转到 Azure 门户,并按照您在模板中所需的方式创建群集。在“摘要”步骤中单击“创建”之前,下载 ARM 模板以查看部署的内容。 “创建”旁边有一个链接可以执行此操作。
我希望您会注意到指定主 ADLS 帐户的方式有所不同。按照下载的 ARM 模板中的配置方式进行操作,您应该就可以开始了。
关于azure - 使用模板部署通过数据湖创建 Azure HDInsight 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43678776/