New Question

Revision history [back]

click to hide/show revision 1
initial version

Can I setup static IPs without a MAC address on Windows?

Hello everyone, I use Ansible to provision Windows VMs on VCenter and we currently evaluating cloudbase-init.

With our workflow it's not possible to know the MAC of the VM before we build the VM. So, our metadata look like this:

network:
  version: 2
  ethernets:
    id0:
      match:
        name: "Ethernet*"
      addresses:
          - 192.168.0.100
       gateway4: 192.168.0.254
       nameservers:
         addresses:
           - 192.168.0.1
           - 192.168.0.2

However, cloudbase-init doesn't configure the IP and the logs have the following:

INFO cloudbaseinit.init [-] Executing plugin 'NetworkConfigPlugin'
ERROR cloudbaseinit.init [-] plugin 'NetworkConfigPlugin' failed with error ''NoneType' object has no attribute 'lower''
ERROR cloudbaseinit.init [-] 'NoneType' object has no attribute 'lower': AttributeError: 'NoneType' object has no attribute 'lower'
ERROR cloudbaseinit.init Traceback (most recent call last):
ERROR cloudbaseinit.init   File "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\init.py", line 66, in _exec_plugin
ERROR cloudbaseinit.init     (status, reboot_required) = plugin.execute(service,
ERROR cloudbaseinit.init                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR cloudbaseinit.init   File "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\plugins\common\networkconfig.py", line 307, in execute
ERROR cloudbaseinit.init     return self._process_network_details_v2(network_details)
ERROR cloudbaseinit.init            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR cloudbaseinit.init   File "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\plugins\common\networkconfig.py", line 295, in _process_network_details_v2
ERROR cloudbaseinit.init     NetworkConfigPlugin._process_physical_links(
ERROR cloudbaseinit.init   File "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\plugins\common\networkconfig.py", line 197, in _process_physical_links
ERROR cloudbaseinit.init     adapter_name =
ERROR cloudbaseinit.init       osutils.get_network_adapter_name_by_mac_address(
ERROR cloudbaseinit.init                                  |
ERROR cloudbaseinit.init ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR cloudbaseinit.init   File "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py", line 804, in get_network_adapter_name_by_mac_address
ERROR cloudbaseinit.init     iface_index_list = [
ERROR cloudbaseinit.init                          ^
ERROR cloudbaseinit.init   File "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\osutils\windows.py", line 808, in <listcomp>
ERROR cloudbaseinit.init     net_addr["mac_address"].lower() == mac_address.lower()]
ERROR cloudbaseinit.init                                               ^^^^^^^^^^^^^^^^^^^
ERROR cloudbaseinit.init AttributeError: 'NoneType' object has no attribute 'lower'
ERROR cloudbaseinit.init

which is strange because I have seen in the code that it tries to find the interface by name if MAC is not defined. Thus, I suppose my configuration is wrong.

Can someone help me on this?