一键变身!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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/764877.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

红酒与露营:户外时光的好伴侣

在繁忙的都市生活中,人们总是渴望逃离喧嚣,寻找一处宁静的天地,与大自然亲密相拥。露营,作为一种返璞归真的户外生活方式,成为了许多人心中的理想选择。而在露营的浪漫时光里,一瓶雷盛红酒的陪伴&#xff0…

内网渗透学习-杀入内网

1、靶机上线cs 我们已经拿到了win7的shell,执行whoami,发现win7是administrator权限,且在域中 执行ipconfig发现了win7存在内网网段192.168.52.0/24 kali开启cs服务端 客户端启动cs 先在cs中创建一个监听器 接着用cs生成后门,记…

开源RAG个人知识库项目开发分析

前言 Hello,大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者,这个LLM开发基础阶段已经进入尾声了,本文中我们不介绍更多的理论与知识点,而是通过的分析开源项目的解决方案来帮助各位开发者理…

Pytest--安装与入门

pytest是一个能够简化成测试系统构建、方便测试规模扩展的框架,它让测试变得更具表现力和可读性–模版代码不再是必需的。只需要几分钟的时间,就可以对你的应用开始一个简单的单元测试或者复杂的功能测试。 1. 安装pytest pip install -U pytest检查版…

计算机人说学校-北京交通大学-计算机方向

北京交通大学(Beijing Jiaotong University,简称BJTU)是一所位于中国首都北京的全国重点大学,隶属于中华人民共和国教育部,并由教育部、交通运输部、北京市人民政府和中国国家铁路集团有限公司共建。该校是国家“双一流…

为什么 [] == ![] 为 true?

🧑‍💻 写在开头 点赞 收藏 学会🤣🤣🤣 前言 面试官问我,[] ![] 的结果是啥,我:蒙一个true; 面试官:你是对的;我:内心非常高兴&a…

【PyTest】玩转HTML报告:修改、汉化和优化

前言 Pytest框架可以使用两种测试报告,其中一种就是使用pytest-html插件生成的测试报告,但是报告中有一些信息没有什么用途或者显示的不太好看,还有一些我们想要在报告中展示的信息却没有,最近又有人问我pytest-html生成的报告&a…

搜索型数据库的技术发展历程与趋势前瞻

概述 随着数字科技的飞速发展和信息量的爆炸性增长,搜索引擎已成为我们获取信息的首选途径之一,典型的代表厂商如 Google。然而,随着用户需求的不断演变,传统的搜索技术已经无法满足人们对信息的实时性、个性化和多样性的需求。 …

【启明智显技术分享】SSD202D核心板方案双网口SBC2D06开发板开箱与实操全攻略上手指南

一、背景 本指南将详细介绍启明智显基于SSD202D核心板方案下的双网口-SBC2D06的开箱及实操上手应用。无论您是电子爱好者、开发者还是工程师,这份指南都能助您快速上手并充分利用这款双网口开发板的各项功能。 二、硬件介绍 SBC2D06双网口开发板,作为…

什么方法能快速分享视频给他人?视频二维码提供预览的制作技巧

现在想要分享一个或者多个视频时,很多人会选择将视频生成二维码的方法来展现视频内容,通过这种方式可以让多人同时扫码查看同一个视频,有效提升其他人获取内容的速度及视频传播的效率。那么视频转换成二维码的方法是什么样的呢? …

USB PD+TYPE -C快充电源中MOSFET选型,USB PD应用市场包含智能手机,平板电脑,笔记本电脑,游戏本,移动硬盘,数码相机,电动工具等传统领域

USB PD全称为USB Power Delivery,是由USB-IF组织制定的一种快速充电协议,也是目前市场非常看好的一种协议,可以支持输出功率高达100W;Type-C是一种接口规范,能够支持传输更大的电流。USB PD应用市场不仅包含智能手机&a…

【项目】个人论坛测试报告

论坛测试报告 一、项目背景二、项目功能三、测试计划一)功能测试二)自动化测试三)性能测试登录测试 使用VUG创建脚本1)编写用户进行登录的脚本2)对脚本进行强化 使用controller创建场景使用Analysis生成测试报告测试报…

NX 二次开发-获取CAM切削层数据

int count 0;tag_t* objects;UF_UI_ONT_ask_selected_nodes(&count, &objects); //获取当前加工导航器选中的对象数量和tagif (count < 0){return 0;}UF_CUT_LEVELS_t* cut_levels_ptr_addr NULL; //读工序的切削层UF_CUT_LEVELS_load(objects[0], &…

高考失利咨询复读,银河补习班客服开挂回复

补习班的客服在高考成绩出来后&#xff0c;需要用专业的知识和足够的耐心来回复各种咨询&#xff0c;聊天宝快捷回复软件&#xff0c;帮助客服开挂回复。 ​ 前言 高考成绩出来&#xff0c;几家欢喜几家愁&#xff0c;对于高考失利的学生和家长&#xff0c;找一个靠谱的复读补…

Python的库dataperp读取excel和csv

领导说这个很牛&#xff0c;不过咱们不能听别人一口之言&#xff0c;咱们应该亲手试试&#xff0c;在来说这个好或者不好。 这个dataprepe已经不维护了&#xff0c;最高只支持python3.11以下版本,建议选择3.9. 他只能处理dataframe格式的数据&#xff0c;也就是pandas加载后的数…

monkey大全!可直接运用在项目中的常规monkey命令

测试步骤 adb devices-----了解包名-----adb shell monkey -----p 包名 ----v 运行次数&#xff08;多个参数的组合形成不同的用例以求最大的覆盖&#xff09;-----当崩溃或无响应时分析monkey日志 常规monkey命令 &#xff08;可直接在项目里使用&#xff09; adb shell m…

CAD图纸怎么加密?(五种简单的CAD图纸加密方法分享)

在企业中&#xff0c;CAD图纸通常含有许多敏感且机密信息&#xff0c;对设计图纸的安全保护至关重要。为确保CAD图纸不被未经授权的人访问、复制或篡改&#xff0c;企业需要采用有效的加密措施。以下是一些常用的方法和工具&#xff0c;帮助企业对CAD图纸进行加密保护&#xff…

飞睿uwb防丢定位器芯片方案,厘米级无线定位测距,超宽带可传输可MESH组网模块

在信息爆炸的时代&#xff0c;我们的生活越来越离不开各种各样的智能设备。从手机到手表&#xff0c;从智能家居到无人驾驶&#xff0c;科技的进步让我们的生活变得更加便捷、高效。然而&#xff0c;随着我们拥有的物品越来越多&#xff0c;如何确保这些物品的安全&#xff0c;…

Rabbitmq部署

环境 操作系统CentOS7 安装 准备安装包 # rabbitmq基于erlang语言开发&#xff0c;需先安装erlang语言解释器 [rootnode2 ~]# ls erlang-21.3-1.el7.x86_64.rpm rabbitmq-server-3.8.8-1.el7.noarch.rpm [rootnode2 ~]# rpm -ivh erlang-21.3-1.el7.x86_64.rpm #安装soca…