一键变身!Cloud-Init让PVE镜像华丽转身,快来看看怎么做!

在虚拟化环境中,自动化配置虚拟机(VM)是提高效率的关键。Proxmox VE(PVE)是一款流行的开源虚拟化平台,而Cloud-Init是一种用于初始化云实例的工具。结合PVE和Cloud-Init,我们可以快速创建和配置虚拟机镜像。本教程将详细介绍如何在PVE上利用Cloud-Init构造自己的镜像

什么是 Cloud-Init?

Cloud-Init 是一个用于初始化云实例的开源工具。它被广泛应用于各种云计算平台,如Amazon Web Services (AWS)、Microsoft Azure、Google Cloud Platform (GCP)、OpenStack等。Cloud-Init允许在实例首次启动时,自动化执行各种配置任务,如设置主机名、用户和组、安装软件包、配置网络等。

Cloud-Init 的工作原理

Cloud-Init在实例的首次启动时运行,并根据用户提供的元数据和用户数据执行配置。这些数据通常以YAML格式提供,可以包含以下几类信息:

  1. Meta-data(元数据):描述实例的基本信息,如实例ID、主机名等。
  2. User-data(用户数据):定义实例启动时要执行的具体配置和脚本。

前提条件

  • 一台运行Proxmox VE的服务器

PVE服务器

  • 基本的Linux命令行操作知识

官方镜像下载

# cloud images下载地址
# centos:
http://cloud.centos.org/centos/
# ubuntu:
http://cloud-images.ubuntu.com/releases/
# debian:
https://cloud.debian.org/images/cloud/OpenStack/
# fedora:
https://alt.fedoraproject.org/cloud/
# rehat7:
https://access.redhat.com/downloads/content/69/ver=/rhel---7/x86_64/product-downloads
# opensuse:
https://software.opensuse.org/distributions/leap#JeOS-ports

构造镜像模板

在本教程中,我们将使用Ubuntu镜像作为示例 :

  1. 先从官方下载ubuntu的云镜像。执行如下命令:
wwget https://cloud-images.ubuntu.com/jammy/20240601/jammy-server-cloudimg-amd64-disk-kvm.img
  1. 使用下面的命令创建虚拟机:
VM_ID=999
qm create $VM_ID --cores 4 --memory 4096 --name ubuntu --net0 virtio,bridge=vmbr0
  1. 给虚拟机导入镜像
qm importdisk $VM_ID jammy-server-cloudimg-amd64-disk-kvm.img local-lvm
  1. 挂载创建好的硬盘到虚拟机
qm set $VM_ID --sata0 local-lvm:vm-$VM_ID-disk-0
  1. 创建cloudinit
qm set $VM_ID --sata1 local-lvm:cloudinit
  1. 设置默认启动项
qm set $VM_ID --boot c --bootdisk sata0
  1. 设置用户名和密码
qm set $VM_ID --ciuser root --cipassword 123123
  1. 配置网络
qm set $VM_ID  --ipconfig0 ip=10.0.10.123/24,gw=10.0.10.1,ip6=dhcp #静态配置
qm set $VM_ID --ipconfig0 ip=dhcp,ip6=dhcp #动态配置
  1. 启动虚拟机
qm start $VM_ID

10.修改Cloud-init的配置
开启PasswordAuthentication认证,编辑/etc/cloud/cloud.cfg这个文件,添加 ssh_pwauth:true,如下图:

添加这个配置后,会在对应命令添加如下配置文件。

root@ubuntu:~# cat /etc/ssh/sshd_config.d/50-cloud-init.conf
PasswordAuthentication yes

修改SSH配置文件,允许root用户登录

PermitRootLogin yes
  1. 添加国内的镜像源,本案中添加清华大学源为例。

/etc/apt/sources.list.d创建一个名为tsinghua.sources的文件,添加如下内容:

Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
# Types: deb-src
# URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
# Suites: noble noble-updates noble-backports
# Components: main restricted universe multiverse
# Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

# Types: deb-src
# URIs: http://security.ubuntu.com/ubuntu/
# Suites: noble-security
# Components: main restricted universe multiverse
# Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

# 预发布软件源,不建议启用

# Types: deb
# URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
# Suites: noble-proposed
# Components: main restricted universe multiverse
# Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

# # Types: deb-src
# # URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
# # Suites: noble-proposed
# # Components: main restricted universe multiverse
# # Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  1. 所有配置完成后,清除历史命令并关机
history -c && init 0
  1. 把该虚拟机转成模板
qm template $VM_ID

使用脚本批量创建虚拟机

批量创建需求如下:

  • 利用虚拟机模板 999,批量创建 3 个虚拟机
  • 新建的虚拟机 ID 为 20x,虚拟机名称为 demo-vmx
  • 指定存储名称为 local
  • 每个虚拟机 2 插槽 2 核心即 4 线程,内存 4G
  • 每个虚拟机添加一块 50G 的数据盘
  • 每个虚拟机添加一个内网网卡,即网络设备 (net0),网卡 IP 为 192.168.31.24x,网关为 192.168.31.254
  • 设置系统 root 用户的密码为 password
for id in $(seq 1 1 3)
do
qm clone 999 24${id} --name demo-vm${id} -full true -storage local
qm set 24${id} --sockets 2 --cores 2 --memory 4096
qm set 24${id} --scsi1 iothread=1,local:100
qm set 24${id} --nameserver 114.114.114.114 --ipconfig1 ip=192.168.31.24${id}/24,gw=192.168.31.254 --ciuser root --cipassword password
qm start 24${id}
done
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

didiplus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值