如何使用户在Azure ARM模板中的SSH密码或公钥之间进行选择

时间:2019-01-25 13:49:49

标签: json azure templates arm-template azure-template

我已经构建了我的Linux模板,一切正常,但是我有一个 剩下的问题。 实际上,我想让我的用户选择使用密码还是SSH公钥对VM进行身份验证。 我已经创建了两个参数(密码和密钥),如果另一个参数为空,我想使其中一个成为必需,然后相应地设置资源部分。

我该如何实现?

1 个答案:

答案 0 :(得分:0)

您可以使用此代码段(将以下变量\参数添加到模板中):

"parameters": {
    "authType": {
        "type": "string",
        "defaultValue": "password",
        "allowedValues": [
            "password",
            "ssh"
        ]
    }
},
"variables": {
    "ssh": {
        "computerName": "[variables('vmName')]",
        "adminUsername": "[parameters('adminUsername')]",
        "linuxConfiguration": {
            "disablePasswordAuthentication": true,
            "ssh": {
                "publicKeys": [
                    {
                        "path": "[concat('/home/',parameters('adminUsername'),'/.ssh/authorized_keys')]",
                        "keyData": "[parameters('sshPublicKey')]"
                    }
                ]
            }
        }
    },
    "password": {
        "computerName": "[variables('vmName')]",
        "adminUsername": "[parameters('adminUsername')]",
        "adminPassword": "[parameters('adminPassword')]"
    }
},

,然后在您的VM定义中执行以下操作:

"osProfile": "[variables(parameters('authType'))]"

它将检索名为ssh的变量或名为password的变量,并将其分配给osProfile