安裝Cloudbase-Init
更新時間 2024-10-25 16:14:32
最近更新時間: 2024-10-25 16:14:32
分享文章
本文檔為制作Windows系統私有鏡像指導手冊的步驟3,安裝Cloudbase-Init。
操作場景
Cloudbase-Init是用于Windows操作系統在創建彈性云主機過程執行信息初始化的工具,主要支持以下關鍵能力:
- Windows云主機主機名、用戶名、密碼等信息的初始化;
- Windows云主機用戶數據的注入以及自動化配置。
操作步驟
下載最新穩定版Cloudbase-Init:
- 64 位Windows操作系統請通過此鏈接下載:。
- 32 位Windows操作系統請通過此鏈接下載:。
安裝Cloudbase-Init
遇下方截圖步驟,請按截圖配置操作,其它界面默認即可。
- Username: Administrator;
- 勾選Run Cloudbase-Init service as LocalSystem。
配置Cloudbase-Init。
- 打開PowerShell,將以下內容直接復制粘貼并執行。
$content = @'
[DEFAULT]
username=Administrator
groups=Administrators
inject_user_password=true
bsdtar_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\bsdtar.exe
mtools_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\
verbose=true
debug=true
logdir=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\log\
logfile=cloudbase-init.log
default_log_levels=comtypes=INFO,suds=INFO,iso8601=WARN,requests=WARN
logging_serial_port_settings=COM1,115200,N,8
local_scripts_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\
allow_reboot=true
metadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService,cloudbaseinit.metadata.services.httpservice.HttpService
plugins=cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin,cloudbaseinit.plugins.common.networkconfig.NetworkConfigPlugin,cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin,cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin,cloudbaseinit.plugins.common.localscripts.LocalScriptsPlugin,cloudbaseinit.plugins.common.userdata.UserDataPlugin
netbios_host_name_compatibility=false
activate_windows=true
first_logon_behaviour=no
'@
$content | Out-File -Encoding ASCII -FilePath 'C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf'
- 添加自定義腳本,確保 configdrive CD 設備能自動卸載。
$content = @'
# Set the label of the configdrive.
$label = 'config-2'
# Get the list of CD drives and find the one with the specified label.
$cdRom = (New-Object -ComObject 'Shell.Application').Namespace(17).Items() | Where-Object { $_.Name.contains($label) }
# Check if the CD drive with the specified label was found.
if ($cdRom) {
try {
# Eject the CD drive.
$cdRom.InvokeVerb("Eject")
Write-Output "Successfully ejected configdrive CD device: $cdRom"
} catch {
Write-Output "Failed to eject configdrive CD device: $cdRom"
}
} else {
Write-Output "No configdrive CD device found with the label: $label"
}
# Tell cloudbase-init not to reboot now and rerun the plugin on the next boot.
exit 1002
'@
$content | Out-File -Encoding ASCII -FilePath 'C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\eject_configdrive.ps1'
- 配置Cloudbase-Init為自啟動。
Set-Service -Name 'cloudbase-init' -StartupType Automatic