首页 > 解决方案 > Azure VM 扩展预配完成时间过长

问题描述

当我尝试使用扩展部署模板时,出现超时错误,因为“ VM 扩展 InstallLamp 的配置已超时。扩展配置花费了太长时间才能完成。扩展未报告消息

我正在尝试通过 VM 中的扩展安装 MySql。

这是扩展代码

{
"type": "Microsoft.Compute/virtualMachines/extensions",
"apiVersion": "2018-06-01",
"name": "[concat(variables('vmName'),'/', 'InstallMySQL')]",
"location": "[parameters('location')]",
"dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/',variables('vmName'))]"
],
"properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.7",
    "autoUpgradeMinorVersion":true,
    "settings": {
        "fileUris": [
            "<url of custom script>"
        ],
        "commandToExecute": "sampleScript.sh"
    }
}

这是 sampleScript.sh 代码

sudo apt-get -y update
dbpass=12345678
export DEBIAN_FRONTEND=noninteractive
echo "mysql-server-5.7 mysql-server/root_password password" $dbpass | sudo debconf-set-selections >>
echo "mysql-server-5.7 mysql-server/root_password_again password" $dbpass | sudo debconf-set-selections
sudo apt-get -y install mysql-server-5.7
sudo apt-get -y install apache2 php7
sudo service apache2 restart

标签: mysqlbashazurearm-templatejsontemplate

解决方案


对于这个问题,您犯的错误是脚本中的命令仍然是交互式的,因为 command sudo。使用命令sudo时,需要输入root用户的密码。

据我所知,VM 扩展已经拥有安装软件的 root 权限。因此,您不需要sudo在脚本中使用该命令。您只需要确保脚本可用并像这样更改它:

apt-get -y update
dbpass=12345678
export DEBIAN_FRONTEND=noninteractive
echo "mysql-server-5.7 mysql-server/root_password password" $dbpass | debconf-set-selections
echo "mysql-server-5.7 mysql-server/root_password_again password" $dbpass | debconf-set-selections
apt-get -y install mysql-server-5.7
apt-get -y install apache2 php7
service apache2 restart

推荐阅读