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 也兼容
