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

相关文章

Spring Boot 整合 SSE的高级实践(Server-Sent Events)

《SpringBoot整合SSE的高级实践(Server-SentEvents)》SSE(Server-SentEvents)是一种基于HTTP协议的单向通信机制,允许服务器向浏览器持续发送实... 目录1、简述2、Spring Boot 中的SSE实现2.1 添加依赖2.2 实现后端接口2.3 配置超时时

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文