hashicorp/vagrant · error · Vagrant::Errors::NetworkManagerNotInstalled

Vagrant was instructed to configure the %{device} network de

Error message

Vagrant was instructed to configure the %{device} network device to
be managed by NetworkManager. However, the configured guest VM does
not have NetworkManager installed. To fix this error please remove
the `nm_controlled` setting from local Vagrantfile. If NetworkManager
is required to manage the network devices, please use a box with
NetworkManager installed.

What it means

Error "Vagrant was instructed to configure the %{device} network device to be managed by NetworkManager. However, the configured guest VM does not have NetworkManager installed. To fix this error please remove the `nm_controlled` setting from local Vagrantfile. If NetworkManager is required to manage the network devices, please use a box with NetworkManager installed." thrown in hashicorp/vagrant.

Source

Thrown at plugins/guests/alt/cap/configure_networks.rb:51

              # Now check if the device is actively being managed by NetworkManager
              nm_controlled = nm_controlled?(comm, network[:device])
            end

            if !extra_opts.key?(:nm_controlled)
              extra_opts[:nm_controlled] = !!nm_controlled
            end

            extra_opts[:nm_controlled] = case extra_opts[:nm_controlled]
                                      when true
                                        "yes"
                                      when false, nil
                                        "no"
                                      else
                                        extra_opts[:nm_controlled].to_s
                                      end

            if extra_opts[:nm_controlled] == "yes" && !nmcli_installed
              raise Vagrant::Errors::NetworkManagerNotInstalled, device: network[:device]
            end

            # Render a new configuration
            template_options = extra_opts.merge(network)

            # ALT expects netmasks to be in the CIDR notation, but users may
            # specify IPV4 netmasks like "255.255.255.0". This magic converts
            # the netmask to the proper value.
            if template_options[:netmask] && template_options[:netmask].to_s.include?(".")
              template_options[:netmask] = (32-Math.log2((IPAddr.new(template_options[:netmask], Socket::AF_INET).to_i^0xffffffff)+1)).to_i
            end

            options_entry = TemplateRenderer.render("guests/alt/network_#{network[:type]}", options: template_options)

            # Upload the new configuration
            options_remote_path = "/tmp/vagrant-network-entry-#{network[:device]}-#{Time.now.to_i}-#{i}"
            ipv4_address_remote_path = "/tmp/vagrant-network-ipv4-address-entry-#{network[:device]}-#{Time.now.to_i}-#{i}"
            ipv4_route_remote_path = "/tmp/vagrant-network-ipv4-route-entry-#{network[:device]}-#{Time.now.to_i}-#{i}"

View on GitHub (pinned to 35f3160f4a)

When it happens

Trigger: Thrown at plugins/guests/alt/cap/configure_networks.rb:51 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of hashicorp/vagrant@35f3160f4a (2026-08-21). Data as JSON: /api/errors/774ee20f34689228. Report an issue: GitHub.