本文中斜体字部分为命令行
cloud-init是一个Linux虚拟机的初始化工具,被广泛应用在AWS和OpenStack等云平台中,用于快速新建虚拟机,并进行一些系统初始化的任务,如用户设置、密码设置、磁盘扩展、安装软件包等初始化设置。本文介绍的是pve虚拟机的cloud-init配置,如何使用cloud-init进行虚拟机快速部署工作。
本文主要是讲pve中的cloud-init配置,并不讲解如何去安装及配置cloud-init,因篇幅较多,所以我们直接从官网去下载一个带cloud-init的系统镜像,在此以debian10系统为例,下面给出三种系统的官方模板镜像下载地址:
Centos7下载地址: http://cloud.centos.org/centos/7/images/
Debian10下载地址: http://cdimage.debian.org/cdimage/cloud/OpenStack/current-10/
Ubuntu18下载地址: https://cloud-images.ubuntu.com/bionic/current/
以上网址有kvm的qcow2或者img系统镜像下载,可选择合适的版本及文件下载。
使用ssh或者xftp工具上传debian10.qcow2系统镜像磁盘文件到pve服务器。
本例文件名为:debian-10.0.2-20190721-openstack-amd64.qcow2。
# qm create 502 --name debian10-ci --memory 2048 --net0 virtio,bridge=vmbr0
#新建虚拟机名称为:debian10-ci,vmid为:502 (id可自定义,不存在即可)
# qm importdisk 502 debian-10.0.2-20190721-openstack-amd64.qcow2 local-lvm
#导入磁盘文件
# qm set 502 --virtio0 local-lvm:vm-502-disk-0
#定义磁盘总线类型为virtio
# qm set 502 --boot c --bootdisk virtio0
#设置virtio0磁盘为第一引导设备
# qm set 502 --serial0 socket --vga serial0
#添加并设置显卡设备为serial0
# qm set 502 --ide2 local-lvm:cloudinit
#添加Cloudinit Drive设备
# qm set 502 --sshkey ~/.ssh/id_rsa.pub
#导入ssh公钥到虚拟系统
# qm template 502
#将虚拟机转换成系统模板,可用之快速生成克隆的系统,不转换成模板也可直接使用。
# qm clone 502 103 --name debian10
#用502模板克隆一个系统到103,名称定义为debian10
# qm set 103 --agent enabled=1
#启用该虚拟机的Qemu代理,可以在pve面板上直接查看到vm的ip及mac地址,不是必需的设置。
#如果此处启用了代理,在虚拟机系统里安装这个代理,命令为:
# apt install qemu-guest-agent
虚拟机创建后,cloud-init需要配置
用户:debian10的模板系统,默认用户是debian。如果是配置root或用户登录 ,此处需输入用户名即可,不输入用户名,则用默认的用户可登录 。(centos7的默认用户是centos)。
密码:可在此处输入上面用户的密码,建议输入,否则控制台端不能登录系统。
DNS域:可输入虚拟机的域名,不输入则继承pve主机的域名。
DNS服务器:如果vm使用其它域名解析,可在此输入,不输入则继承pve主机的域名解析服务器地址。
SSH公钥:ssh连接虚拟机的公钥,使用ssh连接此虚拟机不是使用用户和密码,而是使用密钥登录。
ip配置:不输入则使用dhcp给虚拟机分配ipv4和ipv6,可在此定义该虚拟机的ip地址、子网掩码及网关地址。
以上配置亦可全部用命令行来实现,具体方法请参见pve官网帮助文档。
debian-cloud-init虚拟机创建完成后,第一次启动它会有一点慢,它会根据cloud-init配置初始化这个系统,定义的主机名默认为vm的机器名,用户/密码/dns信息及网络配置等皆来自于cloud-init定义的值。
安装了cloud-init的系统,可以在线扩展硬盘容量,可以在线挂载新磁盘。扩展的系统磁盘空间它会在下一次重启vm后,直接分配给系统根分区/。挂载的新磁盘,可以不需要重启,直接分区挂载并挂载即可。
获取root权限:默认用户只有普通权限,如果想切换到root用户,可使用下面的命令:
$ sudo -i
该命令可以直接无密码切换到root用户
参考文章:
https://pve.proxmox.com/wiki/Cloud-Init_FAQ#What_is_cloud-init.3F
https://pve.proxmox.com/wiki/Qemu/KVM_Virtual_Machines