cloudbase / cloudbase-init

Cross-platform instance initialization
http://openstack.org
Apache License 2.0
414 stars 150 forks source link

NoCloud config drive fails on Windows Server 2019/2022 #89

Closed rosskirkpat closed 1 month ago

rosskirkpat commented 2 years ago

We (The K8s on Windows team at SUSE Rancher) are unable to use cloudbase-init with the NoCloud metadata service due to cloudbase-init not handling underscores in the user-data.iso that is generated by go-diskfs.

When user-data.iso files are created by rancher/machine using go-diskfs, a linux host will have meta-data and user-data files in the ISO once it is mounted on a vSphere host. cloudinit handles the uppercase names using underscores: https://github.com/canonical/cloud-init/blob/main/cloudinit/cmd/query.py#L139-L205

When user-data.iso files are created by rancher/machine using go-diskfs, a Windows host will have META_DATA and USER_DATA files in the ISO once it is mounted on a vSphere host. This causes cloudbase-init to fail as it is looking for meta-data or META-DATA.

The ISO standard does not allow for - to be used in the name (see below).

10.1.1 ISO 9660 Level 1 Specification
A file name consists of a base name and an extension, separated by a full stop character ("."). 
Under ISO 9660 Level 1, the length of the base name may not exceed eight characters and the 
extension may not exceed three characters. In addition, a version number consisting of a 
semicolon and an integer must follow the file identifier. The base name and extension may only 
contain characters from the following set: the upper case alphanumeric characters (A- Z, 0-9) 
and the underscore ("_"). Collectively, these requirements are often referred to as the "8.3" ("8 
dot 3") file naming convention. These limitations exist primarily to accommodate older 
computer systems that cannot handle longer file names. 
Preferred format: BASENAME (1..8 characters) "." EXTENSION (3 characters)
Allowable format: BASENAME (1..8 characters) "." EXTENSION (1..3 characters)
Actual format 
on archive medium: BASENAME (1..8 characters) "." EXTENSION (1..3 characters) ";1

Ref: https://github.com/rancher/rancher/issues/36653 https://github.com/rancher/windows/issues/155

rosskirkpat commented 2 years ago

The fix should be relatively simple - I threw together a commit here.

Unfortunately, I am unable to fully build cloudbase-init from source for Windows amd64 to verify that these changes work

ader1990 commented 2 years ago

Hi @rosskirkpat,

I have managed to fix the Github Actions to produce cloudbase-init installers. I have triggered a run with your master branch and it produced a working MSI artifact that you can use and test:

https://github.com/ader1990/cloudbase-init-installer-1/actions

You can also fork the installer project and trigger the github actions.

Once you get to test the artifact in your environment, please give me a ping so that we can proceed with the formal review.

Thank you, Adrian

travisghansen commented 2 years ago

Ran into this exact same issue trying to use it with proxmox cloud-init integration. The proposed patch does not work for me, and I'm pretty sure it won't fix a bunch of other respective issues as well.

Initial error:

2022-05-15 08:57:38.043 3360 DEBUG cloudbaseinit.metadata.services.osconfigdrive.windows [-] F:\meta-data not found _meta_data_file_exists C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\lib\site-packages\cloudbaseinit\metadata\services\osconfigdrive\windows.py:58
2022-05-15 08:57:38.043 3360 DEBUG cloudbaseinit.metadata.services.osconfigdrive.windows [-] Looking for a Config Drive with label 'cidata' on 'F:\'. Found mismatching label 'cidata'. _check_for_config_drive C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\lib\site-packages\cloudbaseinit\metadata\services\osconfigdrive\windows.py:70

Error after patch:

2022-05-15 09:35:56.862 3528 WARNING cloudbaseinit.metadata.services.osconfigdrive.windows [-] Config type iso not found in cdrom location; Error: 'TypeError("join() argument must be str or bytes, not 'list'",)'

For reference:

ls F:\

    Directory: F:\

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
--r--           5/15/2022  8:18 AM             54 META_DATA
--r--           5/15/2022  8:18 AM            218 NETWORK_CONFIG
--r--           5/15/2022  8:18 AM            306 USER_DATA
--r--           5/15/2022  8:18 AM              0 VENDOR_DATA

PS C:\Users\Administrator> cat F:\META_DATA
instance-id: bf2100ee538186a86bae00e6f2cf332ca33e0448

PS C:\Users\Administrator> cat F:\NETWORK_CONFIG
version: 1
config:
    - type: physical
      name: eth0
      mac_address: '7a:a7:57:d1:24:54'
      subnets:
      - type: dhcp4
    - type: nameserver
      address:
      - '172.29.0.1'
      search:
      - 'lan'

PS C:\Users\Administrator> cat F:\USER_DATA
#cloud-config
hostname: ci
manage_etc_hosts: true
password: ...
ssh_authorized_keys:
  - ...
chpasswd:
  expire: False
users:
  - default
package_upgrade: true

PS C:\Users\Administrator> cat F:\VENDOR_DATA
balaji-dutt commented 7 months ago

Is there any workaround for this problem? I'm hitting this issue when provisioning a Windows 2022 VM in Proxmox 8.1 as well.

ader1990 commented 7 months ago

Is there any workaround for this problem? I'm hitting this issue when provisioning a Windows 2022 VM in Proxmox 8.1 as well.

Hello @balaji-dutt,

I will create an MSI installer with the above possible fix. Will update this thread when it is ready.

Thanks.

balaji-dutt commented 7 months ago

Hello @balaji-dutt,

I will create an MSI installer with the above possible fix. Will update this thread when it is ready.

Thanks.

Hi @ader1990 please note that as Proxmox 8.1 (Source) Proxmox generates NoCloud config files such as user-data or meta-data which as per the original issue should be recognised by Cloudbase-init. So it's confusing why we get errors like "Found mismatching label".

ader1990 commented 7 months ago

@balaji-dutt can you share an ISO here? should be rather small and you can use the dd tool to get it.

balaji-dutt commented 7 months ago

@balaji-dutt can you share an ISO here? should be rather small and you can use the dd tool to get it.

Hi @ader1990 sure. I'll need some time to remove a bunch of sensitive data in the user-data file but will upload it here once I'm ready.

ader1990 commented 7 months ago

@balaji-dutt can you share an ISO here? should be rather small and you can use the dd tool to get it.

Hi @ader1990 sure. I'll need some time to remove a bunch of sensitive data in the user-data file but will upload it here once I'm ready.

Sure. It's best to have a closest to real one, so that I can reproduce the issue and fix it.

balaji-dutt commented 7 months ago

@ader1990 Sorry for the delay in getting back on this. Attached is a NoConfig image generated by Proxmox in ISO format, that is triggering the "Found mismatching label" when used with a Windows 2022 VM on Proxmox 8.1.

Please note I have to upload it as a Zip file as GitHub does not allow ISO files to be directly uploaded.

cloudinit.zip

ader1990 commented 7 months ago

Hello @balaji-dutt,

The mismatching label is an incomplete debug log, which needs fixing. In your case, https://github.com/cloudbase/cloudbase-init/blob/master/cloudbaseinit/metadata/services/osconfigdrive/windows.py#L65, it cannot find the meta-data/user-data file, because the ISO has META_DATA/USER_DATA files. Will come back with a fix.

Thanks.

ader1990 commented 7 months ago

Hello,

I have created a WIP branch here: https://github.com/ader1990/cloudbase-init-1/tree/fix_nocloud_metadata . As it is rather opaque and maybe undesired behaviour to have both meta_data/user_data and meta-data/user-data being tried and used, I have made those values configurable via the cloudbase-init config file.

Example of the default options in the cloudbase-init.conf file:

[nocloud]
metadata_file = "meta-data"
userdata_file = "user-data"

Thanks.

ader1990 commented 6 months ago

@balaji-dutt You can find a test MSI installer here -> https://github.com/ader1990/cloudbase-init-installer-1/actions/runs/7453600623.

Tested with your provided ISO and it worked as expected.

You need to set the NoCloud metadata service and the correct paths for the meta/user data.

[DEFAULT]
## other configs
metadata_services=cloudbaseinit.metadata.services.nocloudservice.NoCloudConfigDriveService
[nocloud]
metadata_file=META_DATA
userdata_file=USER_DATA
balaji-dutt commented 6 months ago

Hi @ader1990

@balaji-dutt You can find a test MSI installer here -> https://github.com/ader1990/cloudbase-init-installer-1/actions/runs/7453600623.

Tested with your provided ISO and it worked as expected.

You need to set the NoCloud metadata service and the correct paths for the meta/user data.

[DEFAULT]
## other configs
metadata_services=cloudbaseinit.metadata.services.nocloudservice.NoCloudConfigDriveService
[nocloud]
metadata_file=META_DATA
userdata_file=USER_DATA

I can confirm that this dev version does indeed work with the NoCloud ISO that is generated by Proxmox. Debug log below the fold for reference:

Debug log ``` 2024-01-11 09:04:18.763 2432 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.osutils.windows.WindowsUtils' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:20.029 2432 DEBUG cloudbaseinit.osutils.windows [-] Checking if service exists: cloudbase-init check_service_exists C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py:1097 2024-01-11 09:04:20.029 2432 DEBUG cloudbaseinit.osutils.windows [-] Getting service username: cloudbase-init get_service_username C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py:1230 2024-01-11 09:04:20.045 2432 DEBUG cloudbaseinit.osutils.windows [-] Resetting password for service user: .\cloudbase-init reset_service_password C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py:1253 2024-01-11 09:04:20.201 2432 DEBUG cloudbaseinit.osutils.windows [-] Setting service credentials: cloudbase-init set_service_credentials C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py:1213 2024-01-11 09:04:20.591 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.osutils.windows.WindowsUtils' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:20.654 2552 DEBUG cloudbaseinit.osutils.windows [-] Checking if service exists: cloudbase-init check_service_exists C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py:1097 2024-01-11 09:04:20.654 2552 DEBUG cloudbaseinit.osutils.windows [-] Getting service username: cloudbase-init get_service_username C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py:1230 2024-01-11 09:04:20.686 2552 DEBUG cloudbaseinit.osutils.windows [-] Resetting password for service user: .\cloudbase-init reset_service_password C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py:1253 2024-01-11 09:04:21.342 2552 DEBUG cloudbaseinit.osutils.windows [-] Setting service credentials: cloudbase-init set_service_credentials C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py:1213 2024-01-11 09:04:21.373 2552 DEBUG cloudbaseinit.init [-] No need to respawn process. Current user: BASEVM-WIN2022$. Service user: cloudbase-init _reset_service_password_and_respawn C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\init.py:137 2024-01-11 09:04:21.389 2552 INFO cloudbaseinit.init [-] Cloudbase-Init version: 1.1.5.dev661 2024-01-11 09:04:21.389 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.windows.createuser.CreateUserPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:21.530 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.092 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.108 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.mtu.MTUPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.154 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.186 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdata.UserDataPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.295 2552 INFO cloudbaseinit.init [-] Executing plugins for stage 'PRE_NETWORKING': 2024-01-11 09:04:22.295 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.windows.createuser.CreateUserPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.311 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.311 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.311 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.mtu.MTUPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.311 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.326 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdata.UserDataPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.326 2552 INFO cloudbaseinit.init [-] Executing plugins for stage 'PRE_METADATA_DISCOVERY': 2024-01-11 09:04:22.326 2552 INFO cloudbaseinit.init [-] Executing plugin 'MTUPlugin' 2024-01-11 09:04:22.326 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.osutils.windows.WindowsUtils' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.342 2552 DEBUG cloudbaseinit.plugins.common.mtu [-] Could not obtain the MTU configuration via DHCP for interface "D2:75:84:09:AC:A4" execute C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\plugins\common\mtu.py:45 2024-01-11 09:04:22.342 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.metadata.services.nocloudservice.NoCloudConfigDriveService' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.764 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.metadata.services.osconfigdrive.windows.WindowsConfigDriveManager' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.811 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.osutils.windows.WindowsUtils' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.811 2552 DEBUG cloudbaseinit.metadata.services.osconfigdrive.windows [-] Looking for Config Drive iso in hdd with expected label cidata get_config_drive_files C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\metadata\services\osconfigdrive\windows.py:221 2024-01-11 09:04:22.826 2552 DEBUG cloudbaseinit.metadata.services.osconfigdrive.windows [-] Looking for Config Drive iso in cdrom with expected label cidata get_config_drive_files C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\metadata\services\osconfigdrive\windows.py:221 2024-01-11 09:04:22.826 2552 INFO cloudbaseinit.metadata.services.osconfigdrive.windows [-] Config Drive found on D:\ 2024-01-11 09:04:22.858 2552 DEBUG cloudbaseinit.metadata.services.baseconfigdrive [-] Metadata copied to folder: 'C:\\Windows\\TEMP\\tmpguwb61bx' load C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\metadata\services\baseconfigdrive.py:81 2024-01-11 09:04:22.873 2552 INFO cloudbaseinit.init [-] Metadata service loaded: 'NoCloudConfigDriveService' 2024-01-11 09:04:22.873 2552 DEBUG cloudbaseinit.init [-] Instance id: ce87df539d988e188feb77c39f462094734089f9 configure_host C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\init.py:202 2024-01-11 09:04:22.873 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.windows.createuser.CreateUserPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.889 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.889 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.889 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.mtu.MTUPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.904 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.904 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdata.UserDataPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.904 2552 INFO cloudbaseinit.init [-] Executing plugins for stage 'MAIN': 2024-01-11 09:04:22.920 2552 INFO cloudbaseinit.init [-] Executing plugin 'CreateUserPlugin' 2024-01-11 09:04:22.920 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.osutils.windows.WindowsUtils' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:22.920 2552 INFO cloudbaseinit.plugins.common.createuser [-] Setting password for existing user "Administrator" 2024-01-11 09:04:23.404 2552 DEBUG cloudbaseinit.osutils.windows [-] Creating logon session for user: True\Administrator create_user_logon_session C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py:651 2024-01-11 09:04:26.123 2552 DEBUG cloudbaseinit.utils.retry_decorator [-] Got expected exception Cannot load user profile: 'The device is not ready.' while calling function cloudbaseinit.osutils.windows.WindowsUtils.create_user_logon_session. Retries left: 3. Time left: undefined. Time elapsed: 2.718864917755127 Retrying in 1 seconds. inner C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\retry_decorator.py:72 2024-01-11 09:04:27.132 2552 DEBUG cloudbaseinit.osutils.windows [-] Creating logon session for user: True\Administrator create_user_logon_session C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py:651 2024-01-11 09:04:27.139 2552 DEBUG cloudbaseinit.utils.retry_decorator [-] Got expected exception Cannot load user profile: 'The device is not ready.' while calling function cloudbaseinit.osutils.windows.WindowsUtils.create_user_logon_session. Retries left: 2. Time left: undefined. Time elapsed: 3.7347207069396973 Retrying in 1 seconds. inner C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\retry_decorator.py:72 2024-01-11 09:04:28.154 2552 DEBUG cloudbaseinit.osutils.windows [-] Creating logon session for user: True\Administrator create_user_logon_session C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py:651 2024-01-11 09:04:28.155 2552 DEBUG cloudbaseinit.utils.retry_decorator [-] Got expected exception Cannot load user profile: 'The device is not ready.' while calling function cloudbaseinit.osutils.windows.WindowsUtils.create_user_logon_session. Retries left: 1. Time left: undefined. Time elapsed: 4.75107741355896 Retrying in 1 seconds. inner C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\retry_decorator.py:72 2024-01-11 09:04:29.175 2552 DEBUG cloudbaseinit.osutils.windows [-] Creating logon session for user: True\Administrator create_user_logon_session C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py:651 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser [-] Cannot create a user logon session for user: "Administrator": cloudbaseinit.exception.LoadUserProfileCloudbaseInitException: Cannot load user profile: 'The device is not ready.' 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser Traceback (most recent call last): 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser File "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\plugins\windows\createuser.py", line 30, in _create_user_logon 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser token = osutils.create_user_logon_session(user_name, 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser File "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\retry_decorator.py", line 49, in inner 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser with excutils.save_and_reraise_exception() as ctxt: 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser File "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\oslo_utils\excutils.py", line 227, in __exit__ 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser self.force_reraise() 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser File "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\oslo_utils\excutils.py", line 200, in force_reraise 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser raise self.value 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser File "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\retry_decorator.py", line 47, in inner 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser return f(*args, **kwargs) 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser ^^^^^^^^^^^^^^^^^^ 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser File "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py", line 672, in create_user_logon_session 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser raise exception.LoadUserProfileCloudbaseInitException( 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser cloudbaseinit.exception.LoadUserProfileCloudbaseInitException: Cannot load user profile: 'The device is not ready.' 2024-01-11 09:04:29.187 2552 ERROR cloudbaseinit.plugins.windows.createuser 2024-01-11 09:04:29.219 2552 INFO cloudbaseinit.init [-] Executing plugin 'SetUserPasswordPlugin' 2024-01-11 09:04:29.219 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.osutils.windows.WindowsUtils' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:29.235 2552 DEBUG cloudbaseinit.plugins.common.setuserpassword [-] Generating a random user password _set_password C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\plugins\common\setuserpassword.py:82 2024-01-11 09:04:29.375 2552 INFO cloudbaseinit.plugins.common.setuserpassword [-] Password succesfully updated for user Administrator 2024-01-11 09:04:29.375 2552 INFO cloudbaseinit.plugins.common.setuserpassword [-] Cannot set the password in the metadata as it is not supported by this service 2024-01-11 09:04:29.375 2552 INFO cloudbaseinit.init [-] Executing plugin 'SetHostNamePlugin' 2024-01-11 09:04:29.375 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.osutils.windows.WindowsUtils' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:29.391 2552 DEBUG cloudbaseinit.plugins.common.sethostname [-] Hostname not found in metadata execute C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\plugins\common\sethostname.py:30 2024-01-11 09:04:29.391 2552 INFO cloudbaseinit.init [-] Executing plugin 'ExtendVolumesPlugin' 2024-01-11 09:04:29.391 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.osutils.windows.WindowsUtils' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:29.391 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.utils.windows.storage.vds_storage_manager.VDSStorageManager' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:31.094 2552 INFO cloudbaseinit.utils.windows.storage.vds_storage_manager [-] Extending volume "\\?\GLOBALROOT\Device\HarddiskVolume2" with 443455373312 bytes 2024-01-11 09:04:31.797 2552 INFO cloudbaseinit.init [-] Executing plugin 'UserDataPlugin' 2024-01-11 09:04:31.797 2552 DEBUG cloudbaseinit.plugins.common.userdata [-] User data content length: 2626 execute C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\plugins\common\userdata.py:50 2024-01-11 09:04:31.797 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.osutils.windows.WindowsUtils' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:31.813 2552 DEBUG cloudbaseinit.osutils.windows [-] Assigning admin ACLs on path: C:\Program Files\Cloudbase Solutions\Cloud-Init\log set_path_admin_acls C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py:1765 2024-01-11 09:04:31.844 2552 DEBUG cloudbaseinit.plugins.common.userdata [-] Writing userdata to: C:\Program Files\Cloudbase Solutions\Cloud-Init\log\userdata.txt _write_userdata C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\plugins\common\userdata.py:77 2024-01-11 09:04:31.876 2552 DEBUG cloudbaseinit.plugins.common.userdata [-] Processing userdata _process_user_data C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\plugins\common\userdata.py:109 2024-01-11 09:04:31.876 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.parthandler.PartHandlerPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:31.906 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.cloudconfig.CloudConfigPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:31.922 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.cloudboothook.CloudBootHookPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:31.938 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.shellscript.ShellScriptPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:31.969 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.multipartmixed.MultipartMixedPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:31.985 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.heat.HeatPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:32.000 2552 DEBUG cloudbaseinit.plugins.common.userdata [-] User data content: cloudConfig: | Content-Type: multipart/mixed; boundary="==NewPart==" MIME-Version: 1.0 --==NewPart== Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config" set_hostname: adhost01.sub.domain.tld set_timezone: Asia/Singapore --==NewPart== Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="post-clone-networking.ps1" # Get all network interfaces $networkInterfaces = Get-NetAdapter foreach ($interface in $networkInterfaces) { # Set the network category of the interface to "Private" Set-NetConnectionProfile -InterfaceIndex $interface.InterfaceIndex -NetworkCategory Private Write-Output "Network category set to 'Private' for interface $($interface.Name)." # break # Stop searching after setting the first interface } # IPv4 Ping netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" protocol="icmpv4:8,any" dir=in action=allow --==NewPart== Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="schedule-dhcp-reset.ps1" # Source: https://gist.github.com/it3xl/c897b2c054e8ed19eb687bd1b9bfbb4c $ErrorActionPreference = 'Stop' #### Start of Main Logic ########################### $taskName = "dhcp-reset" $accountId = "NT AUTHORITY\SYSTEM"; #$accountId = "NT AUTHORITY\LOCAL SERVICE"; $task = Get-ScheduledJob -Name $taskName -ErrorAction SilentlyContinue if ($task -ne $null) { Unregister-ScheduledJob $task -Confirm:$false Write-Host " @ The old ""$taskName"" PowerShell job has been unregistered"; Write-Host; } # Uncomment the following exit command to only delete your job. # exit; # Shchedule your job. Using of -AtStartup as an example. $trigger = New-JobTrigger -AtStartup; $options = New-ScheduledJobOption -StartIfOnBattery -RunElevated; Write-Host " @ Registering of ""$taskName"" job"; Register-ScheduledJob -Name $taskName -Trigger $trigger -ScheduledJobOption $options ` -ScriptBlock { (ipconfig /release) -and (ipconfig /renew) Write-Host Your job has been launched!; } $principal = New-ScheduledTaskPrincipal -UserID $accountId ` -LogonType ServiceAccount -RunLevel Highest; $psJobsPathInScheduler = "\Microsoft\Windows\PowerShell\ScheduledJobs"; $someResult = Set-ScheduledTask -TaskPath $psJobsPathInScheduler ` -TaskName $taskName -Principal $principal #### End of Main Logic ########################### _parse_mime C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\plugins\common\userdata.py:84 2024-01-11 09:04:32.031 2552 DEBUG cloudbaseinit.plugins.common.userdata [-] Executing userdata plugin: MultipartMixedPlugin _process_part C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\plugins\common\userdata.py:145 2024-01-11 09:04:32.031 2552 DEBUG cloudbaseinit.plugins.common.userdata [-] Executing userdata plugin: CloudConfigPlugin _process_part C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\plugins\common\userdata.py:145 2024-01-11 09:04:32.047 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.cloudconfigplugins.write_files.WriteFilesPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:32.063 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.cloudconfigplugins.set_timezone.SetTimezonePlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:32.078 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.cloudconfigplugins.set_timezone.SetTimezonePlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:32.078 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.cloudconfigplugins.set_hostname.SetHostnamePlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:32.094 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.cloudconfigplugins.set_hostname.SetHostnamePlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:32.110 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.cloudconfigplugins.set_ntp.SetNtpPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:32.125 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.cloudconfigplugins.groups.GroupsPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:32.125 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.cloudconfigplugins.users.UsersPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:32.203 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.plugins.common.userdataplugins.cloudconfigplugins.runcmd.RunCmdPlugin' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:32.219 2552 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfigplugins.set_timezone [-] Changing timezone to 'Asia/Singapore' 2024-01-11 09:04:32.219 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.osutils.windows.WindowsUtils' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:32.219 2552 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfigplugins.set_hostname [-] Changing hostname to 'adhost01.srv.dutt.network' 2024-01-11 09:04:32.234 2552 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.osutils.windows.WindowsUtils' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\utils\classloader.py:27 2024-01-11 09:04:32.250 2552 INFO cloudbaseinit.utils.hostname [-] Setting hostname: adhost01 2024-01-11 09:04:32.484 2552 DEBUG cloudbaseinit.metadata.services.baseconfigdrive [-] Deleting metadata folder: 'C:\\Windows\\TEMP\\tmpguwb61bx' cleanup C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\metadata\services\baseconfigdrive.py:93 2024-01-11 09:04:32.484 2552 INFO cloudbaseinit.init [-] Rebooting ```

I have a question - currently the [nocloud] section only supports metadata_file and userdata_file. Given that the Proxmox NoCloud ISO also includes NETWORK_CONFIG and VENDOR_DATA would it be better to include options to set the path for these files as well?

balaji-dutt commented 6 months ago

Hi @ader1990 the beta version of the Cloudbase-init MSI is as of December 2023, which does not incorporate the fix which is in the Test MSI. May I know when the next beta release is expected?