Windows OpenStack Imaging Tools 自动生成 Windows 镜像。
这些工具是一组 PowerShell 模块和脚本。
支持Windows镜像的目标环境是。
生成环境需要是一个Windows环境,并启用Hyper-V虚拟化。
如果你打算在另一个system / hypervisor 上运行在线Windows设置步骤,则不需要Hyper-V虚拟化。
以下版本的Windows镜像(包括x86/x64,如果存在的话)被支持。
要生成Windows Nano Server 2016,使用以下资源库。
https://github.com/cloudbase/cloudbase-init-offline-install

Hyper-V虚拟化,支持PowerShell >=v4 和Windows Assessment 和 Deployment Kit(部署工具包ADK)。git submodule update --init来获取它们WinImageBuilder.psm1模块New-WindowsCloudImage 或 New-WindowsOnlineCloudImage 方法git clone https://github.com/cloudbase/windows-openstack-imaging-tools.git
pushd windows-openstack-imaging-tools
Import-Module .\WinImageBuilder.psm1
Import-Module .\Config.psm1
Import-Module .\UnattendResources\ini.psm1
# Create a config.ini file using the built in function, then set them accordingly to your needs
$ConfigFilePath = ".\config.ini"
New-WindowsImageConfig -ConfigFilePath $ConfigFilePath
# To automate the config options setting:
Set-IniFileValue -Path (Resolve-Path $ConfigFilePath) -Section "DEFAULT" `
-Key "wim_file_path" `
-Value "D:\Sources\install.wim"
# Use the desired command with the config file you just created
New-WindowsOnlineImage -ConfigFilePath $ConfigFilePath
popd
这个命令不需要启用Hyper-V,但是生成的镜像还没有准备好被部署,因为它需要在另一个管理程序上手动启动。
当它关闭时,该镜像就可以使用了。
你可以在Examples/create-windows-cloud-image.ps1中找到一个生成原始OpenStack Ironic镜像的PowerShell例子,它也可以在KVM上使用。
这个命令要求启用Hyper-V,如果要安装更新,需要配置一个VMSwitch用于外部网络连接。如果要安装更新的话,强烈建议使用VMSwitch的网络连接。
这个命令在内部使用New-WindowsCloudImage来生成基础镜像,并使用基础镜像启动Hyper-V实例。使用基本镜像启动一个Hyper-V实例。在Hyper-V实例关闭后。产生的VHDX被缩减到最小尺寸,并转换为所需的格式。
你可以在 Examples/create-windows-online-cloud-image.ps1 中找到一个生成原始 OpenStack Ironic 镜像的 PowerShell 示例,该镜像也可在 KVM 上使用。
确保Hyper-V VMSwitch配置正确,如果你已经配置了镜像生成来安装Windows更新,它允许互联网连接。
在相关的Hyper-V虚拟机中检查Logon.ps1脚本是否失败。如果脚本失败,应该有一个PowerShell窗口显示错误信息。
这是可能遇到的最常见的情况,而且很容易解决。
如果你在KVM hypervisor上启动,确保你为带有VirtIO驱动的ISO/folder配置了正确的路径。配置选项是 virtio_iso_path 和 virtio_base_path。
在KVM hypervisor方面,确保你用--enable-kvm启动KVM vm进程。
如果你在裸机上启动,确保基本的Windows安装有内置的存储驱动,或者你在drivers_path配置选项中指定了驱动文件夹的正确路径。
这通常发生在hypervisor没有公开该特定Windows版本所需的CPU标志的情况下。
例如,对于Windows 10,你可以检查 https://www.microsoft.com/en-us/windows/windows-10-specifications ,确保你选择的管理程序暴露了CPU标志。
需要在系统上安装 PowerShell Pester 包。
如果你运行的是Windows 10,它应该已经安装在你的系统上。
如果没有安装,你可以在Windows 10或更高版本上安装它。
Install-Package Pester
或者你可以从以下网站克隆它:https://github.com/pester/Pester
在一个封闭的环境中运行测试:
cmd /c 'powershell.exe -NonInteractive { Invoke-Pester }'
这将运行所有的测试而不污染你当前的shell环境。
如果你在持续集成环境中运行它,就不需要这样做。