首页/云/云平台与虚拟化速查/virt-install 集成 cloud-init
虚拟化操作94 条

virt-install 集成 cloud-init

virt-install 可通过 --cloud-init 把 user-data 注入使用 NoCloud 数据源的镜像:设置初始用户、SSH 公钥、root 密码等,实现装机即达可用状态。

云平台与虚拟化速查云更新于 2026-10-12
参数形态--cloud-init user-data=/path/user-data.yaml,root-password=密码
镜像要求镜像内已安装 cloud-init 且支持 NoCloud
常用内容初始用户、SSH 公钥、首次启动脚本
注意root 密码会出现在命令历史与脚本里

用 cloud-init 创建初始用户

用 cloud-init 创建初始用户
cat > /tmp/user-data.yaml <<'EOF'
#cloud-config
users:
  - name: ops
    sudo: ALL=(ALL) NOPASSWD:ALL
    ssh_authorized_keys:
      - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA...(替换为实际公钥)
EOF
virt-install --name app01 --memory 2048 --vcpus 2 --import \
  --disk path=/data/images/rocky9.qcow2,bus=virtio \
  --network network=default,model=virtio --graphics none \
  --console pty,target_type=serial \
  --cloud-init user-data=/tmp/user-data.yaml,root-password='ChangeMe_2026'

易错点

  • 镜像未内置 cloud-init:注入的数据不会被读取,装机后仍是默认账号
  • 密码写在命令行里进入 shell 历史:敏感参数应改走文件或密钥

数据来源与参考

  • virt-install 手册:--cloud-init
  • cloud-init 文档:NoCloud 数据源
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌