I'm trying to create Azure HDInsight with Data lake using Template Deployment. But I'm Facing an issue in executing the template because of what i think the reason would be the "Service Principle Name" integration with azure data lake store.
Error:
"message": "DeploymentDocument 'AmbariConfiguration_1_7' failed the validation. Error: 'Error while getting access to the datalake storage account demodls: Error while getting the OAuth token from AAD for AppPrincipalId XXXXXX-XXXXXXXXX-XXXXX-XXX-XXXXX.
Please find below screenshot for more details.
I have tried creating AD webapp and assigned "Owner" role for the app. Then I have assigned it to Subscription's owner. Then added "Data Lake Permission" for the app. but still I think I might be missing.
Cluster Integration Snippet
"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')]"
}
}
},
Here I have few doubts like
Is "SecureString" values like clusterpassword,sshpassword in "parameter.json" should be given as plaintext or i have to convert it into Securestring and give the secure string value to it?
The field "identityCertificate" should be "base64" encoded of "Certificate.pfx" file content or I'll have to convert it as Base64 -> SecureString and give it in parameter.json?
Help appreciated much ! Thanks
Regards