Насколько я понимаю, серверные образы Oracle по умолчанию *1040* используют Cloudbase-Init вместе с файлом Unattend. xml для генерации пароля для пользователя, но мне любопытно узнать о специфике этого, поскольку я пытаясь создать свои собственные изображения с предварительно установленным дополнительным программным обеспечением. Я хочу сгенерировать случайный пароль и явно не требовать от пользователя его изменения . С учетом сказанного, вот что я попробовал (я включил только обобщающую часть Unattend. xml файлов):
Попытка # 1
Для моего первого Попытка, я приложил все усилия, чтобы подражать тому, что я мог (насколько я знаю) сказать, что изображения по умолчанию делали. Это те же файлы конфигурации unattend и cloubase, которые извлечены из обобщенного экземпляра с использованием стандартного образа Oracle Windows 2019. При их использовании пользователю предлагается изменить свой пароль при входе в систему.
Unattend. xml
<settings pass="generalize">
<component name="Microsoft-Windows-PnpSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PersistAllDeviceInstalls>true</PersistAllDeviceInstalls>
</component>
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Order>1</Order>
<Path>cmd.exe /c ""c:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Scripts\cloudbase-init.exe" --config-file "c:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init-unattend.conf" && exit 1 || exit 2"</Path>
<Description>Run Cloudbase-Init to set the hostname</Description>
<WillReboot>OnRequest</WillReboot>
</RunSynchronousCommand>
</RunSynchronous>
</component>
</settings>
cloudbase-init-unattend.conf
[DEFAULT]
username=opc
groups=Administrators
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-unattend.log
default_log_levels=comtypes=INFO,suds=INFO,iso8601=WARN,requests=WARN
logging_serial_port_settings=COM1,9600,N,8
local_scripts_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\
metadata_services=cloudbaseinit.metadata.services.httpservice.HttpService
plugins=cloudbaseinit.plugins.windows.winrmlistener.ConfigWinRMListenerPlugin,cloudbaseinit.plugins.common.userdata.UserDataPlugin
allow_reboot=false
stop_service_on_exit=false
check_latest_version=false
Попытка # 2
Для моей второй попытки я попытался добавить в файл автоматической установки команду, из-за которой пользователю не предлагается менять свой пароль. Я использовал те же файлы конфигурации cloubase, что и при попытке № 1. После обобщения пользователю все равно предлагалось выбрать новый пароль.
Unattend. xml
<settings pass="generalize">
<component name="Microsoft-Windows-PnpSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PersistAllDeviceInstalls>true</PersistAllDeviceInstalls>
</component>
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Order>1</Order>
<Path>cmd.exe /c "net user opc /logonpasswordchg:no && exit 1 || exit 2</Path>
<Description>Ensure the opc user does not have to reset their password</Description>
<WillReboot>Never</WillReboot>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>2</Order>
<Path>cmd.exe /c ""c:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Scripts\cloudbase-init.exe" --config-file "c:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init-unattend.conf" && exit 1 || exit 2"</Path>
<Description>Run Cloudbase-Init to set the hostname</Description>
<WillReboot>OnRequest</WillReboot>
</RunSynchronousCommand>
</RunSynchronous>
</component>
</settings>
Попытка # 3
Для В своей третьей попытке я изменил порядок команд в файле Unattend так, что пользователю net было приказано не изменять свой пароль при входе в систему после обработки конфигурации init в cloudbase. Я снова использовал те же файлы конфигурации cloubase, что и при попытке № 1 и № 2. После обобщения пользователю все еще предлагалось выбрать новый пароль.
Unattend. xml
<settings pass="generalize">
<component name="Microsoft-Windows-PnpSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PersistAllDeviceInstalls>true</PersistAllDeviceInstalls>
</component>
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Order>1</Order>
<Path>cmd.exe /c ""c:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Scripts\cloudbase-init.exe" --config-file "c:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init-unattend.conf" && exit 1 || exit 2"</Path>
<Description>Run Cloudbase-Init to set the hostname</Description>
<WillReboot>OnRequest</WillReboot>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>2</Order>
<Path>cmd.exe /c "net user opc /logonpasswordchg:no && exit 1 || exit 2</Path>
<Description>Ensure the opc user does not have to reset their password</Description>
<WillReboot>Never</WillReboot>
</RunSynchronousCommand>
</RunSynchronous>
</component>
</settings>
Ни один из этих подходов не дал того, что я искал. Я также попытался использовать плагин в Cloudbase-Init для генерации пароля, но, похоже, облачный агент Oracle это переопределил, поскольку я был полностью не в состоянии войти через RDP, тогда как без использования плагина Cloudbase я мог войти, но был Невозможно получить доступ к рабочему столу до установки нового пароля.
Возникает вопрос: что здесь не работает? Это проблема конфигурации, или я в корне неправильно понимаю, как работает этот процесс?
Буду признателен за любые предложения, которые могут быть у кого-либо, или за примеры реализации, созданные другими. Спасибо!