chpasswd: { expire: False } 不过期
ssh_pwauth: True 设置为使用密码登录
ssh_import_id: ${USER} 这里设置的是创建的用户名
除了默认的ubuntu用户, 新增自定义用户的例子
#cloud-config
users:
- default
- name: milton
groups: [sudo]
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
lock_passwd: false
plain_text_passwd: ubuntu
chpasswd:
expire: False
ssh_pwauth: True
创建 seed.img
用 cloud-localds 命令创建 seed.img
cloud-localds seed.img user-data.yaml metadata.yaml
导入 Cloud Image
以迷你版为例. 这个过程对于 Ubuntu 和 Centos 的 Cloud Image 都是通用的
例子1
virt-install --name ubuntu2004_1 \
--vcpus 2 --memory 4096 \
--graphics none \
--import \
--os-variant ubuntu20.04 \
--network bridge=br0,model=virtio \
--disk /data/vms/ubuntu20.04_1.img \
--disk /data/vms/seed.img
其中 ubuntu20.04_1.img 是重命名后的cloud镜像, seed.img 可以直接挂载
例子2
virt-install --name vm_centos7a \
--vcpus 2 --memory 4096 \
--graphics none --import \
--os-variant=rhel7.9 \
--network bridge=br0,model=virtio \
--disk /vms/vm_centos7a.qcow2 \
--disk /vms/seed.img,device=cdrom
centos可以加device=cdrom
挂载, ubuntu不能用这种方式, import后不识别, 只能用--disk /vms/seed.img
例子3
kvm-spice -m 2048 \
-drive file=ubuntu-18.04-server-cloudimg-amd64.img,if=virtio,cache=writeback \
-cdrom seed.img \
-net nic,model=virtio \
-net user,hostfwd=tcp::222-:22
这个会将虚机的22端口映射到宿主的222端口
导入启动过程
执行命令后会启动到登录提示符. 过程中会穿插着执行初始化, 显示机器的信息, 包括IP地址, 网络环境, 导入的用户key等
Starting Initial cloud-ini… (metadata service crawler)...
cloud-init[271]: Cloud-init v. 22.2-0ubuntu1~20.04.3 running 'init' at Thu, 13 Oct 2022 07:39:43 +0000. Up 10.34 seconds.
cloud-init[271]: ci-info: +++++++++++++++++++++++++++++++++++++++++++Net deviceinfo++++++++++++++++++++++++++++++++++++++++++++
cloud-init[271]: ci-info: +--------+------+---------------------------------------+---------------+--------+-------------------+
cloud-init[271]: ci-info: | Device | Up | Address | Mask | Scope | Hw-Address |
cloud-init[271]: ci-info: +--------+------+---------------------------------------+---------------+--------+-------------------+
cloud-init[271]: ci-info: | enp1s0 | True | 192.168.9.106 | 255.255.255.0 | global | 13:54:00:01:e0:29 |
...
cloud-init[271]: ci-info: ++++++++++++++++++++++++++++++Route IPv4 info++++++++++++++++++++++++++++++
cloud-init[271]: ci-info: +-------+-------------+-------------+-----------------+-----------+-------+
cloud-init[271]: ci-info: | Route | Destination | Gateway | Genmask | Interface | Flags |
cloud-init[271]: ci-info: +-------+-------------+-------------+-----------------+-----------+-------+
cloud-init[271]: ci-info: | 0 | 0.0.0.0 | 192.168.9.1 | 0.0.0.0 | enp1s0 | UG |
...
cloud-init[271]: ci-info: ++++++++++++++++++++++++++++++++Route IPv6 info++++++++++++++++++++++++++++++++
...
cloudimg login: cloud-init[481]: 2022-10-13 07:39:58,045 ERROR ssh-import-id protocol handler {'gh': not found or cannot execute
cloud-init[481]: Cloud-init v. 22.2-0ubuntu1~20.04.3 running 'modules:config' at Thu, 13 Oct 2022 07:39:57 +0000. Up 24.65 seconds.
cloud-init[481]: 2022-10-13 07:39:58,089 - util.py[WARNING]: Failed to run command to import ubuntu SSH ids
cloud-init[481]: 2022-10-13 07:39:58,100 - util.py[WARNING]: ssh-import-id failed for: ubuntu ["{'gh': None}", "{'lp': None}"]
cloud-init[481]: 2022-10-13 07:39:58,101 - util.py[WARNING]: Running module