proxmox里使用cloud-init和一些笔记
cloud-init的镜像模板制作
模板制作
记录下proxmox制作带有cloud-init的虚机模板过程
因为刚开始制作虚机模板的硬盘是固定大小,后面通过克隆后调整硬盘大小就会自动growpart,需要安装cloud-utils-growpart
。好像只能往大的扩,我个人也倾向于最小20G,所以这里我开的是20G硬盘的虚机
另外查了下和实际试了下cloud-utils-growpart好像只支持ext3
和ext4
不支持lvm自动扩,其他的文件系统可以考虑试试lvm自己写个脚本去开机启动自动扩。这里我分区不带swap,标准分区+ext4
安装完后进系统里自行配制好网卡(onboot=yes,清掉uuid)和dns,因为需要安装一些东西
我个人喜欢拿到手就关闭selinux和Firewalld以及NetworkManager
为了让虚拟化层能重启和关闭虚拟机,必须在虚拟机内安装并运行 acpid 服务,为了使根分区正确调整大小安装cloud-utils-growpart
,cloud-init支持下发前设置信息写入instance
1
2yum install -y acpid cloud-init cloud-utils-growpart
systemctl enable acpid
禁用默认zeroconf路线(当系统无法连接DHCP server的时候,就会尝试通过ZEROCONF来获取IP,并添加一条169.254.0.0/16的路由条目)
1
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
默认的cloud-init的配置文件我们目前需要关心下面这三行:SSH_pwauth
为 0 是禁止使用password登陆。disable_root:1 是禁止root登陆但是我试了下和在网上看到不改0也能登陆不知道为啥。 package-update-upgrade-install这个模块会在instance初次开机后会yum update -y
可以通过下面命令修改
默认cloud-init会创建一个系统类型的用户,不想创建就把这些注释了
1
2
3
4
5
6
7# default_user:
# name: CentOS
# lock_passwd: true
# gecos: Cloud User
# groups: [wheel, adm, systemd-journal]
# sudo: ["ALL=(ALL) NOPASSWD:ALL"]
# shell: /bin/bash
其他的也可以自己安装点东西例如ntp啥的,弄完后关机即可
1
poweroff
转换模板
记住vmid,在虚机所在的pve后台ssh上执行下面命令,我这是本地的lvm去存储cloudinit的metadata
1
2
3
4
5
6
7
8
9
10
11
12root@pve:~# qm list
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
100 cyn1 running 2048 20.00 42543
101 cyn2 running 2048 20.00 42916
102 cyn running 2048 20.00 32136
103 Copy-of-cyn running 2048 20.00 44227
104 cloud-test stopped 2048 20.00 0
root@pve:~# qm set 104 --ide2 local-lvm:cloudinit
update VM 104: -ide2 local-lvm:cloudinit
Using default stripesize 64.00 KiB.
Rounding up size to full physical extent 8.00 MiB
Logical volume "vm-104-cloudinit" created.
然后在web上可以看到cloud-init这部分不再是灰色了
web页面上把它转换成模板即可,部署的话完整克隆下,开机之前双击需要设置的信息即可,否则例如密码不设置默认是模板的密码
pve后台ssh上也可以通过命令设置初始化使用的信息,例如:
1
qm set <vmid> --ipconfig0 ip=10.0.10.123/24,gw=10.0.10.1
备份虚机的话可以使用vzdump
命令,查看命令帮助使用vzdump help
,备份出来的是一个vma的后缀文件,vma文件可以命令导入qmrestore vzdump-qemu-xx.vma <vmid>
参考资料:
http://blog.sina.com.cn/s/blog_79fd72df0101uo3z.html
https://www.cnblogs.com/linkenpark/p/9527518.html
https://pve.proxmox.com/wiki/Cloud-Init_Support
proxmox的一些openstack角度笔记
pve宿主机可以安装libguestfs-tools和来不开机虚机来查看和编辑一些信息,可以使用vma extract
解开vma发现是一个硬件信息的conf和一个raw的硬盘文件,转成qcow2文件后查看,例如
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32root@pve:~# vma extract vzdump-qemu-100-2019_01_31-13_11_02.vma temp/
DEVINFO temp//tmp-disk-drive-scsi0.raw 21474836480
root@pve:~# ll temp/
total 1271184
-rw-r--r-- 1 root root 21474836480 Feb 22 13:33 disk-drive-scsi0.raw
-rw-r--r-- 1 root root 391 Feb 22 13:33 qemu-server.conf
root@pve:~# qemu-img convert -f raw temp/disk-drive-scsi0.raw -O qcow2 myvm-disk1.qcow2
root@pve:~# ll
total 2571096
-rw-r--r-- 1 root root 1328283648 Feb 22 13:34 myvm-disk1.qcow2
drwxr-xr-x 2 root root 4096 Feb 22 13:33 temp
-rw-r--r-- 1 root root 1304569344 Feb 21 11:36 vzdump-qemu-100-2019_01_31-13_11_02.vma
root@pve:~# virt-ls myvm-disk1.qcow2 /
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
详细命令可以看看下面的
https://blog.csdn.net/wenwenxiong/article/details/52223731
https://blog.51cto.com/xiaoli110/1568307?utm_source=tuicool