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

Packer构建Ubuntu 20.04模板后Terraform实例化出现DataSourceNone问题

问题修复方案

根因说明

错误日志中的DataSourceNone表示cloud-init启动时未识别到可用数据源,无法读取Terraform传入的guestinfo配置,核心原因有三点:

  • Ubuntu 20.04及以上版本预装的cloud-init(v20.1+)已内置VMware数据源,你在Packer中手动安装的第三方cloud-init-vmware-guestinfo工具已废弃,和系统内置组件冲突导致数据源检测失败
  • cloud-init清理脚本错误提前创建了/var/lib/cloud/instance软链接,导致cloud-init误判已经完成初始化,直接跳过数据源检测流程
  • Terraform的extra_config编码配置不匹配,你使用base64gzip压缩了数据,但编码字段填写的是base64,cloud-init无法正常解压解析配置内容

修复步骤

1. 移除Packer配置中的第三方数据源安装

删除Packer provisioners中的以下配置段:

{
    "type": "shell",
    "inline": ["curl -sSL https://raw.githubusercontent.com/vmware/cloud-init-vmware-guestinfo/master/install.sh | sudo sh -"]
}

2. 新增VMware数据源强制启用配置

在Packer的user-data配置中添加cloud-init配置,或通过Ansible写入/etc/cloud/cloud.cfg.d/99-vmware.cfg文件,内容如下:

datasource_list: [ VMware, None ]
datasource:
  VMware:
    vmware_cust_file_max_wait: 20

3. 修正cloud-init清理脚本

替换原有清理脚本为以下内容,避免误触发初始化完成判断:

#!/bin/sh
set -e

chown -R root:root /etc/cloud/cloud.cfg.d/

# 完全清理cloud-init历史状态和日志
cloud-init clean --logs --seed

# 重置机器ID
truncate -s 0 /etc/machine-id
rm -f /var/lib/dbus/machine-id
ln -s /etc/machine-id /var/lib/dbus/machine-id

# 清理临时文件
rm -rf /tmp/* /var/tmp/*

4. 修正Terraform编码配置

将extra_config中的编码字段修改为gzip+base64,匹配你使用的base64gzip压缩方式:

extra_config = {
    "guestinfo.metadata"          = base64gzip(templatefile("${path.module}/templates/metadata.tmpl", { hostname = var.hostname }))
    "guestinfo.metadata.encoding" = "gzip+base64"
    "guestinfo.userdata"          = base64gzip(templatefile("${path.module}/templates/userdata.tmpl", {
        hostname = var.hostname,
        domain   = var.domain
    }))
    "guestinfo.userdata.encoding" = "gzip+base64"
}

验证方式

重新通过Packer构建镜像后,使用Terraform部署实例,进入系统执行cloud-init query ds,返回VMware即代表数据源识别正常,查看/root目录可看到生成的hello和lol文件,说明用户配置已成功应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:24:04