hashicorp / vagrant

Vagrant is a tool for building and distributing development environments.
https://www.vagrantup.com
Other
26.25k stars 4.43k forks source link

error after update to vagrant 2.3.6 on rhel 8.8 with libvirt #13190

Closed gentooise closed 1 year ago

gentooise commented 1 year ago

Debug output

https://gist.github.com/gentooise/7ed3e521c71a2eb590a3368b3199517d

Of course libvirt is installed:

sudo rpm -q libvirt
libvirt-8.0.0-19.module+el8.8.0+18453+e0bf0d1d.x86_64

Expected behavior

vagrant up should bring VM up without issues.

Actual behavior

vagrant up and vagrant plugin install vagrant-libvirt are failing

Reproduction information

Vagrant version

Vagrant 2.3.6

Host operating system

RHEL 8.8

Guest operating system

Any.

https://app.vagrantup.com/generic/boxes/ubuntu2004

Steps to reproduce

  1. vagrant up
  2. vagrant plugin install vagrant-libvirt

Vagrantfile

https://app.vagrantup.com/generic/boxes/ubuntu2004

chrisroberts commented 1 year ago

I believe this is a duplicate of #13184. Can you please confirm if you have the libvirt development package installed?

gentooise commented 1 year ago

Yes I have libvirt-devel installed. I was using vagrant every day before update.

$ sudo rpm -q libvirt-devel
libvirt-devel-8.0.0-19.module+el8.8.0+18453+e0bf0d1d.x86_64
$ sudo dnf install libvirt-devel
Last metadata expiration check: 0:44:42 ago on Wed 31 May 2023 05:37:11 PM CEST.
Package libvirt-devel-8.0.0-19.module+el8.8.0+18453+e0bf0d1d.x86_64 is already installed.
resolving
Dependencies resolved.
Nothing to do.
Complete!
chrisroberts commented 1 year ago

Looks related to/duplicate of #11020. This comment includes some likely relevant information. However, I'm going to spin up some guests to run some install tests on and see if we can fix some of this on the installer side.

gentooise commented 1 year ago

I tried point 3 (followed CentOS steps here to patch libssh and libk5crypto: https://vagrant-libvirt.github.io/vagrant-libvirt/installation.html#centos) but it's not working. I still see the same exact error even with libraries in /opt/vagrant/embedded/lib64.

I'm trying point 2 and it seems to work but I get an unrelated error:

There are errors in the configuration of this machine. Please fix
the following errors and try again:

vm:
* The host path of the shared folder is missing: ../shared

How can I get synced folders with vagrant under docker?

I have this in Vagrant file: config.vm.synced_folder "../shared", "/shared" which is a folder that I share with all VMs

gentooise commented 1 year ago

After following point 3 (patching libs) the error is always the same, but now referring to lib in /opt:

//opt/vagrant/embedded/lib64/libssh.so.4: undefined reference to `EVP_KDF_derive@OPENSSL_1_1_1b'
//opt/vagrant/embedded/lib64/libssh.so.4: undefined reference to `EVP_KDF_ctrl@OPENSSL_1_1_1b'
//opt/vagrant/embedded/lib64/libssh.so.4: undefined reference to `EVP_KDF_CTX_free@OPENSSL_1_1_1b'
//opt/vagrant/embedded/lib64/libssh.so.4: undefined reference to `EVP_KDF_CTX_new_id@OPENSSL_1_1_1b'
gentooise commented 1 year ago

I think the exact problem is stated in this comment: https://github.com/openssl/openssl/issues/11471#issuecomment-609645505

chrisroberts commented 1 year ago

Yes, that appears to be very relevant. However, an unrelated change in the package generation recently (updating to openssl 3) looks like it might resolve this issue currently. Would you mind trying the recent nightly build and see if that works for you?

gentooise commented 1 year ago

I removed 2.3.6 and all the files, and then picked the vagrant-2.3.7.dev-1.x86_64.rpm:

sudo dnf remove vagrant
sudo rm -rf /opt/vagrant
sudo rpm -i vagrant-2.3.7.dev-1.x86_64.rpm 
vagrant plugin install vagrant-libvirt

and it worked like a charm!

Installing the 'vagrant-libvirt' plugin. This can take a few minutes...
Building native extensions. This could take a while...
Fetching formatador-1.1.0.gem
Fetching fog-core-2.3.0.gem
Fetching fog-xml-0.1.4.gem
Fetching fog-json-1.2.0.gem
Fetching fog-libvirt-0.11.0.gem
Fetching diffy-3.4.2.gem
Fetching vagrant-libvirt-0.12.1.gem
Installed the plugin 'vagrant-libvirt (0.12.1)'!

The only thing, I needed to recreate my machine since it gave these errors on vagrant up:

The guest machine entered an invalid state while waiting for it
to boot. Valid states are 'running'. The machine is in the
'inaccessible' state. Please verify everything is configured
properly and try again.

If the provider you're using has a GUI that comes with it,
it is often helpful to open that and watch the machine, since the
GUI often has more helpful error messages than Vagrant can retrieve.
For example, if you're using VirtualBox, run `vagrant up` while the
VirtualBox GUI is open.

The primary issue for this error is that the provider you're using
is not properly configured. This is very rarely a Vagrant issue.

and then after a vagrant halt, and up again:

==> generic-ubuntu20: Updating domain definition due to configuration change
==> generic-ubuntu20: Error when updating domain settings: Call to virDomainDefineXML failed: XML error: CPU vendor specified without CPU model
Error while creating domain: Call to virDomainDefineXML failed: XML error: CPU vendor specified without CPU model

but vagrant destroy fixed that.

Thank you for the support, I will stick to 2.3.7!

mthbrown commented 1 year ago

@gentooise Doesn't work on Fedora 37. The first parts work including the vagrant plugin install vagrant-libvirt but trying any other command after that such as vagrant destroy or vagrant up results in:

<internal:/opt/vagrant/embedded/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require': /lib64/libldap.so.2: undefined symbol: EVP_md2, version OPENSSL_3.0.0 - /home/user/.vagrant.d/gems/3.1.4/gems/ruby-libvirt-0.8.0/lib/_libvirt.so (LoadError)
chrisroberts commented 1 year ago

@mthbrown Thanks for reporting the issue you encountered. I've been able to adjust the build in hashicorp/vagrant-installers#282 to get things linking correctly.