meta-data - 系统元数据

更新时间:2026年1月15日 11:24 浏览:2

meta-data 文件是 cloud-init 的核心配置文件之一,主要用来定义 虚拟机实例的元数据(如主机名、实例ID、网络配置等)。它通常与 user-data 配合使用,但作用不同:

基础语法

meta-data 是一个 YAML/JSON 格式的文件(推荐 YAML),示例:

instance-id: my-vm
local-hostname: my-vm
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true

核心字段说明

(1) instance-id(必需)

作用:唯一标识虚拟机(cloud-init 会用它判断是否首次启动)
格式:任意字符串,但不能重复

instance-id: ubuntu-vm-01

(2) local-hostname(主机名)

作用:设置系统主机名
默认:如果不设置,会使用 instance-id

local-hostname: my-ubuntu-server

公有云扩展字段

如果你的虚拟机运行在 AWS、Azure、OpenStack 等云平台上,meta-data 可以包含云厂商的特定数据:

(1) AWS 示例

instance-id: i-1234567890abcdef0
local-hostname: ip-10-0-0-1
availability-zone: us-east-1a
region: us-east-1

(2) OpenStack 示例

instance-id: 8a3f73d2-5f78-481e-9c35-2d525e2f8a46
local-hostname: my-vm
network_config:
  content_path: /content/0000

其他可选字段

字段 作用 示例值
public-keys 注入 SSH 公钥(同 user-data) ssh-rsa AAAAB3Nza…
hostname 设置 FQDN 主机名 server1.example.com
dsmode cloud-init 数据源模式 local(禁用云平台检测)

完整 meta-data 示例

(1) 最小化配置

instance-id: my-vm
local-hostname: my-vm
`

(2) 带公有云扩展

instance-id: i-0a1b2c3d4e5f6g7h8
local-hostname: ip-10-0-0-123
availability-zone: us-west-2a

关键注意事项

instance-id 必须唯一,否则 cloud-init 可能不会执行初始化。
主机名:
local-hostname → 短主机名(如 ubuntu)
hostname → FQDN 完全限定域名(如 ubuntu.example.com)

调试技巧:

cat /run/cloud-init/instance-data.json  # 查看 cloud-init 最终加载的元数据
`

总结

必填字段:instance-id 和 local-hostname
推荐做法:
复杂用户配置用 user-data
适用于:通用 Linux 镜像(Ubuntu/CentOS 等),AWS/Azure/OpenStack 也兼容

导航