You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python SDK复刻Azure控制台VM并解决脚本执行异常问题

Azure VM用户脚本未执行问题排查与修复

针对你用Python SDK创建Azure VM后,预设用户脚本未执行、VM为空的问题,可从以下几个方向排查修复:

1. 检查UserData编码格式

Azure要求UserData必须是无换行符的Base64编码字符串,需确保encoded_init_script符合规范:

  • 正确编码流程:先将脚本转为UTF-8字节,再做Base64编码,最后移除所有换行符。示例代码:
    import base64
    script = """#!/bin/bash
    echo "Hello from user data" > /tmp/test.txt
    """
    encoded_init_script = base64.b64encode(script.encode('utf-8')).decode('utf-8').replace('\n', '')
    
  • 错误情况:编码后带有换行符会导致Azure无法正确解析脚本。

2. 验证脚本本身的正确性

  • Linux VM:
    • 脚本开头必须指定解释器,比如#!/bin/bash
    • 所有命令使用绝对路径,避免依赖环境变量
    • 确保脚本有可执行权限(可在脚本内添加chmod +x /path/to/script.sh)
  • Windows VM:
    • UserData需是Base64编码的PowerShell脚本,语法要符合PowerShell规范
    • 复制文件时使用Copy-Item等原生命令,路径用Windows格式(如C:\temp\file.txt)

3. 查看脚本执行日志

通过日志定位具体失败原因:

  • Linux:查看/var/log/cloud-init.log和/var/log/cloud-init-output.log,这两个日志会完整记录UserData脚本的执行过程与错误信息
  • Windows:查看C:\ProgramData\Microsoft\Windows\Azure\Logs\WaAppAgent.log或C:\Windows\Temp\AzureDataCenterAgent.log

4. 改用自定义脚本扩展(更可靠的替代方案)

如果UserData始终无法正常工作,可使用Azure自定义脚本扩展(Custom Script Extension)执行脚本,这是官方推荐的脚本部署方式。在VM参数中添加extension_profile字段:

'extension_profile': {
    'extensions': [
        {
            'name': 'customScriptExtension',
            'properties': {
                'publisher': 'Microsoft.Azure.Extensions',
                'type': 'CustomScript',
                'typeHandlerVersion': '2.1',
                'autoUpgradeMinorVersion': True,
                'settings': {
                    # 如果脚本存储在Azure存储账户,可填写文件URL;也可直接在commandToExecute中写脚本内容
                    'fileUris': [],
                    'commandToExecute': 'bash -c "echo \'Hello from custom extension\' > /tmp/extension_test.txt"'
                }
            }
        }
    ]
}

5. 确认镜像参数完全一致

检查vm_reference中的镜像信息是否与控制台创建时完全匹配,可打印参数对比:

print(f"镜像参数:发布者={vm_reference['publisher']}, 产品={vm_reference['offer']}, SKU={vm_reference['sku']}, 版本={vm_reference['version']}")

内容的提问来源于stack exchange,提问作者sameerawsnoob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:55:19