1、如果是个人的博客,网站,都可以。采用最新版,尝试新鲜功能。CentOS 6和7系列都可以2、如果是公司的生产环境,还是以大环境为好,因为有一定的经验积累,推荐CentOS 6.5或者6.8。CentOS是一个企业级Linux。是由知名的北美企业Linux厂商发布并向公众免费提供的。CentOS的核心是由一个开发者小组研发的,但之后越来越多的团队加入研发。反过来的核心开发是由一个活跃的用户社区,包括系统管理员,网络管理员,企业用户,管理者,Linux核心贡献者和Linux爱好者来自世界各地的支持。CentOS的有许多好处,包括一些在其他项目克隆:一个活跃的和不断增长的用户群体,迅速重建,测试,封装QA'ed和勘误表,广泛的网络镜像 ,开发商谁是手机畅通,反应,多渠道支持,包括免费的IRC聊天 , 邮件列表 , 论坛 ,一个充满活力的常见问题 。 商业支持是通过一个供应商提供的数量。
使用第三方面板部署建站环境啊。
个人建站的办法很简单,首先网站1核2G内存1M带宽,40G高效云盘。要准备以下的资料
注册域名。最好能和网站内容有点关联
选择网站系统。例如wordpress,zblog,emblog等都可以。
选择云服务器,例如阿里或者腾讯等
解析域名到服务器
发布网站到云主机以上步骤还是需要一些知识的。
至此,网站建设完成。老魏为此写过云服务器手动建站等多篇教程,看完有疑问可以问,在线了就回答。
xunway.com这个是他们的网站,我选的是Linux 32位(CentOS6.2,预装wd控制面板),这个是不是适合我的商城网站程序
小白入门建站其实可以完全不需要代码方面的知识也可以建站。
想要在学习初期就拥有一个属于自己的网站,学习~装逼么?
步骤很简单:
一、域名选择:选购一个自己喜欢的域名,建议可以到阿里云或者腾讯云购买(域名购买建议:简单易懂,有特殊意义,.com优先)(阿里云服务器代金券领取)
二、服务器选择:如果不考虑往编程方面学习,可以选择虚拟主机,如果想往编程方面发展的小同学建议可以选择腾讯云服务器(现在活动3年只需1000+),选择linux-centos系统然后自己也可以学学linux系统的部署和环境的使用。
三、 网站备案,对已解析成功的域名进行备案,备案需要身份证扫描件,备案专用表格照,以及个人幕布照。(整体时间预计10-15天)
四、备案成功网站搭建:对于新手建议选择PHP语言的各类型CMS快速建站系统,只需要部署好LAMP或者LANP的环境,将对应的CMS建站系统配置到对应的环境中,然后访问后台进行项目部署就可以生成网站了,对于编程小白根本无需学习代码编写,对于编程新手,可以快速构建网站同时也可以将自己所学的知识进行实际操作,对网站进行二次开发尝试改变网站的功能及外观。
--常用CMS:
织梦
thinkcmf
更多建站系统模版
小白编程快速学习入门
--网站美化必备知识:
《HTML教程》
《CSS教程》
《jquery教程》
《bootstrap教程》
《HBuilder编译器使用教程》
《Firebug调试器》
相关标签PHPJAVAHtmll
一、PXE简介
PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的网络启动技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivialfile transfer protocol)或MTFTP(multicasttrivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
严格来说,PXE 并不是一种安装方式,而是一种引导方式
二、PXE的工作原理流程介绍及示意图
PXE的工作原理流程主要分为如下几步
(1)PXEClient向DHCP发送请求
PXEClient从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP协议发送一个广播请求,向本网络中的DHCP服务器索取IP。
(2)DHCP服务器提供信息
DHCP服务器收到客户端的请求,验证是否是合法的PXE Client的请求,验证通过它将给客户端一个提供相应,这个提供相应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。
(3)PXE客户端请求下载启动文件
客户端收到服务器的回应后,会回应一个帧,以请求传送启动所需文件。这些文件包括:pxelinux.0、pxelinux.cfg/default、initrd.img等文件。
(4)BootServer响应客户端请求并传送文件
当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答,用以决定启动参数。BootROM由TFTP通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Liunx安装程序的引导内核。
(5)请求下载自动应答文件
客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么介质来安装linux
如果通过网络安装(NFS.FTP.HTTP),则会在这个时候初始化网络,并定位安装源位置。
接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
(6)客户端将开始安装操作系统
将ks.cfg文件下载回来后,通过该文件找到OS Server,并安装该文件的配置请求下载安装过程需要的软件包。
OSServer和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。
三、CentOS系统下PXE服务器的搭建与部署
接下来结合下面的拓扑,用VMWare Workstation模拟PXE服务器的搭建与部署
具体操作步骤
1、安装DHCP服务
[root@CentOSPXEServer~]# yum install -y dhcp
编辑vi dhcpd.conf DHCP服务配置文件/etc/dhcp/dhcpd.conf
#新增如下dhcp配置
next-server10.112.105.253;
filename"pxelinux.0";
subnet10.112.105.0 netmask 255.255.255.0 {
range 10.112.105.2 10.112.105.250;
option subnet-mask 255.255.255.0;
option routers 10.112.105.254;
option domain-name-servers 114.114.114.114;
default-lease-time 600;
max-lease-time 7200;
}
启动dhcpd服务并设置为开机自启动
[root@CentOSPXEServer~]# /etc/rc.d/init.d/dhcpd start
Startingdhcpd: [ OK ]
[root@CentOSPXEServer~]# chkconfig dhcpd on
[root@CentOSPXEServer~]#
2、安装TFTP服务
[root@CentOSPXEServer~]#yum install tftp-server xinetd
TFTP服务使用Xinetd服务管理,编辑/etc/xinetd.d/tftp,将文件中disable的参数由yes改为no
[root@CentOSPXEServer~]# /etc/rc.d/init.d/xinetd start
Startingxinetd: [ OK ]
[root@CentOSPXEServer~]# chkconfig xinetd on
[root@CentOSPXEServer~]# chkconfig xinetd --list
xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
3、接下来配置支持PXE引导启动程序
PXE启动映像文件由syslinux软件提供,只要安装了syslinux,就会生成一个pxelinux.0文件,将这个文件复制到TFTP默认路径即可。syslinux是一个功能强大的引导加载程序
[root@CentOSPXEServer~]# yum install syslinux
[root@CentOSPXEServer~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@CentOSPXEServer~]# cd /var/lib/tftpboot/
[root@CentOSPXEServertftpboot]#
[root@CentOSPXEServertftpboot]# ll -trh
total28K
-rw-r--r--.1 root root 27K Oct 20 19:24 pxelinux.0
接下来挂载CentOS6.9的启动DVD镜像到/mnt/cdrom目录
[root@CentOSPXEServer~]# mkdir /mnt/cdrom
[root@CentOSPXEServer~]# mount -t iso9660 -o loop /dev/cdrom /mnt/cdrom/
[root@CentOSPXEServer~]# mkdir /var/lib/tftpboot/PXEServer
[root@CentOSPXEServer~]# cp /mnt/cdrom/images/pxeboot/vmlinuz /var/lib/tftpboot/PXEServer/
[root@CentOSPXEServer~]# cp /mnt/cdrom/images/pxeboot/initrd.img /var/lib/tftpboot/PXEServer/

[root@CentOSPXEServer~]# cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
[root@CentOSPXEServer~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@CentOSPXEServer~]# cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
修改default文件
[root@CentOSPXEServer~]# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
[root@CentOSPXEServer~]# vi /var/lib/tftpboot/pxelinux.cfg/default
defaultmenu.c32
timeout100
menutitle Welcome to CentOS 6.9 PXE!
menucolor border 0 #ffffffff #00000000
menucolor sel 7 #ffffffff #ff000000
menucolor title 0 #ffffffff #00000000
menu colortabmsg 0 #ffffffff #00000000
menucolor unsel 0 #ffffffff #00000000
menucolor hotsel 0 #ff000000 #ffffffff
menucolor hotkey 7 #ffffffff #ff000000
menucolor scrollbar 0 #ffffffff #00000000
labellinux
menu label ^1)Install CentOS 6.9 From PXEServer
kernel PXEServer/vmlinuz
append initrd=PXEServer/initrd.imgmethod= devfs=nomount
labellocal
menu label ^2)Boot from local drive
localboot 0xffff
#可作为模板
4、安装HTTP服务并配置httpd服务
先把镜像中文件全部复制到/var/lib/tftpboot/PXEServer/目录下
接下里安装并配置httpd服务
[root@CentOSPXEServer~]# yum install httpd
[root@CentOSPXEServer~]# cd /etc/httpd/conf.d/
[root@CentOSPXEServerconf.d]# ll -trh
total8.0K
-rw-r--r--.1 root root 299 Feb 19 2018 welcome.conf
-rw-r--r--.1 root root 392 Jun 19 23:45 README
[root@CentOSPXEServerconf.d]# mv welcome.conf welcome.conf_bak
[root@CentOSPXEServerconf.d]# vi pxeboot.conf
Alias/PXEServer /var/lib/tftpboot/PXEServer
<Directory/var/lib/tftpboot/PXEServer>
Options Indexes FollowSymLinks
Order Allow
Allow from all
</Directory>
[root@CentOSPXEServerconf.d]# service httpd restart
[root@CentOSPXEServerconf.d]# chkconfig httpd on
[root@CentOSPXEServerconf.d]#
[root@CentOSPXEServerconf.d]# chkconfig httpd --list
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
测试httpd服务是否部署成功,能否正常访问
5、接下来PXEClient开机启动测试验证
1)新建的虚拟机PXEClient进行测试,开机选择从网络启动
2、这时出现之前自定义的菜单
3)选择从PXE启动后开始加载vmlinuz initrd.img等启动文件
4)接下来选择语言键盘,设置IP
5)就进入熟悉的系统安装界面了
PXE服务器的搭建与部署先简单介绍到这里,后续再介绍重点PXE+Kickstart无人值守安装
概述:从2月份开始的[模版自动化系列],已通过一系列的文章熟悉多种虚拟机模版的自动化构建,但在企业实际环境中模版的数量会远远超过这些,此时单一通过shell进行管理和更新,依然非常复杂和繁琐的(虽然相比以前已经有了很大的提高)。现在把自己基于GitOps的方式来管理模版分享出来,进一步提高模版的构建和管理效率,本篇文章将介绍如何通过GitLab CI/CD对模版进行自动化管理。
对于模版保存还存在一个重要的难题需要解决,那就是当云平台或其他自动调用的时候,并不是通过模版名称进行识别,那仅仅通过名称更新模版,就会导致其他系统无法正确识别新模版。vCenter 6.5开始支持模版更新,此特性正解决了我们遇到的问题,并且Packer也是在8月底的版本支持此特性(OVF模版)。使用vCenter内容库还有一个好处,内容库支持订阅,在企业内部如果包含多个vCenter环境的情况下,只需构建一次即可。
通过之前的文章大家对模版构建已经很熟悉了,为了提高移动设备的阅读体验,本手册不再介绍详细的模版配置,您可以通过访问 直接查看代码和配置。
基于GitOps自动化构建vSphere模版特性:
使用Gitlab存储模版配置文件;基于Gitlab CI/CD实现自动化模版构建;基于Git提交记录进行语义版本管理(feet、fix),版本号自增,并存储到模版的Notes中;定时执行CI/CD任务实现模版变异;采用vCenter内容库存储模版,并以-latest为后缀;每次构建自动更新vCenter内容库模版,保持ID不变,以保证vRA云平台或其他工具调用最新模版;所有密码和配置,通过.gitlab-ci.yml进行定义;提供Windows2016/2019、Ubuntu1804/1910/2004、CentOS7/8等多种模版;所有模版进行基础优化(可参考对应模版的自动应答文件);Windows模版使用ISO镜像已集成最新补丁,缩短了部署时间;经过vSphere 7.0、Packer 1.6.4环境测试。相关工具:Packer:是一个开源的自动化虚拟机模版构建工具,支持私有云和公有云,几乎涵盖所有的环境。
vSphere:是VMware企业级虚拟化软件,被企业客户广泛使用,具备稳定性高、性能好、安全性高和易使用的特点。
govc:是一个基于govmomi的cli工具,实现对vSphere的远程管理。
Packer-provisioner-windows-update:Windows Update for packer插件。
Gitlab CI/CD:是一个CI/CD工具,与代码集成在一起工作。
Semantic-delivery-gitlab:镜像用于实现语义版本管理。
Harbor:是私有Docker镜像仓库,用于存储用于执行Packer、Govc和Genisoimage的Docker镜像。
相关代码:中包含了Gitlab CI/CD所需的所有文件。
针对各模版的配置请参考历史的文章。
CI/CD可以根据情况选择不同工具,原理都相同。
需要先通过相关工具中的地址下载packer、govc和windows update for packer三个执行文件,存储到与Dockerfile相同的目录中,Dockerfile如下:
FROM centos:8LABEL maintainer="Alex Li <guoqiangli@vmware.com>"ENV PACKER_VERSION=1.6.4ENV GOVC_VERSION=v0.23.0ENV GOVC_INSECURE=trueENV TIME_ZONE Asia/ShanghaiRUN ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtimeADD ./govc /usr/bin/ADD ./packer /usr/bin/ADD ./packer-provisioner-windows-update /usr/binRUN chmod a+x /usr/bin/govc /usr/bin/packer /usr/bin/packer-provisioner-windows-update && yum install -y genisoimageWORKDIR /tmpCMD ["/bin/bash"]
使用Docker Build构建Docker Image,并上传到容器仓库(私有或公共)中:
docker build -t harbor.corp.local/library/gitops-packer:v1.0 .docker push login harbor.corp.localdocker login -u admin harbor.corp.localdocker push harbor.corp.local/library/gitops-packer:v1.0上传semantic-devlivery-gitlab镜像到Harbor
docker pull hutson/semantic-delivery-gitlab:9.1.0docker tag hutson/semantic-delivery-gitlab:9.1.0 harbor.corp.local/library/semantic-delivery-gitlab:9.1.0docker push harbor.corp.local/library/semantic-delivery-gitlab:9.1.0在Gitlab中创建Access Token使用个人账户登录Gitlab;进入到用户设置->访问令牌;填写令牌名称、到期日期和选择权限->创建个人访问令牌;保存Token备用;创建项目,并提交所有代码到仓库中
这里不进行详细操作说明,下面是最终仓库内容的截图:
修改.gitlab-ci.yml配置文件此文件是Gitlab CI/CD的主配置文件,常用配置参数在此文件中定义,无需修改packer和操作系统自动应答文件。
提示1:本手册为了易读,所有敏感信息也在此配置文件中声明,强烈建议使用Gitlab项目变量进行定义,避免敏感信息泄漏。
提示2:以下代码示例已经过删减,完成代码请从Github获取。
# 环境变量定义,生产环境不建议在此配置敏感定义(例如:密码)variables: DOCKER_DRIVER: "overlay2" GITLAB_TOKEN: "xxxxxxxxxxxxx"# 定义用于执行packer、govc和genisoimage的Docker镜像,需要提前构建 PACKER_DOCKER_IMAGE: "harbor.corp.local/library/packer-gitops:v1.0"# 定义用于创建模板的vCenter相关信息,密码部分推荐在Gitlab的项目变量定义,以提高安全性。 VC_SERVER: "vcenter.corp.local" VC_USERNAME: "Administrator@vsphere.local" VC_PASSWORD: "VMware1!" VC_DATACENTER: "Labs-DC02" VC_CLUSTER: "DC02-Cluster" VC_CONTENT_LIBRARY: "DC02-VM-Templates" VC_FOLDER: "Templates" VC_DATASTORE: "SSD_DATASTORE"# 定义VM相关配置 VM_NETWORK: "vlan100" VM_CPU: 2 VM_MEM: 4096 VM_DISK: 81920 VM_VIDEO_RAM: 16384 VM_HW_VERSION: 17# 定义安装光盘的存储路径,Winodws系统需要根据安装光盘的不同调整自动应答文件。# -----此处省略部分代码,从github中获取完整代码------OS_CENTOS8_ISO: "[SSD_DATASTORE 0-ISO/CentOS-8.2.2004-x86_64-dvd1.iso" OS_WINDOWS2016_ISO: "[SSD_DATASTORE] 0-ISO/cn_windows_server_2016_vl_x64_dvd.iso"# 定义CentOS8自动应答光盘的存储路径,每次编译会自动覆盖之前版本。 OS_CENTOS8_KS_ISO: "[SSD_DATASTORE] 0-ISO/centos8-ks.iso" OS_CENTOS8_GUI_KS_ISO: "[SSD_DATASTORE] 0-ISO/centos8-gui-ks.iso"# 定义VMware Tools安装路径 OS_WINDOWS_VMTOOLS: "[SSD_DATASTORE] 0-ISO/VMware-tools-windows-11.1.5.iso"# 定义Windows系统使用pvscsi驱动的路径,此文件只能同时被一个VM挂载,需要为每个Windows系统配置一个文件。 OS_WIN2016_DRIVER: "[SSD_DATASTORE] 0-ISO/win2016-pvscsi-Windows8.flp"# 定义GOVC环境变量,用于上传CentOS8自动应答的ISO(ks.cfg) GOVC_URL: ${VC_SERVER} GOVC_USERNAME: ${VC_USERNAME} GOVC_PASSWORD: ${VC_PASSWORD}# 此配置用于定义Linux root和ops用户、Windows Administrator和ops用户的密码,密码推荐在Gitlab的项目变量定义,以提高安全性。 LINUX_SSH_PASSWORD: "VMware1!" WINDOWS_PASSWORD: "VMware1!"# 此变量用于定义虚拟机名称,最终会以-latest作为后缀存储到vCenter内容库中。 CENTOS8_VM_NAME: "CentOS8" WIN2016_VM_NAME: "Win2016"# 定义Windows安装KEY,根据不同的安装版本配置。 WIN2016_KEY: "XXXXX-XXXXX-XXXXX-XXXXX-XXXX-XXXX" WIN2019_KEY: "XXXXX-XXXXX-XXXXX-XXXXX-XXXX-XXXX"#定义CI/CD的阶段,devliver阶段用于生成版本号,validate阶段用于验证packer配置文件是否正确,build-iso阶段用于CentOS8的ISO制作,并自动上传到共享存储中,,build阶段用于模版构建,list-library阶段用于列出内容库模版。stages: - deliver - validate - build-iso - build - list-library#采用语义版本管理,基于commit消息增加版本号和生成Release文档,此阶段不会进行打包和部署,仅仅是添加版本tag。deliver: image:name: harbor.corp.local/library/sematic-delivery-gitlab:9.1.0entrypoint: [""] stage: deliver only:- master script:- semantic-delivery-gitlab --token ${GITLAB_TOKEN}#此阶段用于验证packer配置文件是否正确。packer-validate: image:name: ${PACKER_DOCKER_IMAGE} stage: validate script:- packer validate ./CentOS8/centos-vsphere.json- packer validate ./Win2016/win2016-vsphere.json only:- tags dependencies:- deliver#此阶段用于构建CentOS8所需的ISO文件,并上传到vSphere存储中(自动覆盖之前版本)。#for CentOS8。CentOS8-ks-iso-build: image:name: ${PACKER_DOCKER_IMAGE} stage: build-iso script:- cd CentOS8- sed -i 's/__PASSWORD__/'"${LINUX_SSH_PASSWORD}"'/g' ./ks.cfg- genisoimage -o centos8-ks.iso -V "OEMDRV" ./ks.cfg- govc datastore.upload -ds ${VC_DATASTORE} centos8-ks.iso 0-ISO/centos8-ks.iso only:changes:- CentOS8/ks.cfg# -----此处省略部分代码,从github中获取完整代码------ #此阶段用于生成虚拟机模板,模板名基于job中变量定义,最终模板使用-latest最为后缀。#for CentOS8。packer-build-CentOS8: image:name: ${PACKER_DOCKER_IMAGE} stage: build variables:VM_NAME: ${CENTOS8_VM_NAME} script:- cd CentOS8- packer build --force centos-vsphere.json only:- tags dependencies:- packer-validate# -----此处省略部分代码,从github中获取完整代码------ #for Windows Server 2016。packer-build-Win2016: image:name: ${PACKER_DOCKER_IMAGE} stage: build variables:VM_NAME: ${WIN2016_VM_NAME}OS_WINDOWS_DRIVER: ${OS_WIN2016_DRIVER} script:- cd Win2016- sed -i 's/__PASSWORD__/'"${WINDOWS_PASSWORD}"'/g' ./Autounattend.xml- sed -i 's/__LICENSEKEY__/'"${WIN2016_KEY}"'/g' ./Autounattend.xml- packer build --force win2016-vsphere.json timeout: 120m only:- tags dependencies:- packer-validate# -----此处省略部分代码,从github中获取完整代码------ #list vcenter content library。list-content-library: image:name: ${PACKER_DOCKER_IMAGE} stage: list-library script:- govc library.info -json ${VC_CONTENT_LIBRARY}/* only:- tags标准git commit消息格式
标准且规范的commit消息不仅可以保证版本历史的可读性,还可以了解每次变更的内容和影响范围,并会自动在Release页面生成文档,所以,强烈建议采用标准的commit消息格式和内容。
fix: 当修复代码问题时,使用此标记。示例:fix: 修复Windows模版ISO文件错误。版本号变化:1.0.0->1.0.1
feat: 当新增功能或模版时,使用此标记。示例:feat: 增加Photon模版。版本号变化:1.0.0->1.1.0
[skip ci] 当不希望自动执行CI/CD时,在消息中增加此标记。示例:fix: 更新ReadME.[skip ci]。版本号变化:无变化
验证执行过程和结果当提交变更后,Gilab CI/CD会基于.gitlab-ci.yml中的配置自动执行流水线,整个过程分为2组5个步骤:
执行语义版本管理,为代码增加tag标记;基于tag执行packer配置文件验证、CentOS8自动应答ISO构建、镜像构建和列出内容库内容;流水线执行过程如下图所示,共花费25分钟时间,完成8个模版的自动化构建:
登录vCenter内容库查看模版更新:
添加定时任务在Gitlab CI/CD的计划中,添加一个每周/月的定时执行计划,添加完成后如下图所示。
[可选]Windows镜像集成最新补丁在模版构建过程中,Windows的构建时间最长,某些情况下长达2个小时,可能会触发Gitlab CI/CD的超时和Packer的超时机制,导致任务失败。为提高模版构建效率和降低出错率,建议自行封装带有最新补丁的模版,下面是大致的制作过程,共参考。
下载DISM++工具(国人制作,图形化操作);解压缩系统安装光盘到目录中(d:win2016-iso),并提取解压目录下sourcesinstall.wim文件,拷贝到另一目录中(d:win2016-iso);打开DISM++工具,载入install.wim文件,挂载路径需提前创建(d:win2016-isomnt);选中载入的install.wim系统,打开会话;使用系统安装光盘安装系统,并执行系统更新,更新完成后在已安装系统更新中(添加/删除程序)找到安装的补丁版本号;登录到网站,基于版本好下载补丁的msu格式文件,保存到目录中(d:win2016-isomsu);在DISM++工具页面,控制面板->更新管理->添加(d:win2016-isomsu),并执行安装,等待安装完成(时间较长);补丁安装完成后,DISM++->文件->另存为映像(d:win2016-iso ew.wim)存储新的映像;使用new.wim替换系统安装盘解压缩目录的install.wim(名称必须是install.wim);DISM++->常用工具->工具箱->ISO生成器,源选择替换install.wim文件的系统安装盘加压缩目录,目标选择d:win2016-iso目录,并指定新光盘名称和添加标签;DISM++->文件->卸载映像;包含指定补丁的系统安装光盘制作完成;上传新的ISO到共享存储中,并修改.gitlab-ci.yml文件使用新的ISO镜像路径。提示1:DISM++虽然提供系统更新的功能,但是针对Windows Server系统似乎不正常,所以建议使用手工添加补丁的方式。
提示2:通过DISM工具还可以将pvscsi的驱动添加到安装光盘中,这样就无需额外添加pvscsi驱动。
完成至此通过Gitlab CI/CD、Govc和Packer实现了vSphere环境下的模版GitOps,以后只要修改了相关配置文件,就会自动执行模版构建,由于此构建是并发执行的,效率非常高,最后,祝大家可以轻松工作和快乐生活。