cloudbase / cloudbase-init

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

Problem to set password in Windows 10/Server 2016/Server 2019 (Proxmox 6.1) #36

Closed VenomTF closed 4 years ago

VenomTF commented 4 years ago

Greetings!

Using Proxmox version 6.1, I had a problem setting a password in Windows 10 (and Server 2016/Server 2019 too). I use the "OpenStack (configuration drive)" service to collect meta data from Cloud-Init. сloudbase-init.conf settings:

[DEFAULT] username=Venom groups=Administrators inject_user_password=true first_logon_behaviour=no config_drive_raw_hhd=true config_drive_cdrom=true config_drive_vfat=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= mtu_use_dhcp_config=true ntp_use_dhcp_config=true local_scripts_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\ metadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService plugins=cloudbaseinit.plugins.common.networkconfig.NetworkConfigPlugin, cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin allow_reboot=false stop_service_on_exit=false

Using cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin plugin, the password is incorrect. As a result, it is impossible to log into the system, each time receiving an error about the wrong password. We see the following information in the logs (I provide the part where the SetUserPasswordPlugin plugin is worked out):

2020-02-11 13:02:00.909 2956 INFO cloudbaseinit.init [-] Executing plugin 'SetUserPasswordPlugin' 2020-02-11 13:02:00.909 2956 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 2020-02-11 13:02:00.924 2956 DEBUG cloudbaseinit.metadata.services.base [-] Using cached copy of metadata: 'openstack/latest/meta_data.json' _get_cache_data C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\lib\site-packages\cloudbaseinit\metadata\services\base.py:74 2020-02-11 13:02:00.924 2956 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:87 2020-02-11 13:02:00.956 2956 INFO cloudbaseinit.plugins.common.setuserpassword [-] Password succesfully updated for user Venom 2020-02-11 13:02:00.971 2956 INFO cloudbaseinit.plugins.common.setuserpassword [-] Cannot set the password in the metadata as it is not supported by this service 2020-02-11 13:02:00.971 2956 DEBUG cloudbaseinit.metadata.services.configdrive [-] Deleting metadata folder: 'C:\Windows\TEMP\tmp1cipklhi' cleanup C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\lib\site-packages\cloudbaseinit\metadata\services\configdrive.py:86 2020-02-11 13:02:00.971 2956 INFO cloudbaseinit.init [-] Plugins execution done

It turns out that no matter what password is set, a random password will be set immediately after reading the password from the meta data.

Perhaps I made a mistake somewhere in the cloudbase-init.conf settings? However, other plugins work correctly (except for cloudbaseinit.plugins.windows.createuser.CreateUserPlugin).

ader1990 commented 4 years ago

Hello,

The implementation of ConfigDrive metadata service looks for the value of key admin_pass in the meta_data.json file from the config drive.

The full path of the meta_data.json file is config_drive_root/openstack/latest/meta_data.json.

A good example of a valid config drive structure can be found here: https://github.com/cloudbase/cloudbase-init-test-resources/tree/master/openstack/cloudbase-init-metadata

Can you check that the key is properly set?

Thank you, Adrian Vladu

VenomTF commented 4 years ago

To my surprise, all I found in meta_data.json was this:

{
     "uuid": "acdcbcbcbc28d5e15eaa19874419f3edd31d794d",
     "network_config": { "content_path": "/content/0000" }
}

If I understand correctly, then it means that incorrect meta_data.json is generated in config drive to begin with, and it lacks not only admin_pass key, but any other keys as well (compared with example from here https://github.com/cloudbase/cloudbase-init-test-resources/blob/master/openstack/cloudbase-init.conf).

How can I resolve this error? Thanks for your response in advance!

ader1990 commented 4 years ago

@VenomTF from my limited experience with proxmox, it does not support setting the admin_pass key. But you can use the userdata feature, where you can specify in cloud-config format the user/pass you want to be created. Here you can find a good example: https://github.com/cloudbase/cloudbase-init/issues/26

Or you can use the userdata in powershell format:

#ps1
net user /add username password
net localgroup /add Administrators username
VenomTF commented 4 years ago

@ader1990 when I use userdata feature, I get something like this:

2020-02-19 13:08:55.597 3820 INFO cloudbaseinit.init [-] Executing plugin 'UserDataPlugin'
2020-02-19 13:08:55.597 3820 DEBUG cloudbaseinit.plugins.common.userdata [-] User data content length: 208 execute C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\lib\site-packages\cloudbaseinit\plugins\common\userdata.py:50
2020-02-19 13:08:55.597 3820 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.utils.template_engine.jinja2_template.Jinja2TemplateEngine' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\lib\site-packages\cloudbaseinit\utils\classloader.py:27
2020-02-19 13:08:56.238 3820 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
2020-02-19 13:08:56.754 3820 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
2020-02-19 13:08:56.754 3820 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
2020-02-19 13:08:56.754 3820 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
2020-02-19 13:08:56.769 3820 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
2020-02-19 13:08:56.769 3820 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
2020-02-19 13:08:56.769 3820 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
2020-02-19 13:08:56.816 3820 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
2020-02-19 13:08:56.816 3820 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
2020-02-19 13:08:56.816 3820 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
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfig [-] Plugin 'hostname' is disabled
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfig [-] Plugin 'manage_etc_hosts' is disabled
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfig [-] Plugin 'fqdn' is disabled
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfig [-] Plugin 'password' is disabled
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfig [-] Plugin 'chpasswd' is disabled
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfig [-] Plugin 'users' is disabled
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfig [-] Plugin 'package_upgrade' is disabled
2020-02-19 13:08:56.816 3820 DEBUG cloudbaseinit.metadata.services.configdrive [-] Deleting metadata folder: 'C:\\Windows\\TEMP\\tmpgco68w_k' cleanup C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\lib\site-packages\cloudbaseinit\metadata\services\configdrive.py:86
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.init [-] Plugins execution done
ader1990 commented 4 years ago

@ader1990 when I use userdata feature, I get something like this:

2020-02-19 13:08:55.597 3820 INFO cloudbaseinit.init [-] Executing plugin 'UserDataPlugin'
2020-02-19 13:08:55.597 3820 DEBUG cloudbaseinit.plugins.common.userdata [-] User data content length: 208 execute C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\lib\site-packages\cloudbaseinit\plugins\common\userdata.py:50
2020-02-19 13:08:55.597 3820 DEBUG cloudbaseinit.utils.classloader [-] Loading class 'cloudbaseinit.utils.template_engine.jinja2_template.Jinja2TemplateEngine' load_class C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\lib\site-packages\cloudbaseinit\utils\classloader.py:27
2020-02-19 13:08:56.238 3820 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
2020-02-19 13:08:56.754 3820 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
2020-02-19 13:08:56.754 3820 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
2020-02-19 13:08:56.754 3820 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
2020-02-19 13:08:56.769 3820 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
2020-02-19 13:08:56.769 3820 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
2020-02-19 13:08:56.769 3820 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
2020-02-19 13:08:56.816 3820 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
2020-02-19 13:08:56.816 3820 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
2020-02-19 13:08:56.816 3820 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
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfig [-] Plugin 'hostname' is disabled
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfig [-] Plugin 'manage_etc_hosts' is disabled
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfig [-] Plugin 'fqdn' is disabled
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfig [-] Plugin 'password' is disabled
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfig [-] Plugin 'chpasswd' is disabled
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfig [-] Plugin 'users' is disabled
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.plugins.common.userdataplugins.cloudconfig [-] Plugin 'package_upgrade' is disabled
2020-02-19 13:08:56.816 3820 DEBUG cloudbaseinit.metadata.services.configdrive [-] Deleting metadata folder: 'C:\\Windows\\TEMP\\tmpgco68w_k' cleanup C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\lib\site-packages\cloudbaseinit\metadata\services\configdrive.py:86
2020-02-19 13:08:56.816 3820 INFO cloudbaseinit.init [-] Plugins execution done

In this case, it seems that cloudbase-init.conf contains cloud_config_plugins config value. If you define that value, Cloudbase-Init will use it to filter the cloud-config plugins.

Also, some of the plugins are not supported by Cloudbase-Init, please check https://cloudbase-init.readthedocs.io/en/latest/userdata.html#cloud-config for the full supported set.

Thank you, Adrian Vladu

VenomTF commented 4 years ago

Thanks for help!