saltstack / salt

Software to automate the management and configuration of any infrastructure or application at scale. Get access to the Salt software package repository here:
https://repo.saltproject.io/
Apache License 2.0
14.16k stars 5.48k forks source link

[BUG] Missing core dependencies when upgraded to 3005 onedir (salt-cloud) #62660

Open barbaricyawps opened 2 years ago

barbaricyawps commented 2 years ago

This issue was originally opened on the Salt Install Guide repo by @zyxep, but I'm copying the ticket here. In my opinion, this is a onedir install functionality issue rather than documentation issue, so it belongs here.

I have recently upgraded our salt master and minions to 3005 onedir. When i tried to trigger salt-cloud I got this:

[INFO    ] salt-cloud starting
/opt/saltstack/salt/run/salt/cloud/clouds/azurearm.py:174: FutureWarning: This cloud provider will be removed from Salt in version 3007 due to the deprecation of the 'Classic' API for Azure. Please migrate to Azure Resource Manager by March 1, 2023 (https://docs.microsoft.com/en-us/azure/virtual-machines/classic-vm-deprecation)
  salt.utils.versions.warn_until(
/opt/saltstack/salt/run/salt/cloud/clouds/msazure.py:113: FutureWarning: This cloud provider will be removed from Salt in version 3007 due to the deprecation of the 'Classic' API for Azure. Please migrate to Azure Resource Manager by March 1, 2023 (https://docs.microsoft.com/en-us/azure/virtual-machines/classic-vm-deprecation)
  salt.utils.versions.warn_until(
[WARNING ] Missing dependency: 'pyVmomi'. The vmware driver requires 'pyVmomi' to be installed.
[WARNING ] The cloud driver, 'vmware', configured under the 'sac' cloud provider alias, could not be loaded. Please check your provider configuration files and ensure all required dependencies are installed for the 'vmware' driver.
In rare cases, this could indicate the 'vmware.get_configured_provider()' function could not be found.
Removing 'vmware' from the available providers list
[INFO    ] Applying map from '/srv/pillar/vms/vm.yaml'.
[ERROR   ] There was a query error: 'provider'

Then I on the master ran sudo salt pip install pyvmomi and got this:

Collecting pyvmomi
  Using cached pyvmomi-7.0.3.tar.gz (592 kB)
  Preparing metadata (setup.py) ... done
Collecting requests>=2.3.0
  Downloading requests-2.28.1-py3-none-any.whl (62 kB)
     |################################| 62 kB 1.8 MB/s
Requirement already satisfied: six>=1.7.3 in /opt/saltstack/salt/pypath/lib/python3.9/site-packages (from pyvmomi) (1.16.0)
Collecting urllib3<1.27,>=1.21.1
  Downloading urllib3-1.26.12-py2.py3-none-any.whl (140 kB)
     |################################| 140 kB 111.3 MB/s
Collecting charset-normalizer<3,>=2
  Downloading charset_normalizer-2.1.1-py3-none-any.whl (39 kB)
Collecting idna<4,>=2.5
  Downloading idna-3.3-py3-none-any.whl (61 kB)
     |################################| 61 kB 12.1 MB/s
Collecting certifi>=2017.4.17
  Downloading certifi-2022.6.15-py3-none-any.whl (160 kB)
     |################################| 160 kB 93.9 MB/s
Building wheels for collected packages: pyvmomi
  Building wheel for pyvmomi (setup.py) ... done
  Created wheel for pyvmomi: filename=pyvmomi-7.0.3-py2.py3-none-any.whl size=259569 sha256=02d3a3463775789ef134264ced7e9da02ce150906ed8b21eb946096a2a5ba39b
  Stored in directory: /root/.cache/pip/wheels/77/42/2b/4ee17ed5cf5b70933d5af2e85c0edcb7fb1edcc7746db6a9c1
Successfully built pyvmomi
Installing collected packages: urllib3, idna, charset-normalizer, certifi, requests, pyvmomi
  WARNING: The script normalizer is installed in '/opt/saltstack/salt/pypath/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
salt 3005 requires certifi==2022.5.18.1, but you have certifi 2022.6.15 which is incompatible.
salt 3005 requires idna==2.8, but you have idna 3.3 which is incompatible.
salt 3005 requires requests==2.25.1, but you have requests 2.28.1 which is incompatible.
salt 3005 requires urllib3==1.26.6, but you have urllib3 1.26.12 which is incompatible.
Successfully installed certifi-2022.6.15 charset-normalizer-2.1.1 idna-3.3 pyvmomi-7.0.3 requests-2.28.1 urllib3-1.26.12
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

I kinda expected pyvmomi to be bundled with salt-cloud when I updated that to 3005 and then i'm also "confused" of why a so deep version is required for 3005.

salt 3005 requires certifi==2022.5.18.1, but you have certifi 2022.6.15 which is incompatible.
salt 3005 requires idna==2.8, but you have idna 3.3 which is incompatible.
salt 3005 requires requests==2.25.1, but you have requests 2.28.1 which is incompatible.
salt 3005 requires urllib3==1.26.6, but you have urllib3 1.26.12 which is incompatible.
OrangeDog commented 2 years ago

The cloud drivers are not core functionality. You've always had to install the dependency for the driver(s) you're going to use. The classic package also only depends on python3-libcloud and salt-common.

The fact that using salt-pip breaks the bundled salt dependencies seems like a problem. That should probably be a separate issue.

zyxep commented 2 years ago

I apologize for creating it the wrong place 🙈 and not get to it in time to get it here.

barbaricyawps commented 2 years ago

No worries at all, @zyxep . Part of the triage process is just making sure that issues get routed to the correct repo so they can get proper attention. Thanks for opening the issue and making us aware. 😄