ZStack云平台镜像封装实践 -- ZCCT考试

2024-02-04 11:20

本文主要是介绍ZStack云平台镜像封装实践 -- ZCCT考试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ZStack云平台镜像封装实践

00. 镜像封装的目的

  • 提高安装效率
    • 相比如iso模式创建云主机,使用已封装的镜像创建云主机,无需配置分区、安装模式等内容,提高部署效率
  • 无人值守安装
    • 创建云主机过程中无需人为干预,可批量创建云主机
  • 自定义配置
    • 封装镜像时可自定义软件包,安装更新、驱动等,可做到即装即用

01. 封装Linux

1.1 创建云主机

  • 添加镜像并且创建云主机
  • 指定hostname
  • 配置网络
  • 安装QEMU Guest Agent
  • 安装cloud-init(ssh_pwauth)
  • 创建系统模板,导出镜像(可选)

在这里插入图片描述

  • 系统模板配置
  • 创建系统模板

1.2 Linux 创建演示

  • winscp上传文件到服务器端

  • 镜像选择演示

    • 类型选择系统镜像
    • 镜像格式选择iso
    • URL选择文件URL
    • 选择好之后点击确定创建镜像

在这里插入图片描述

  • 创建成功

在这里插入图片描述

  • 点击打开控制台

在这里插入图片描述

  • 打开控制台后安装操作系统即可

  • 安装完操作系统后重启,再安装几个软件包

yum -y install bash-completion
  • 再设置主机名
hostnamectl set-hostname idayuanshuai.com
  • 安装cloud-init软件包
yum -y install cloud-init
  • 修改/etc/cloud/cloud.cfg
vim /etc/cloud/cloud.cfg
ssh_pwauth 1
datasource_list: [ ConfigDrive, None ]
datasource:ConfigDrive:dsmode: local
  • 启动cloud-init
[root@192-168-1-176 ~] systemctl start cloud-init
[root@192-168-1-176 ~] systemctl status cloud-init
● cloud-init.service - Initial cloud-init job (metadata service crawler)Loaded: loaded (/usr/lib/systemd/system/cloud-init.service; enabled; vendor preset: disabled)Active: active (exited) since Fri 2020-11-06 10:05:32 CST; 7s agoProcess: 9748 ExecStart=/usr/bin/cloud-init init (code=exited, status=0/SUCCESS)Main PID: 9748 (code=exited, status=0/SUCCESS)Nov 06 10:05:32 192-168-1-176 cloud-init[9748]: **************************************************************************
Nov 06 10:05:32 192-168-1-176 useradd[9775]: new group: name=centos, GID=1000
Nov 06 10:05:32 192-168-1-176 useradd[9775]: new user: name=centos, UID=1000, GID=1000, home=/home/centos, shell=/bin/bash
Nov 06 10:05:32 192-168-1-176 useradd[9775]: add 'centos' to group 'adm'
Nov 06 10:05:32 192-168-1-176 useradd[9775]: add 'centos' to group 'wheel'
Nov 06 10:05:32 192-168-1-176 useradd[9775]: add 'centos' to group 'systemd-journal'
Nov 06 10:05:32 192-168-1-176 useradd[9775]: add 'centos' to shadow group 'adm'
Nov 06 10:05:32 192-168-1-176 useradd[9775]: add 'centos' to shadow group 'wheel'
Nov 06 10:05:32 192-168-1-176 useradd[9775]: add 'centos' to shadow group 'systemd-journal'
Nov 06 10:05:32 192-168-1-176 systemd[1]: Started Initial cloud-init job (metadata service crawler).
  • 修改网卡配置文件,删除掉uuidmac地址,只留下如下内容
[root@idayuanshuai ~] cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=dhcp
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
  • 安装qemu-guest-agent
[root@idayuanshuai ~] yum -y install qemu-guest-agent
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
Package 10:qemu-guest-agent-2.12.0-3.el7.x86_64 already installed and latest version
Nothing to do

安装完成之后,即可支持再ZStackUI上在线修改云主机密码

  • 设置qemu-guest-agentcloud-init的开机自启动
[root@idayuanshuai ~]  systemctl enable cloud-init
[root@idayuanshuai ~]  systemctl enable qemu-guest-agent.service 
  • 安装vim
[root@idayuanshuai ~] yum -y install vim &> /dev/null
  • 关闭SElinux
[root@idayuanshuai ~] vim /etc/selinux/config
SELINUX=disabled
[root@idayuanshuai ~] setenforce 0
[root@idayuanshuai ~] getenforce 
Permissive
  • 将缓存中的内容写入磁盘
[root@idayuanshuai ~] sync 
[root@idayuanshuai ~] sync 
[root@idayuanshuai ~] sync 
[root@idayuanshuai ~] sync 
  • 关机
shutdown -h now
  • 创建云主机的模板镜像

在这里插入图片描述

  • 创建镜像

在这里插入图片描述

  • 创建云主机验证镜像是否成功
    在这里插入图片描述

  • 在云主机的详情页里面打开QGA开关,因为制作镜像时已经安装了qemu-guest agent

在这里插入图片描述

  • 在镜像的详情页里面也打开QGA开关

在这里插入图片描述

  • 选择导出镜像

在这里插入图片描述

  • 此时会显示已导出镜像的URL

在这里插入图片描述

可以直接通过该链接下载URLqcow2文件

02. 封装Windows

  • 创建云主机
  • 安装驱动程序
  • 预处理系统
  • 创建系统模板

在这里插入图片描述


2.1 创建系统镜像

  • 平台选择Windows virtio因为其性能更好

  • 不要勾选已安装qemu-guest agent

在这里插入图片描述


2.2 创建驱动镜像

  • 镜像格式选择iso
  • 平台选择others
  • 不勾选已安装qemu-guest agent

在这里插入图片描述


2.3 安装驱动

  • 安装scsi控制器驱动
    • 选择vioscsi目录下的2k12R2下的amd64目录
  • PCI简单通讯控制器驱动
    • 选择vioserial目录下的2k12r2下的amd64目录
  • 开启内存监控
    • 将驱动器下的Balloon下的2k12R2下的amd64目录下的blnsvr文件复制到C:/Windows/System32目录下
  • 以管理员身份运行CMD
    • 执行blnsvr.exe -l命令,执行完成后服务将会自动安装,启动
  • 进入驱动磁盘下的guest-agent目录下双击qemu-ga-x86_64.msi程序
  • 安装cloud-init程序
    • 进入官网https://cloudbase.it/cloudbase-init/#download
    • 选择对应的安装程序

在这里插入图片描述

  • 打开cmd
    • 输入diskpart
    • 再输入san policy=onlineall
  • 退出,再次打开cmd,进入c:Windows\System32\Sysprep\目录下,执行sysprep.exe命令
    • 对于弹出的窗口,勾选通用

03. 其他

  • 镜像格式支持qcow2isoraw三种
  • 使用virtio效率更高。如果Windows使用了virtio接口那么创建镜像时便选择WindowsVirtio平台
  • URL支持HTTP/HTTPS/FTP/SFTPfile方式,还支持本地文件上传
  • BIOS支持legacyuefi

这篇关于ZStack云平台镜像封装实践 -- ZCCT考试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/677319

相关文章

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机