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

通过cloud-init配置Azure VM开机执行.sh脚本失败,求排查配置错误

cloud-init配置错误排查及修复方案

核心问题1:误用HTML转义字符导致YAML解析中断

  • 配置中content字段内的>、"属于HTML转义实体,cloud-init的YAML解析器无法识别这类转义符,会直接导致解析到write_files第一段内容时抛出异常,后续的test.sh写入配置、cloud_final_modules配置全部不会被加载,刚好对应你观测到的第2、3个现象。

核心问题2:脚本内命令逻辑错误

  • 你写入的ubuntuVMexscript.sh中的cat命令语法错误,正确的将文件内容写入testCat的写法应为cat /var/lib/cloud/scripts/per-boot/ubuntuVMexscript.sh > testCat,你当前的重定向顺序完全颠倒,即使转义问题修复也无法正常执行。

认知误区纠正

  • 你在user-data中传入的cloud_final_modules参数属于cloud-init运行时生效的配置,不会持久化写入/etc/cloud/cloud.cfg文件,如果你要验证该配置是否生效,可以查看/var/log/cloud-init.log日志,搜索cloud_final_modules关键字即可确认加载的配置。

额外注意点

  • 要确保你指定的afshan用户是你创建Azure VM时设置的管理员用户名,如果用户名不匹配,/home/afshan目录不存在,会直接导致test.sh写入失败。

修复后的完整配置

#cloud-config
package_upgrade: true
write_files:
  - owner: afshan:afshan
    path: /var/lib/cloud/scripts/per-boot/ubuntuVMexscript.sh
    permissions: '0755'
    content: |
      #!/bin/sh
      cat /var/lib/cloud/scripts/per-boot/ubuntuVMexscript.sh > testCat
  - owner: afshan:afshan
    path: /home/afshan/test.sh
    permissions: '0755'
    content: |
      #!/bin/sh    
      echo "test"
cloud_final_modules:
  - rightscale_userdata
  - scripts-vendor
  - scripts-per-once
  - scripts-per-boot
  - scripts-per-instance
  - [scripts-user, always]
  - ssh-authkey-fingerprints
  - keys-to-console
  - phone-home
  - final-message
  - power-state-change

验证方法

  • 部署完成后执行cat /var/log/cloud-init.log | grep -i error检查是否有解析错误
  • 执行ls /home/afshan/test.sh验证文件是否生成
  • 执行cat /run/cloud-init/user-data确认传入的配置没有被自动转义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 23:54:04