apt-get update 无法用作 azure 自定义脚本扩展

问题描述 投票:0回答:3

我正在使用带有自定义脚本扩展的 Azure ARM 模板部署 linux ubuntu 16.04 LTS VMSS。 customscript.sh的内容:

apt-get update
apt-get install build-essential -y
...

但它在此更新步骤本身失败并出现错误:

Splitting up /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_xenial_InRelease into data and signature failedE: GPG error: http://archive.ubuntu.com/ubuntu xenial InRelease: Clearsigned file isn't valid, got 'NODATA' (does the network require authentication?)

当我登录虚拟机并执行 apt-get update 时,它运行成功。

使用自定义脚本扩展部署 Linux VMSS 的 ARM 模板:

 "virtualMachineProfile": {
          "extensionProfile": {
            "extensions": [              
              {
                "name": "Custom Deployment",
                "properties": {
                  "publisher": "Microsoft.Azure.Extensions",
                  "typeHandlerVersion": "2.1",
                  "autoUpgradeMinorVersion": true,
                  "protectedSettings": {
                    "commandToExecute": "[concat('/bin/bash customscript.sh')]",
                    "fileUris": [
                      "[parameters('scriptToExecuteLinux')]"
                    ]
                  },
                  "type": "CustomScript"
                }
              },
            }
         ......
       }

如果我执行的任何步骤不正确,请告诉我。 预先感谢。

linux azure ubuntu apt
3个回答
0
投票

我基本上没有使用azure的经验,但可能是您以错误的用户身份运行脚本,如果您以root身份运行脚本,也许尝试以普通用户身份运行它。如果您以用户身份运行此脚本,也许可以尝试以 root 身份运行它。


0
投票

我在您的代码中发现了几个问题 1.我认为你没有正确使用concat函数。只有一个论点 2. 交叉检查您是否拥有此处提到的扩展架构中的所有键值对:https://learn.microsoft.com/en-us/azure/virtual-machines/extensions/custom-script-linux

更详细的错误,请检查文件/var/lib/waagent/custom-script/download/0/stderr,你可能会找到一些答案。

当您手动运行它时,您尝试过

/bin/bash script.sh
还是
sh script.sh


0
投票

我知道我落后了 3 年,但你无法将 apt-get update 作为虚拟机规模集中的第一个命令运行,因为 Azure 默认情况下会这样做。

由于您使用的是规模集虚拟机,因此工作流程是预配虚拟机,运行 apt-get update,然后下载并执行自定义脚本。

我认为正在发生的情况是,您的虚拟机实例同时在两个不同的进程中运行两个 apt-get update 命令。您只能在一个进程中运行 apt-get update 以避免竞争条件和其他多线程问题。

您的自定义脚本无法获取锁,因此您可能会收到“无法获取锁/var/lib/apt/lists/lock。它由进程 870 (python3) E: 无法锁定目录/var/lib/apt/lists/"

解决办法很简单。只需删除 apt-get update 即可,因为虚拟机在配置/更新时已经在执行该操作了。

© www.soinside.com 2019 - 2024. All rights reserved.