Giter Site home page Giter Site logo

salt-extensions / saltext-azurerm Goto Github PK

View Code? Open in Web Editor NEW
5.0 4.0 8.0 411 KB

Salt Extension Modules for Azure Resource Manager

License: Apache License 2.0

Python 99.96% Jinja 0.04%
python salt saltstack azure microsoft microsoft-azure saltstack-extension salt-extension

saltext-azurerm's Introduction

Salt Extension Modules for Azure Resource Manager

Documentation Status

Salt Extension for interacting with Microsoft Azure

Security

If you think you've found a security vulnerability, see Salt's security guide.

User Documentation

This README is more for contributing to the project. If you just want to get started, check out the User Documentation.

Contributing

The saltext-azurerm project team welcomes contributions from the community.

The Salt Contributing guide has a lot of relevant information, but if you'd like to jump right in here's how to get started:

# Clone the repo
git clone --origin salt [email protected]:salt-extensions/saltext-azurerm.git

# Change to the repo dir
cd saltext-azurerm

# Create a new venv
python3 -m venv env --prompt saltext-azurerm
source env/bin/activate

# On mac, you may need to upgrade pip
python -m pip install --upgrade pip

# On WSL or some flavors of linux you may need to install the `enchant`
# library in order to build the docs
sudo apt-get install -y enchant

# Install extension + test/dev/doc dependencies into your environment
python -m pip install -e '.[tests,dev,docs]'

# Run tests!
python -m nox -e tests-3

# skip requirements install for next time
export SKIP_REQUIREMENTS_INSTALL=1

# Build the docs, serve, and view in your web browser:
python -m nox -e docs && (cd docs/_build/html; python -m webbrowser localhost:8000; python -m http.server; cd -)

Writing code isn't the only way to contribute! We value contributions in any of these areas:

You could also contribute in other ways:

  • Writing blog posts
  • Posting on social media about how you used Salt+Azurerm to solve your problems, including videos
  • Giving talks at conferences
  • Publishing videos
  • Asking/answering questions in IRC, Slack, or email groups

Any of these things are super valuable to our community, and we sincerely appreciate every contribution!

For more information, build the docs and head over to http://localhost:8000/ — that's where you'll find the rest of the documentation.

saltext-azurerm's People

Contributors

emmadionne1 avatar m3gh4nn avatar natalieswork avatar nicholasmhughes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

saltext-azurerm's Issues

[BUG] error thrown for incomplete profile but does not indicate which attribute is missing a value

Description
salt-cloud -m errors out based on an incomplete profile but does not indicate which attribute is missing a value.

Setup

/etc/salt/cloud.providers.d/azure.conf /etc/salt/cloud.providers.d/azure.conf
azure-config:
  driver: azurerm
  subscription_id: <subscription>
  certificate_path: /etc/salt/azure.pem
  tenant: <tenant>
  client_id: <client>
  secret: <secret>
  location: southcentralus

/etc/salt/cloud.profiles.d/azure.conf /etc/salt/cloud.profiles.d/azure.conf
azure-ubuntu:
  provider: tt-azure-config
  image: 'canonical|0001-com-ubuntu-server-focal|20_04-lts-gen2|latest'
  size: Standard_D2s_v3
  location: 'southcentralus'
  ssh_username: azureuser
  ssh_publickeyfile: /etc/salt/saltkey.pub
  virtual_network_name: EnterpriseMgmt-vnet
  subnet_name: default
  slot: production
  resource_group_name: EnterpriseMgmt

Please be as specific as possible and give set-up details.

  • on-prem machine
  • VM (Virtualbox, KVM, etc. please specify)
  • VM running on a cloud service, please be explicit and add details (azure ubuntu)
  • container (Kubernetes, Docker, containerd, etc. please specify)
  • or a combination, please be explicit
  • jails if it is FreeBSD

Steps to Reproduce the behavior
(Include debug logs if possible and relevant)

Expected behavior
Either print minimum profile template or print the attribute that is missing the value

Screenshots
If applicable, add screenshots to help explain your problem.

Versions Report

salt --versions-report (Provided by running salt --versions-report. Please also mention any differences in master/minion versions.)
Salt Version:
            Salt: 3004.2

Dependency Versions:
            cffi: Not Installed
        cherrypy: Not Installed
        dateutil: 2.7.3
       docker-py: Not Installed
           gitdb: 2.0.6
       gitpython: 3.0.7
          Jinja2: 2.10.1
         libgit2: Not Installed
        M2Crypto: Not Installed
            Mako: Not Installed
         msgpack: 0.6.2
    msgpack-pure: Not Installed
    mysql-python: Not Installed
       pycparser: Not Installed
        pycrypto: 2.6.1
    pycryptodome: 3.6.1
          pygit2: Not Installed
          Python: 3.8.10 (default, Jun 22 2022, 20:18:18)
    python-gnupg: 0.4.5
          PyYAML: 5.3.1
           PyZMQ: 18.1.1
           smmap: 2.0.5
         timelib: Not Installed
         Tornado: 4.5.3
             ZMQ: 4.3.2

Salt Extensions:
 saltext.azurerm: 1.0.0

System Versions:
            dist: ubuntu 20.04 focal
          locale: utf-8
         machine: x86_64
         release: 5.15.0-1020-azure
          system: Linux
         version: Ubuntu 20.04 focal```
</details>

**Additional context**
Add any other context about the problem here.

[TECH DEBT] ADAL to MSAL change

ported issue by @localden from: saltstack/salt#63447

Hi folks - I am a PM on the Microsoft Identity SDK team. I've noticed that the project takes a dependency on ADAL. This library will hit end-of-support by June of this year (2023) - the recommended path forward here is to update this to MSAL (there is a Python release).

What's the best path to make the change?

This will affect the Azure token acquisition mechanism - I see that there are no direct references in code to the library, but it likely comes through other libraries (such as msrestazure - which is deprecated).

Need to investigate dependencies in this extension per this information.

[BUG] TypeError: azure.identity._credentials.managed_identity.ManagedIdentityCredential() got multiple values for keyword argument 'client_id'

Description
Using azurerm_keyvault_vault.present throws error stating multiple values for client_id are found, even though only one has been defined.

TypeError: azure.identity._credentials.managed_identity.ManagedIdentityCredential() got multiple values for keyword argument 'client_id'

Setup
State file :

{% set profile = {"subscription_id" : "xxxxx", "tenant": "xxxxx", "secret": "xxxxx", "client_id": "xxxxx" } %}
Ensure key vault exists:
azurerm_keyvault_vault.present:
- name: SaltStackKeyVault
- resource_group: xxx
- location: xxxx
- tenant_id: xxxxx
- sku: Standard
- connection_auth: {{ profile }}

Please be as specific as possible and give set-up details.
Source of code base, states/pillars/templates, are in Azure DevOps repository

  • on-prem machine
  • [x ] VM (Virtualbox, KVM, etc. please specify)
  • VM running on a cloud service, please be explicit and add details
  • container (Kubernetes, Docker, containerd, etc. please specify)
  • or a combination, please be explicit
  • jails if it is FreeBSD
  • classic packaging
  • onedir packaging
  • used bootstrap to install

Steps to Reproduce the behavior
(Include debug logs if possible and relevant)

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Versions Report

sudo salt-minion --versions-report
Salt Version:
Salt: 3006.6

Python Version:
Python: 3.10.13 (main, Nov 15 2023, 04:34:27) [GCC 11.2.0]

Dependency Versions:
cffi: 1.14.6
cherrypy: 18.6.1
dateutil: 2.8.1
docker-py: Not Installed
gitdb: Not Installed
gitpython: Not Installed
Jinja2: 3.1.3
libgit2: Not Installed
looseversion: 1.0.2
M2Crypto: Not Installed
Mako: Not Installed
msgpack: 1.0.2
msgpack-pure: Not Installed
mysql-python: Not Installed
packaging: 22.0
pycparser: 2.21
pycrypto: Not Installed
pycryptodome: 3.19.1
pygit2: Not Installed
python-gnupg: 0.4.8
PyYAML: 6.0.1
PyZMQ: 23.2.0
relenv: 0.14.2
smmap: Not Installed
timelib: 0.2.4
Tornado: 4.5.3
ZMQ: 4.3.4

Salt Extensions:
saltext.azurerm: 4.0.1

System Versions:
dist: rhel 9.3 Plow
locale: utf-8
machine: x86_64
release: 5.14.0-362.18.1.el9_3.x86_64
system: Linux
version: Red Hat Enterprise Linux 9.3 Plow

/opt/saltstack/salt/bin/pip list
Package Version


adal 1.2.7
azure-batch 12.0.0
azure-common 1.1.28
azure-core 1.24.2
azure-graphrbac 0.61.1
azure-identity 1.15.0
azure-keyvault 4.2.0
azure-keyvault-certificates 4.7.0
azure-keyvault-keys 4.8.0
azure-keyvault-secrets 4.7.0
azure-mgmt-authorization 2.0.0
azure-mgmt-batch 16.2.0
azure-mgmt-compute 27.1.0
azure-mgmt-core 1.3.2
azure-mgmt-dns 8.0.0
azure-mgmt-keyvault 10.1.0
azure-mgmt-monitor 6.0.1
azure-mgmt-msi 6.0.1
azure-mgmt-network 20.0.0
azure-mgmt-privatedns 1.0.0
azure-mgmt-resource 21.1.0
azure-mgmt-storage 21.0.0
azure-mgmt-subscription 3.0.0
azure-mgmt-web 6.1.0
azure-nspkg 3.0.2
azure-storage-blob 12.12.0
azure-storage-common 2.1.0
azure-storage-file 2.1.0
azure-storage-nspkg 3.1.0
azure-storage-queue 12.3.0
certifi 2023.7.22
cffi 1.14.6
charset-normalizer 3.2.0
cheroot 8.5.2
CherryPy 18.6.1
contextvars 2.4
cryptography 41.0.7
distro 1.5.0
idna 3.2
immutables 0.15
importlib-metadata 6.0.0
isodate 0.6.1
jaraco.classes 3.2.1
jaraco.collections 3.4.0
jaraco.functools 2.0
jaraco.text 3.5.1
Jinja2 3.1.3
jmespath 1.0.1
looseversion 1.0.2
MarkupSafe 2.1.2
more-itertools 5.0.0
msal 1.26.0
msal-extensions 1.1.0
msgpack 1.0.2
msrest 0.7.1
msrestazure 0.6.4
oauthlib 3.2.2
packaging 22.0
pip 23.3.2
portalocker 2.8.2
portend 2.4
psutil 5.8.0
pycparser 2.21
pycryptodomex 3.19.1
PyJWT 2.8.0
pyOpenSSL 23.2.0
python-dateutil 2.8.1
python-gnupg 0.4.8
pytz 2022.1
PyYAML 6.0.1
pyzmq 23.2.0
relenv 0.14.2
requests 2.31.0
requests-oauthlib 1.3.1
rpm-vercmp 0.1.2
salt 3006.6
saltext.azurerm 4.0.1
setproctitle 1.3.2
setuptools 68.2.2
six 1.16.0
tempora 4.1.1
timelib 0.2.5
typing_extensions 4.9.0
urllib3 1.26.18
wheel 0.42.0
zc.lockfile 1.4
zipp 3.6.0

Additional context
full error

local:

      ID: Ensure key vault exists
Function: azurerm_keyvault_vault.present
    Name: SaltStackKeyVault
  Result: False
 Comment: An exception occurred in this state: Traceback (most recent call last):
            File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/state.py", line 2423, in call
              ret = self.states[cdata["full"]](
            File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 159, in __call__
              ret = self.loader.run(run_func, *args, **kwargs)
            File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1245, in run
              return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
            File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1260, in _run_as
              return _func_or_method(*args, **kwargs)
            File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1293, in wrapper
              return f(*args, **kwargs)
            File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/states/azurerm_keyvault_vault.py", line 193, in present
              vault = __salt__["azurerm_keyvault_vault.get"](
            File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 159, in __call__
              ret = self.loader.run(run_func, *args, **kwargs)
            File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1245, in run
              return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
            File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1260, in _run_as
              return _func_or_method(*args, **kwargs)
            File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/modules/azurerm_keyvault_vault.py", line 305, in get
              vconn = saltext.azurerm.utils.azurerm.get_client("keyvault", **kwargs)
            File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/utils/azurerm.py", line 161, in get_client
              credentials, subscription_id, cloud_env = _determine_auth(**kwargs)
            File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/utils/azurerm.py", line 102, in _determine_auth
              credentials = DefaultAzureCredential(authority=authority, **kwargs)
            File "/opt/saltstack/salt/lib/python3.10/site-packages/azure/identity/_credentials/default.py", line 163, in __init__
              ManagedIdentityCredential(
          TypeError: azure.identity._credentials.managed_identity.ManagedIdentityCredential() got multiple values for keyword argument 'client_id'
 Started: 12:03:02.867137
Duration: 134.389 ms
 Changes:   

[FEATURE REQUEST] Add support of exposing meta_server_grains for Azure VMs

Is your feature request related to a problem? Please describe.
setting metadata_server_grains: True in minion conf was not exposing cloud meta data grains in case of Azure VM

Describe the solution you'd like
setting metadata_server_grains: True in minion conf should expose cloud meta data grains in case of Azure VM

Describe alternatives you've considered
N/A

Additional context
This functionality was merged into the 3006.x core, but wasn't backported to master. It should live here anyway.

[BUG] the Azure extension seems to have an interaction error with salt-cloud in version 3004.2

Description
salt-cloud is configured to a point where 'salt-cloud --full-query' returns everything in the azure subscription.

'salt-cloud -a show_instance ' along with 'salt-cloud -p ' throw the following:

NameError: name 'opts' is not defined

Setup

/etc/salt/cloud.providers.d/azure.conf /etc/salt/cloud.providers.d/azure.conf
azure-config:
  driver: azurerm
  subscription_id: <subscription>
  certificate_path: /etc/salt/azure.pem
  tenant: <tenant>
  client_id: <client>
  secret: <secret>
  location: southcentralus

/etc/salt/cloud.profiles.d/azure.conf /etc/salt/cloud.profiles.d/azure.conf
azure-ubuntu:
  provider: tt-azure-config
  image: 'canonical|0001-com-ubuntu-server-focal|20_04-lts-gen2|latest'
  size: Standard_D2s_v3
  location: 'southcentralus'
  ssh_username: azureuser
  ssh_publickeyfile: /etc/salt/saltkey.pub

Please be as specific as possible and give set-up details.

  • on-prem machine
  • VM (Virtualbox, KVM, etc. please specify)
  • VM running on a cloud service, please be explicit and add details
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.5 LTS"
  • container (Kubernetes, Docker, containerd, etc. please specify)
  • or a combination, please be explicit
  • jails if it is FreeBSD

Steps to Reproduce the behavior
Install Ubuntu 20.04 LTS server in Azure
Install salt-master, salt-minion, salt-cloud
Install via pip3 saltext-azurerm
apply relevant configurations to provider and profile.
run 'salt-cloud -a show_instance -l debug'

Expected behavior
See details about the instance built and configured as functional master in Azure.

Screenshots
If applicable, add screenshots to help explain your problem.

Versions Report

salt --versions-report (Provided by running salt --versions-report. Please also mention any differences in master/minion versions.)
Salt Version:
            Salt: 3004.2

Dependency Versions:
            cffi: Not Installed
        cherrypy: Not Installed
        dateutil: 2.7.3
       docker-py: Not Installed
           gitdb: 2.0.6
       gitpython: 3.0.7
          Jinja2: 2.10.1
         libgit2: Not Installed
        M2Crypto: Not Installed
            Mako: Not Installed
         msgpack: 0.6.2
    msgpack-pure: Not Installed
    mysql-python: Not Installed
       pycparser: Not Installed
        pycrypto: 2.6.1
    pycryptodome: 3.6.1
          pygit2: Not Installed
          Python: 3.8.10 (default, Jun 22 2022, 20:18:18)
    python-gnupg: 0.4.5
          PyYAML: 5.3.1
           PyZMQ: 18.1.1
           smmap: 2.0.5
         timelib: Not Installed
         Tornado: 4.5.3
             ZMQ: 4.3.2

Salt Extensions:
 saltext.azurerm: 1.0.0

System Versions:
            dist: ubuntu 20.04 focal
          locale: utf-8
         machine: x86_64
         release: 5.15.0-1020-azure
          system: Linux
         version: Ubuntu 20.04 focal


Additional context
Add any other context about the problem here.

[FEATURE REQUEST] Auto generate password for windows in azurerm

Copied from Salt issue 56151 opened by @tkykm
saltstack/salt#56151 (comment)

Description of Issue
This is feature request.
It would be great that we can auto generate password for windows In salt-cloud with azurearm like a AWS.
for example, the idea is to set key to profile and then salt-cloud generate a strong password and ecrypt it with the key, finally store it to grain.

Thank you in advance!

Setup
(Please provide relevant configs and/or SLS files (Be sure to remove sensitive info).)
salt 2019.2.2 or more

[BUG] The DeploymentProperties model in the resource Azure module is not available.

Description
When trying to use azurerm_resource.deployment_create_or_update I get the error:

The DeploymentProperties model in the resource Azure module is not available.

Setup
Using a masterless minion, running inside a Docker container.

FROM debian:bullseye-slim
ENV SALT_VERSION "stable"
RUN apt update
RUN apt install --yes python3-pip
RUN mkdir -p /etc/salt/minion.d && \
    chmod -R 755 /etc/salt
ADD files/10-minion-overrides.conf /etc/salt/minion.d/
RUN apt-get install curl -y && \
    curl -L https://bootstrap.saltstack.com -o install_salt.sh && \
    sh install_salt.sh -X -d stable
RUN python3 -m pip install saltext-azurerm
CMD salt-call --version

Steps to Reproduce the behavior

salt-call --local azurerm_resource.deployment_create_or_update name="my-keyvault-name" resource_group="my-resource-group" template_link=salt://key_vault_template.json parameters_link=salt://key_vault_parameters.json subscription_id=xxx-xxx-xxx-xxx

Expected behavior
I expect it to deploy the ARM template with the parameters from the template parameters file.

Versions Report

salt-call --local --versions
Salt Version:
            Salt: 3005.1
 
Dependency Versions:
            cffi: 1.15.1
        cherrypy: Not Installed
        dateutil: 2.8.1
       docker-py: Not Installed
           gitdb: Not Installed
       gitpython: Not Installed
          Jinja2: 2.11.3
         libgit2: Not Installed
        M2Crypto: Not Installed
            Mako: Not Installed
         msgpack: 1.0.0
    msgpack-pure: Not Installed
    mysql-python: Not Installed
       pycparser: 2.21
        pycrypto: Not Installed
    pycryptodome: 3.9.7
          pygit2: Not Installed
          Python: 3.9.2 (default, Feb 28 2021, 17:03:44)
    python-gnupg: Not Installed
          PyYAML: 5.3.1
           PyZMQ: 20.0.0
           smmap: Not Installed
         timelib: Not Installed
         Tornado: 4.5.3
             ZMQ: 4.3.4
 
Salt Extensions:
 saltext.azurerm: 2.0.0
 
System Versions:
            dist: debian 11 bullseye
          locale: utf-8
         machine: x86_64
         release: 6.1.0-1-amd64
          system: Linux
         version: Debian GNU/Linux 11 bullseye

pip freeze
adal==1.2.7
azure-batch==12.0.0
azure-common==1.1.28
azure-core==1.24.2
azure-graphrbac==0.61.1
azure-identity==1.10.0
azure-keyvault==4.2.0
azure-keyvault-certificates==4.6.0
azure-keyvault-keys==4.7.0
azure-keyvault-secrets==4.6.0
azure-mgmt-authorization==2.0.0
azure-mgmt-batch==16.2.0
azure-mgmt-compute==27.1.0
azure-mgmt-core==1.3.2
azure-mgmt-dns==8.0.0
azure-mgmt-keyvault==10.0.0
azure-mgmt-msi==6.0.1
azure-mgmt-network==20.0.0
azure-mgmt-privatedns==1.0.0
azure-mgmt-resource==21.1.0
azure-mgmt-subscription==3.0.0
azure-mgmt-web==6.1.0
azure-nspkg==3.0.2
azure-storage-blob==12.12.0
azure-storage-common==2.1.0
azure-storage-file==2.1.0
azure-storage-nspkg==3.1.0
azure-storage-queue==12.3.0
certifi==2020.6.20
cffi==1.15.1
chardet==4.0.0
contextvars==2.4
croniter==0.3.34
cryptography==39.0.0
distro==1.5.0
idna==2.10
immutables==0.14
isodate==0.6.1
Jinja2==2.11.3
jmespath==0.10.0
MarkupSafe==1.1.1
msal==1.20.0
msal-extensions==1.0.0
msgpack==1.0.0
msrest==0.7.1
msrestazure==0.6.4
natsort==7.1.0
oauthlib==3.2.2
portalocker==2.7.0
psutil==5.8.0
pycparser==2.21
pycryptodomex==3.9.7
PyJWT==2.6.0
python-apt==2.2.1
python-dateutil==2.8.1
pytz==2021.1
PyYAML==5.3.1
pyzmq==20.0.0
requests==2.25.1
requests-oauthlib==1.3.1
salt==3005.1
saltext.azurerm==2.0.0
six==1.16.0
systemd-python==234
typing-extensions==4.4.0
tzlocal==2.1
urllib3==1.26.5

[FEATURE REQUEST] salt-cloud azure add availability zone as configuration setting

Copied from Salt issue 61425 opened by @Dantin1234
saltstack/salt#61425 (comment)

Hello,
Is your feature request related to a problem? Please describe.
I want to use the azure loadbalancer to loadbalance my traffic to my virtual machines created by salt-cloud and managed via salt. But it is not possible to configure an availability zone to an vm via salt. The azure loadbalancer is not usable with salt managed vms in azure until this feature is implemented

Describe the solution you'd like
Add availability zone as configuration setting in "cloud.profiles.d" or as setting usable in a mapping file.

Additional context
azure availability zone documentation

best regards

[DOCS] User documentation link results in a page not found

Description
The User Documentation link in the README.md points to a page that doesn’t exist.

Suggested Fix
Fix the link or deploy the missing pages

Type of documentation
Salt extension user documentation.

Location or format of documentation
Insert page URL if applicable.

Additional context
Add any other context or screenshots about the feature request here.

[BUG] got multiple values for keyword argument 'client_id'

Description
I'm trying using azurerm with Salt 3006.7 via salt-cloud, but always same error is coming :
[ERROR ] There was a profile error: azure.identity._credentials.managed_identity.ManagedIdentityCredential() got multiple values for keyword argument 'client_id'

Setup

  • VM running on Azure
  • onedir packaging

saltext-azurem installed via /opt/saltstack/salt/bin/pip like mentionned in saltstack/salt#65433, otherwise via salt-pip I get module not load error

Here's pip packages installed

# salt-pip list
Package                     Version
--------------------------- ---------
adal                        1.2.7
azure-batch                 12.0.0
azure-common                1.1.28
azure-core                  1.24.2
azure-graphrbac             0.61.1
azure-identity              1.10.0
azure-keyvault              4.2.0
azure-keyvault-certificates 4.7.0
azure-keyvault-keys         4.8.0
azure-keyvault-secrets      4.7.0
azure-mgmt-authorization    2.0.0
azure-mgmt-batch            16.2.0
azure-mgmt-compute          27.1.0
azure-mgmt-core             1.3.2
azure-mgmt-dns              8.0.0
azure-mgmt-keyvault         10.1.0
azure-mgmt-monitor          6.0.1
azure-mgmt-msi              6.0.1
azure-mgmt-network          20.0.0
azure-mgmt-privatedns       1.0.0
azure-mgmt-resource         21.1.0
azure-mgmt-storage          21.0.0
azure-mgmt-subscription     3.0.0
azure-mgmt-web              6.1.0
azure-nspkg                 3.0.2
azure-storage-blob          12.12.0
azure-storage-common        2.1.0
azure-storage-file          2.1.0
azure-storage-nspkg         3.1.0
azure-storage-queue         12.3.0
certifi                     2023.7.22
cffi                        1.14.6
charset-normalizer          3.2.0
cheroot                     8.5.2
CherryPy                    18.6.1
contextvars                 2.4
cryptography                42.0.3
distlib                     0.3.7
distro                      1.5.0
elastic-transport           8.10.0
elasticsearch               8.11.0
envtpl                      0.7.2
filelock                    3.13.1
idna                        3.2
immutables                  0.15
importlib-metadata          6.0.0
isodate                     0.6.1
jaraco.classes              3.2.1
jaraco.collections          3.4.0
jaraco.functools            2.0
jaraco.text                 3.5.1
Jinja2                      3.1.3
jmespath                    1.0.1
looseversion                1.0.2
Mako                        1.2.4
MarkupSafe                  2.1.2
more-itertools              5.0.0
msal                        1.27.0
msal-extensions             1.1.0
msgpack                     1.0.2
msrest                      0.7.1
msrestazure                 0.6.4
oauthlib                    3.2.2
packaging                   22.0
pip                         23.3.2
platformdirs                4.1.0
portalocker                 2.8.2
portend                     2.4
psutil                      5.8.0
pycparser                   2.21
pycryptodomex               3.19.1
pygit2                      1.11.1
PyJWT                       2.8.0
pyOpenSSL                   24.0.0
PySocks                     1.7.1
python-dateutil             2.8.1
python-gnupg                0.4.8
pytz                        2022.1
PyYAML                      6.0.1
pyzmq                       23.2.0
relenv                      0.15.1
requests                    2.31.0
requests-oauthlib           1.3.1
rpm-vercmp                  0.1.2
salt                        3006.7
saltext.azurerm             4.0.1
setproctitle                1.3.2
setuptools                  68.2.2
six                         1.16.0
supervisor                  4.2.5
tempora                     4.1.1
timelib                     0.2.5
typing_extensions           4.10.0
urllib3                     1.26.18
virtualenv                  20.25.0
wheel                       0.42.0
zc.lockfile                 1.4
zipp                        3.6.0

My provider configuration

# cat /etc/salt/cloud.providers.d/azure.conf 
azurearm-FranceCentral:
  driver: azurerm
  master: salt-syndic1-azr-pilot-francecentral-xxxxx
  subscription_id: xxxxxxxxx
  tenant: xxxxxxxxxx
  client_id: xxxxxxxxxxx
  secret: xxxxxxxxx
  location: FranceCentral
  storage_account: xxxxxx
  storage_key: xxxxxxxx
  ssh_username: xxxxxx
  ssh_password: xxxxxxx

Steps to Reproduce the behavior
When I run some salt-cloud command, I always get this

# salt-cloud --list-locations azurearm-FranceCentral -l debug
[DEBUG   ] Reading configuration from /etc/salt/cloud
[DEBUG   ] Reading configuration from /etc/salt/master
[DEBUG   ] Including configuration from '/etc/salt/master.d/00-general.conf'
[DEBUG   ] Reading configuration from /etc/salt/master.d/00-general.conf
[DEBUG   ] Including configuration from '/etc/salt/master.d/05-syndic.conf'
[DEBUG   ] Reading configuration from /etc/salt/master.d/05-syndic.conf
[DEBUG   ] Including configuration from '/etc/salt/master.d/10-jobs.conf'
[DEBUG   ] Reading configuration from /etc/salt/master.d/10-jobs.conf
[DEBUG   ] Including configuration from '/etc/salt/master.d/20-vault.conf'
[DEBUG   ] Reading configuration from /etc/salt/master.d/20-vault.conf
[DEBUG   ] Including configuration from '/etc/salt/master.d/22-gitfs.conf'
[DEBUG   ] Reading configuration from /etc/salt/master.d/22-gitfs.conf
[DEBUG   ] Including configuration from '/etc/salt/master.d/23-pillar.conf'
[DEBUG   ] Reading configuration from /etc/salt/master.d/23-pillar.conf
[DEBUG   ] Including configuration from '/etc/salt/master.d/24-cache.conf'
[DEBUG   ] Reading configuration from /etc/salt/master.d/24-cache.conf
[DEBUG   ] Including configuration from '/etc/salt/master.d/30-reactor.conf'
[DEBUG   ] Reading configuration from /etc/salt/master.d/30-reactor.conf
[DEBUG   ] Including configuration from '/etc/salt/master.d/40-api.conf'
[DEBUG   ] Reading configuration from /etc/salt/master.d/40-api.conf
[DEBUG   ] Including configuration from '/etc/salt/master.d/50-auth.conf'
[DEBUG   ] Reading configuration from /etc/salt/master.d/50-auth.conf
[DEBUG   ] Including configuration from '/etc/salt/master.d/60-peer_run.conf'
[DEBUG   ] Reading configuration from /etc/salt/master.d/60-peer_run.conf
[DEBUG   ] Using cached minion ID from /etc/salt/minion_id: salt-build-insideboard.internal.cloudapp.net
[DEBUG   ] Missing configuration file: /etc/salt/cloud.providers
[DEBUG   ] Including configuration from '/etc/salt/cloud.providers.d/azure.conf'
[DEBUG   ] Reading configuration from /etc/salt/cloud.providers.d/azure.conf
[DEBUG   ] Reading configuration from /etc/salt/cloud.profiles
[DEBUG   ] Including configuration from '/etc/salt/cloud.profiles.d/client.conf'
[DEBUG   ] Reading configuration from /etc/salt/cloud.profiles.d/client.conf
[DEBUG   ] Including configuration from '/etc/salt/cloud.profiles.d/proxy.conf'
[DEBUG   ] Reading configuration from /etc/salt/cloud.profiles.d/proxy.conf
[DEBUG   ] Including configuration from '/etc/salt/cloud.profiles.d/sensu.conf'
[DEBUG   ] Reading configuration from /etc/salt/cloud.profiles.d/sensu.conf
[WARNING ] Insecure logging configuration detected! Sensitive data may be logged.
[DEBUG   ] Configuration file path: /etc/salt/cloud
[INFO    ] salt-cloud starting
[DEBUG   ] Reading configuration from /etc/salt/minion
[DEBUG   ] Including configuration from '/etc/salt/minion.d/_schedule.conf'
[DEBUG   ] Reading configuration from /etc/salt/minion.d/_schedule.conf
[DEBUG   ] Including configuration from '/etc/salt/minion.d/smtp.conf'
[DEBUG   ] Reading configuration from /etc/salt/minion.d/smtp.conf
[DEBUG   ] Reading configuration from /etc/salt/minion
[DEBUG   ] Including configuration from '/etc/salt/minion.d/_schedule.conf'
[DEBUG   ] Reading configuration from /etc/salt/minion.d/_schedule.conf
[DEBUG   ] Including configuration from '/etc/salt/minion.d/smtp.conf'
[DEBUG   ] Reading configuration from /etc/salt/minion.d/smtp.conf
[DEBUG   ] The functions from module 'aggregation' are being loaded from the provided __all__ attribute
[DEBUG   ] Marking 'ifelse' as a jinja global
[DEBUG   ] Marking 'strftime' as a jinja filter
[DEBUG   ] Marking 'date_format' as a jinja filter
[DEBUG   ] Marking 'base64_encode' as a jinja filter
[DEBUG   ] Marking 'base64_decode' as a jinja filter
[DEBUG   ] Marking 'md5' as a jinja filter
[DEBUG   ] Marking 'sha1' as a jinja filter
[DEBUG   ] Marking 'sha256' as a jinja filter
[DEBUG   ] Marking 'sha512' as a jinja filter
[DEBUG   ] Marking 'hmac' as a jinja filter
[DEBUG   ] Marking 'hmac_compute' as a jinja filter
[DEBUG   ] Marking 'random_hash' as a jinja filter
[DEBUG   ] Marking 'rand_str' as a jinja filter
[DEBUG   ] Marking 'file_hashsum' as a jinja filter
[DEBUG   ] Marking 'http_query' as a jinja filter
[DEBUG   ] Marking 'raise' as a jinja global
[DEBUG   ] Marking 'match' as a jinja test
[DEBUG   ] Marking 'equalto' as a jinja test
[DEBUG   ] Marking 'skip' as a jinja filter
[DEBUG   ] Marking 'sequence' as a jinja filter
[DEBUG   ] Marking 'to_bool' as a jinja filter
[DEBUG   ] Marking 'indent' as a jinja filter
[DEBUG   ] Marking 'tojson' as a jinja filter
[DEBUG   ] Marking 'quote' as a jinja filter
[DEBUG   ] Marking 'regex_escape' as a jinja filter
[DEBUG   ] Marking 'regex_search' as a jinja filter
[DEBUG   ] Marking 'regex_match' as a jinja filter
[DEBUG   ] Marking 'regex_replace' as a jinja filter
[DEBUG   ] Marking 'uuid' as a jinja filter
[DEBUG   ] Marking 'unique' as a jinja filter
[DEBUG   ] Marking 'min' as a jinja filter
[DEBUG   ] Marking 'max' as a jinja filter
[DEBUG   ] Marking 'avg' as a jinja filter
[DEBUG   ] Marking 'union' as a jinja filter
[DEBUG   ] Marking 'intersect' as a jinja filter
[DEBUG   ] Marking 'difference' as a jinja filter
[DEBUG   ] Marking 'symmetric_difference' as a jinja filter
[DEBUG   ] Marking 'method_call' as a jinja filter
[DEBUG   ] Marking 'yaml_dquote' as a jinja filter
[DEBUG   ] Marking 'yaml_squote' as a jinja filter
[DEBUG   ] Marking 'yaml_encode' as a jinja filter
[DEBUG   ] The functions from module 'args' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'asynchronous' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'atomicfile' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'aws' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'azurearm' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'beacons' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'boto_elb_tag' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'cache' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'channel' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'cloud' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'color' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'compat' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'configcomparer' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'configparser' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'context' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'crypt' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'ctx' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'data' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'dateutils' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'debug' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'decorators' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'dictdiffer' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'dicttrim' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'dictupdate' are being loaded by dir() on the loaded module
[DEBUG   ] Override  __salt__: <module 'salt.loaded.int.utils.dns' from '/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/dns.py'>
[DEBUG   ] The functions from module 'dns' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'doc' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'entrypoints' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'environment' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'error' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'etcd_util' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'event' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'extend' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'extmods' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'filebuffer' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'files' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'find' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'fsutils' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'functools' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'gitfs' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'github' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'gzip_util' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'hashutils' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'http' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'iam' are being loaded by dir() on the loaded module
[DEBUG   ] Override  __salt__: <module 'salt.loaded.int.utils.icinga2' from '/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/icinga2.py'>
[DEBUG   ] The functions from module 'icinga2' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'immutabletypes' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'itertools' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'jid' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'jinja' are being loaded from the provided __all__ attribute
[DEBUG   ] The functions from module 'job' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'json' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'kickstart' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'kinds' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'lazy' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'listdiffer' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'locales' are being loaded by dir() on the loaded module
[DEBUG   ] Override  __salt__: <module 'salt.loaded.int.utils.mac_utils' from '/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/mac_utils.py'>
[DEBUG   ] The functions from module 'mako' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'master' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'mattermost' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'migrations' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'mine' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'minion' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'minions' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'mount' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'msazure' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'msgpack' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'namecheap' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'napalm' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'nb_popen' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'network' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'nxos' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'nxos_api' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'odict' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'openstack' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'oset' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'pagerduty' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'parsers' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'path' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'pkg' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'platform' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'powershell' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'preseed' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'process' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'profile' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'proxy' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'psutil_compat' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'pushover' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'pycrypto' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'pydsl' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'pyobjects' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'reactor' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'reclass' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'roster_matcher' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'rsax931' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 's3' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'saltclass' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'sanitizers' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'schedule' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'schema' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'sdb' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'slack' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'smb' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'smtp' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'ssdp' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'ssh' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'state' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'stringio' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'stringutils' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'systemd' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'templates' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'textformat' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'thin' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'timed_subprocess' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'timeout' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'timeutil' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'url' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'user' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'validate' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'value' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'vault' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'verify' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'versions' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'virt' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'virtualbox' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'vt' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'vt_helper' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'x509' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'xdg' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'xmlutil' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'yaml' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'yamldumper' are being loaded from the provided __all__ attribute
[DEBUG   ] The functions from module 'yamlencoding' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'yamllint' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'yamlloader' are being loaded from the provided __all__ attribute
[DEBUG   ] The functions from module 'yamlloader_old' are being loaded from the provided __all__ attribute
[DEBUG   ] The functions from module 'yast' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'zeromq' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'zfs' are being loaded by dir() on the loaded module
[DEBUG   ] Override  __utils__: <module 'salt.loaded.int.clouds.azurerm' from '/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/clouds/azurerm.py'>
[DEBUG   ] The functions from module 'azurerm' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'lxc' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'saltify' are being loaded by dir() on the loaded module
[DEBUG   ] The functions from module 'vagrant' are being loaded by dir() on the loaded module
[DEBUG   ] Could not LazyLoad parallels.avail_sizes: 'parallels' __virtual__ returned False
[DEBUG   ] LazyLoaded parallels.avail_locations
[DEBUG   ] LazyLoaded proxmox.avail_sizes
[INFO    ] No environment configuration found.
[ERROR   ] Failed to get the output of 'azurerm.avail_locations()': azure.identity._credentials.managed_identity.ManagedIdentityCredential() got multiple values for keyword argument 'client_id'
Traceback (most recent call last):
  File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/cloud/__init__.py", line 823, in location_list
    data[alias][driver] = self.clouds[fun]()
  File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 159, in __call__
    ret = self.loader.run(run_func, *args, **kwargs)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1245, in run
    return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1260, in _run_as
    return _func_or_method(*args, **kwargs)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/clouds/azurerm.py", line 335, in avail_locations
    resconn = get_conn(client_type="resource")
  File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/clouds/azurerm.py", line 260, in get_conn
    client = saltext.azurerm.utils.azurerm.get_client(client_type=client_type, **conn_kwargs)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/utils/azurerm.py", line 161, in get_client
    credentials, subscription_id, cloud_env = _determine_auth(**kwargs)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/utils/azurerm.py", line 102, in _determine_auth
    credentials = DefaultAzureCredential(authority=authority, **kwargs)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/azure/identity/_credentials/default.py", line 126, in __init__
    credentials.append(ManagedIdentityCredential(client_id=managed_identity_client_id, **kwargs))
TypeError: azure.identity._credentials.managed_identity.ManagedIdentityCredential() got multiple values for keyword argument 'client_id'
[DEBUG   ] The functions from module 'nested' are being loaded by dir() on the loaded module
[DEBUG   ] LazyLoaded nested.output
azurearm-FranceCentral:
    ----------

Screenshots
If applicable, add screenshots to help explain your problem.

Versions Report

salt --versions-report (Provided by running salt --versions-report. Please also mention any differences in master/minion versions.)
# salt --versions-report
Salt Version:
            Salt: 3006.7
 
Python Version:
          Python: 3.10.13 (main, Feb 19 2024, 03:31:20) [GCC 11.2.0]
 
Dependency Versions:
            cffi: 1.14.6
        cherrypy: unknown
        dateutil: 2.8.1
       docker-py: Not Installed
           gitdb: Not Installed
       gitpython: Not Installed
          Jinja2: 3.1.3
         libgit2: 1.5.0
    looseversion: 1.0.2
        M2Crypto: Not Installed
            Mako: 1.2.4
         msgpack: 1.0.2
    msgpack-pure: Not Installed
    mysql-python: Not Installed
       packaging: 22.0
       pycparser: 2.21
        pycrypto: Not Installed
    pycryptodome: 3.19.1
          pygit2: 1.11.1
    python-gnupg: 0.4.8
          PyYAML: 6.0.1
           PyZMQ: 23.2.0
          relenv: 0.15.1
           smmap: Not Installed
         timelib: 0.2.4
         Tornado: 4.5.3
             ZMQ: 4.3.4
 
Salt Extensions:
 saltext.azurerm: 4.0.1
 
System Versions:
            dist: debian 10 buster
          locale: utf-8
         machine: x86_64
         release: 4.19.0-26-cloud-amd64
          system: Linux
         version: Debian GNU/Linux 10 buster

Additional context
Add any other context about the problem here.

Thanks for help

[BUG] saltext-azurerm Installation Error on 4.1.0

Description
A clear and concise description of what the bug is.
saltext-azurerm >= 4.1.0 installation via salt-pip errors at install time

Setup
(Please provide relevant configs and/or SLS files (be sure to remove sensitive info. There is no general set-up of Salt.)

Please be as specific as possible and give set-up details.

  • on-prem machine
  • VM (Virtualbox, KVM, etc. please specify)
  • VM running on a cloud service, please be explicit and add details
  • container (Kubernetes, Docker, containerd, etc. please specify)
  • or a combination, please be explicit
  • jails if it is FreeBSD
  • classic packaging
  • onedir packaging
  • used bootstrap to install

Steps to Reproduce the behavior
(Include debug logs if possible and relevant)

salt-pip install saltext-azurerm

Collecting saltext-azurerm>=4.1.0
  Downloading saltext.azurerm-4.1.0-py2.py3-none-any.whl (126 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 126.9/126.9 kB 4.6 MB/s eta 0:00:00
Collecting azure-mgmt-privatedns==1.0.0
  Downloading azure_mgmt_privatedns-1.0.0-py2.py3-none-any.whl (43 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 44.0/44.0 kB 3.3 MB/s eta 0:00:00
Collecting azure-storage-file==2.1.0
  Downloading azure_storage_file-2.1.0-py2.py3-none-any.whl (36 kB)
Collecting azure-common==1.1.28
  Downloading azure_common-1.1.28-py2.py3-none-any.whl (14 kB)
Collecting azure-mgmt-storage==21.0.0
  Downloading azure_mgmt_storage-21.0.0-py3-none-any.whl (2.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.8/2.8 MB 15.0 MB/s eta 0:00:00
Collecting azure-mgmt-network==20.0.0
  Downloading azure_mgmt_network-20.0.0-py3-none-any.whl (8.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.5/8.5 MB 45.9 MB/s eta 0:00:00
Collecting azure-storage-nspkg==3.1.0
  Downloading azure_storage_nspkg-3.1.0-py2.py3-none-any.whl (1.7 kB)
Collecting azure-mgmt-monitor==6.0.1
  Downloading azure_mgmt_monitor-6.0.1-py3-none-any.whl (1.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 12.3 MB/s eta 0:00:00
Collecting azure-mgmt-web==6.1.0
  Downloading azure_mgmt_web-6.1.0-py3-none-any.whl (3.9 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.9/3.9 MB 22.4 MB/s eta 0:00:00
Requirement already satisfied: salt>=3005 in /opt/saltstack/salt/lib/python3.10/site-packages (from saltext-azurerm>=4.1.0) (3006.5)
Collecting msrestazure==0.6.4
  Downloading msrestazure-0.6.4-py2.py3-none-any.whl (40 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 40.5/40.5 kB 3.0 MB/s eta 0:00:00
Collecting azure-storage-queue==12.3.0
  Downloading azure_storage_queue-12.3.0-py3-none-any.whl (147 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 147.7/147.7 kB 8.8 MB/s eta 0:00:00
Collecting azure-mgmt-resource==21.1.0
  Downloading azure_mgmt_resource-21.1.0-py3-none-any.whl (1.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 12.8 MB/s eta 0:00:00
Collecting azure-mgmt-dns==8.0.0
  Downloading azure_mgmt_dns-8.0.0-py2.py3-none-any.whl (118 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 118.9/118.9 kB 8.6 MB/s eta 0:00:00
Collecting msrest==0.7.1
  Downloading msrest-0.7.1-py3-none-any.whl (85 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 85.4/85.4 kB 6.4 MB/s eta 0:00:00
Collecting azure-storage-blob==12.12.0
  Downloading azure_storage_blob-12.12.0-py3-none-any.whl (366 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 366.4/366.4 kB 678.7 kB/s eta 0:00:00
Collecting azure-mgmt-batch==16.2.0
  Downloading azure_mgmt_batch-16.2.0-py3-none-any.whl (126 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 126.9/126.9 kB 8.9 MB/s eta 0:00:00
Collecting azure-core==1.24.2
  Downloading azure_core-1.24.2-py3-none-any.whl (178 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 178.7/178.7 kB 12.2 MB/s eta 0:00:00
Collecting azure-mgmt-subscription==3.0.0
  Downloading azure_mgmt_subscription-3.0.0-py3-none-any.whl (57 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 57.1/57.1 kB 3.8 MB/s eta 0:00:00
Collecting azure-keyvault==4.2.0
  Downloading azure_keyvault-4.2.0-py2.py3-none-any.whl (4.3 kB)
Collecting azure-batch==12.0.0
  Downloading azure_batch-12.0.0-py2.py3-none-any.whl (231 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 231.3/231.3 kB 14.9 MB/s eta 0:00:00
Collecting azure-mgmt-authorization==2.0.0
  Downloading azure_mgmt_authorization-2.0.0-py2.py3-none-any.whl (465 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 465.2/465.2 kB 4.6 MB/s eta 0:00:00
Collecting azure-graphrbac==0.61.1
  Downloading azure_graphrbac-0.61.1-py2.py3-none-any.whl (141 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 141.4/141.4 kB 10.2 MB/s eta 0:00:00
Collecting azure-mgmt-msi==6.0.1
  Downloading azure_mgmt_msi-6.0.1-py3-none-any.whl (73 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 73.1/73.1 kB 4.6 MB/s eta 0:00:00
Collecting azure-mgmt-compute==27.1.0
  Downloading azure_mgmt_compute-27.1.0-py3-none-any.whl (5.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.5/5.5 MB 41.7 MB/s eta 0:00:00
Collecting azure-identity==1.10.0
  Downloading azure_identity-1.10.0-py3-none-any.whl (134 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 134.1/134.1 kB 8.7 MB/s eta 0:00:00
Collecting azure-storage-common==2.1.0
  Downloading azure_storage_common-2.1.0-py2.py3-none-any.whl (47 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 47.8/47.8 kB 3.5 MB/s eta 0:00:00
Collecting azure-mgmt-keyvault==10.1.0
  Downloading azure_mgmt_keyvault-10.1.0-py3-none-any.whl (605 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 605.9/605.9 kB 12.4 MB/s eta 0:00:00
Requirement already satisfied: requests>=2.18.4 in /opt/saltstack/salt/lib/python3.10/site-packages (from azure-core==1.24.2->saltext-azurerm>=4.1.0) (2.31.0)
Collecting typing-extensions>=4.0.1
  Using cached typing_extensions-4.11.0-py3-none-any.whl (34 kB)
Requirement already satisfied: six>=1.11.0 in /opt/saltstack/salt/lib/python3.10/site-packages (from azure-core==1.24.2->saltext-azurerm>=4.1.0) (1.16.0)
Collecting msal-extensions<2.0.0,>=0.3.0
  Downloading msal_extensions-1.1.0-py3-none-any.whl (19 kB)
Collecting msal<2.0.0,>=1.12.0
  Downloading msal-1.28.0-py3-none-any.whl (102 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 102.2/102.2 kB 8.0 MB/s eta 0:00:00
Requirement already satisfied: cryptography>=2.5 in /opt/saltstack/salt/lib/python3.10/site-packages (from azure-identity==1.10.0->saltext-azurerm>=4.1.0) (41.0.7)
Collecting azure-keyvault-certificates~=4.4
  Downloading azure_keyvault_certificates-4.8.0-py3-none-any.whl (114 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 114.3/114.3 kB 4.9 MB/s eta 0:00:00
Collecting azure-keyvault-secrets~=4.4
  Downloading azure_keyvault_secrets-4.8.0-py3-none-any.whl (82 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 82.8/82.8 kB 5.5 MB/s eta 0:00:00
Collecting azure-keyvault-keys~=4.5
  Downloading azure_keyvault_keys-4.9.0-py3-none-any.whl (149 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 149.5/149.5 kB 9.7 MB/s eta 0:00:00
Collecting azure-mgmt-core<2.0.0,>=1.2.0
  Downloading azure_mgmt_core-1.4.0-py3-none-any.whl (27 kB)
Collecting isodate<1.0.0,>=0.6.1
  Downloading isodate-0.6.1-py2.py3-none-any.whl (41 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 41.7/41.7 kB 2.9 MB/s eta 0:00:00
Requirement already satisfied: python-dateutil in /opt/saltstack/salt/lib/python3.10/site-packages (from azure-storage-common==2.1.0->saltext-azurerm>=4.1.0) (2.8.1)
Collecting azure-nspkg>=2.0.0
  Downloading azure_nspkg-3.0.2-py3-none-any.whl (1.5 kB)
Collecting requests-oauthlib>=0.5.0
  Downloading requests_oauthlib-2.0.0-py2.py3-none-any.whl (24 kB)
Requirement already satisfied: certifi>=2017.4.17 in /opt/saltstack/salt/lib/python3.10/site-packages (from msrest==0.7.1->saltext-azurerm>=4.1.0) (2023.7.22)
Collecting adal<2.0.0,>=0.6.0
  Downloading adal-1.2.7-py2.py3-none-any.whl (55 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 55.5/55.5 kB 3.8 MB/s eta 0:00:00
Requirement already satisfied: jaraco.classes==3.2.1 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (3.2.1)
Requirement already satisfied: charset-normalizer==3.2.0 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (3.2.0)
Requirement already satisfied: idna==3.2 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (3.2)
Requirement already satisfied: python-gnupg==0.4.8 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (0.4.8)
Requirement already satisfied: looseversion==1.0.2 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (1.0.2)
Requirement already satisfied: pytz==2022.1 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (2022.1)
Requirement already satisfied: timelib==0.2.5 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (0.2.5)
Requirement already satisfied: pyzmq==23.2.0 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (23.2.0)
Requirement already satisfied: zipp==3.6.0 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (3.6.0)
Requirement already satisfied: pyyaml==6.0.1 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (6.0.1)
Requirement already satisfied: setproctitle==1.3.2 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (1.3.2)
Requirement already satisfied: pycparser==2.21 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (2.21)
Requirement already satisfied: msgpack==1.0.2 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (1.0.2)
Requirement already satisfied: cherrypy==18.6.1 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (18.6.1)
Requirement already satisfied: pyopenssl==23.2.0 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (23.2.0)
Requirement already satisfied: importlib-metadata==6.0.0 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (6.0.0)
Requirement already satisfied: immutables==0.15 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (0.15)
Requirement already satisfied: jaraco.text==3.5.1 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (3.5.1)
Requirement already satisfied: jaraco.collections==3.4.0 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (3.4.0)
Requirement already satisfied: portend==2.4 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (2.4)
Requirement already satisfied: pycryptodomex==3.9.8 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (3.9.8)
Requirement already satisfied: urllib3==1.26.18 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (1.26.18)
Requirement already satisfied: more-itertools==5.0.0 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (5.0.0)
Requirement already satisfied: jmespath==1.0.1 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (1.0.1)
Requirement already satisfied: distro==1.5.0 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (1.5.0)
Collecting cffi==1.14.6
  Downloading cffi-1.14.6.tar.gz (475 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 475.7/475.7 kB 8.7 MB/s eta 0:00:00
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Requirement already satisfied: jaraco.functools==2.0 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (2.0)
Requirement already satisfied: packaging==22.0 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (22.0)
Requirement already satisfied: zc.lockfile==1.4 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (1.4)
Requirement already satisfied: tempora==4.1.1 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (4.1.1)
Requirement already satisfied: cheroot==8.5.2 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (8.5.2)
Requirement already satisfied: jinja2==3.1.2 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (3.1.2)
Requirement already satisfied: psutil==5.8.0 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (5.8.0)
Requirement already satisfied: markupsafe==2.1.2 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (2.1.2)
Requirement already satisfied: rpm-vercmp==0.1.2 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (0.1.2)
Requirement already satisfied: contextvars==2.4 in /opt/saltstack/salt/lib/python3.10/site-packages (from salt>=3005->saltext-azurerm>=4.1.0) (2.4)
Requirement already satisfied: setuptools in /opt/saltstack/salt/lib/python3.10/site-packages (from zc.lockfile==1.4->salt>=3005->saltext-azurerm>=4.1.0) (68.2.2)
Collecting PyJWT<3,>=1.0.0
  Downloading PyJWT-2.8.0-py3-none-any.whl (22 kB)
Collecting azure-keyvault-certificates~=4.4
  Downloading azure_keyvault_certificates-4.7.0-py3-none-any.whl (428 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 428.1/428.1 kB 5.3 MB/s eta 0:00:00
Collecting azure-keyvault-keys~=4.5
  Downloading azure_keyvault_keys-4.8.0-py3-none-any.whl (452 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 452.7/452.7 kB 7.4 MB/s eta 0:00:00
Collecting azure-keyvault-secrets~=4.4
  Downloading azure_keyvault_secrets-4.7.0-py3-none-any.whl (348 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 348.6/348.6 kB 4.7 MB/s eta 0:00:00
Collecting azure-mgmt-core<2.0.0,>=1.2.0
  Downloading azure_mgmt_core-1.3.2-py3-none-any.whl (26 kB)
Collecting portalocker<3,>=1.0
  Downloading portalocker-2.8.2-py3-none-any.whl (17 kB)
Collecting oauthlib>=3.0.0
  Downloading oauthlib-3.2.2-py3-none-any.whl (151 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 151.7/151.7 kB 10.4 MB/s eta 0:00:00
Building wheels for collected packages: cffi
  Building wheel for cffi (setup.py): started
  Building wheel for cffi (setup.py): finished with status 'error'
  Running setup.py clean for cffi
Failed to build cffi
Installing collected packages: azure-nspkg, azure-common, typing-extensions, PyJWT, portalocker, oauthlib, isodate, cffi, azure-storage-nspkg, requests-oauthlib, azure-core, msrest, azure-st
orage-common, azure-mgmt-core, azure-keyvault-secrets, azure-keyvault-keys, azure-keyvault-certificates, adal, msrestazure, msal, azure-storage-queue, azure-storage-file, azure-storage-blob,
 azure-mgmt-web, azure-mgmt-subscription, azure-mgmt-storage, azure-mgmt-resource, azure-mgmt-privatedns, azure-mgmt-network, azure-mgmt-msi, azure-mgmt-monitor, azure-mgmt-keyvault, azure-m
gmt-dns, azure-mgmt-compute, azure-mgmt-batch, azure-mgmt-authorization, azure-keyvault, msal-extensions, azure-graphrbac, azure-batch, azure-identity, saltext-azurerm
  Attempting uninstall: cffi
    Found existing installation: cffi 1.16.0
    Uninstalling cffi-1.16.0:
      Successfully uninstalled cffi-1.16.0
  Running setup.py install for cffi: started
  Running setup.py install for cffi: finished with status 'error'
  Rolling back uninstall of cffi
  Moving to /opt/saltstack/salt/extras-3.10/_cffi_backend.cpython-310-x86_64-linux-gnu.so
   from /tmp/pip-uninstall-kmudmoa3/_cffi_backend.cpython-310-x86_64-linux-gnu.so
  Moving to /opt/saltstack/salt/extras-3.10/cffi-1.16.0.dist-info/
   from /opt/saltstack/salt/extras-3.10/~ffi-1.16.0.dist-info
  Moving to /opt/saltstack/salt/extras-3.10/cffi/
   from /opt/saltstack/salt/extras-3.10/~ffi
  
  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [50 lines of output]
      /opt/saltstack/salt/lib/python3.10/site-packages/setuptools/config/setupcfg.py:293: _DeprecatedConfig: Deprecated config in `setup.cfg`
      !!
      
              ********************************************************************************
              The license_file parameter is deprecated, use license_files instead.
      
              This deprecation is overdue, please update your project and remove deprecated
              calls to avoid build errors in the future.
      
              See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details.
              ********************************************************************************
      
      !!
        parsed = self.parsers.get(option_name, lambda x: x)(value)
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-310
      creating build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/vengine_gen.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/pkgconfig.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/cparser.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/model.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/api.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/error.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/vengine_cpy.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/ffiplatform.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/cffi_opcode.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/commontypes.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/__init__.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/backend_ctypes.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/setuptools_ext.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/recompiler.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/lock.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/verifier.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/_cffi_include.h -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/parse_c_type.h -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/_embedding.h -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/_cffi_errors.h -> build/lib.linux-x86_64-cpython-310/cffi
      running build_ext
      building '_cffi_backend' extension
      creating build/temp.linux-x86_64-cpython-310
      creating build/temp.linux-x86_64-cpython-310/c
      x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -DUSE__T
HREAD -DHAVE_SYNC_SYNCHRONIZE -I/usr/include/ffi -I/usr/include/libffi -I/opt/saltstack/salt/include/python3.10 -c c/_cffi_backend.c -o build/temp.linux-x86_64-cpython-310/c/_cffi_backend.o
      c/_cffi_backend.c:15:10: fatal error: ffi.h: No such file or directory
         15 | #include <ffi.h>
            |          ^~~~~~~
      compilation terminated.
      error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for cffi
  Running setup.py clean for cffi
Failed to build cffi
Installing collected packages: cffi, saltext-azurerm
  Attempting uninstall: cffi
    Found existing installation: cffi 1.16.0
    Uninstalling cffi-1.16.0:
      Successfully uninstalled cffi-1.16.0
  Running setup.py install for cffi: started
  Running setup.py install for cffi: finished with status 'error'
  error: subprocess-exited-with-error
  
  × Running setup.py install for cffi did not run successfully.
  │ exit code: 1
  ╰─> [63 lines of output]
      /opt/saltstack/salt/lib/python3.10/site-packages/setuptools/config/setupcfg.py:293: _DeprecatedConfig: Deprecated config in `setup.cfg`
      !!
      
              ********************************************************************************
              The license_file parameter is deprecated, use license_files instead.
      
              This deprecation is overdue, please update your project and remove deprecated
              calls to avoid build errors in the future.
      
              See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details.
              ********************************************************************************
      
      !!
        parsed = self.parsers.get(option_name, lambda x: x)(value)
      running install
      /opt/saltstack/salt/lib/python3.10/site-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated.
      !!
      
              ********************************************************************************
              Please avoid running ``setup.py`` directly.
              Instead, use pypa/build, pypa/installer or other
              standards-based tools.
      
              See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.
              ********************************************************************************
      
      !!
        self.initialize_options()
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-310
      creating build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/vengine_gen.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/pkgconfig.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/cparser.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/model.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/api.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/error.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/vengine_cpy.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/ffiplatform.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/cffi_opcode.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/commontypes.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/__init__.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/backend_ctypes.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/setuptools_ext.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/recompiler.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/lock.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/verifier.py -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/_cffi_include.h -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/parse_c_type.h -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/_embedding.h -> build/lib.linux-x86_64-cpython-310/cffi
      copying cffi/_cffi_errors.h -> build/lib.linux-x86_64-cpython-310/cffi
      running build_ext
      building '_cffi_backend' extension
      creating build/temp.linux-x86_64-cpython-310
      creating build/temp.linux-x86_64-cpython-310/c
      x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -DUSE__T
HREAD -DHAVE_SYNC_SYNCHRONIZE -I/usr/include/ffi -I/usr/include/libffi -I/opt/saltstack/salt/include/python3.10 -c c/_cffi_backend.c -o build/temp.linux-x86_64-cpython-310/c/_cffi_backend.o
      c/_cffi_backend.c:15:10: fatal error: ffi.h: No such file or directory
         15 | #include <ffi.h>
            |          ^~~~~~~
      compilation terminated.
      error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  Rolling back uninstall of cffi
  Moving to /opt/saltstack/salt/extras-3.10/_cffi_backend.cpython-310-x86_64-linux-gnu.so
   from /tmp/pip-uninstall-uedscs8_/_cffi_backend.cpython-310-x86_64-linux-gnu.so
  Moving to /opt/saltstack/salt/extras-3.10/cffi-1.16.0.dist-info/
   from /opt/saltstack/salt/extras-3.10/~ffi-1.16.0.dist-info
  Moving to /opt/saltstack/salt/extras-3.10/cffi/
   from /opt/saltstack/salt/extras-3.10/~ffi
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> cffi

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

[notice] A new release of pip available: 22.3.1 -> 24.0
[notice] To update, run: /opt/saltstack/salt/bin/python3.10 -m pip install --upgrade pip

Expected behavior
Installation should complete successfully

Screenshots
If applicable, add screenshots to help explain your problem.

Versions Report

salt --versions-report (Provided by running salt --versions-report. Please also mention any differences in master/minion versions.)
Salt Version:
          Salt: 3006.5
 
Python Version:
        Python: 3.10.13 (main, Nov 15 2023, 04:34:27) [GCC 11.2.0]
 
Dependency Versions:
          cffi: 1.16.0
      cherrypy: unknown
      dateutil: 2.8.1
     docker-py: Not Installed
         gitdb: Not Installed
     gitpython: Not Installed
        Jinja2: 3.1.2
       libgit2: 1.7.2
  looseversion: 1.0.2
      M2Crypto: Not Installed
          Mako: Not Installed
       msgpack: 1.0.2
  msgpack-pure: Not Installed
  mysql-python: Not Installed
     packaging: 22.0
     pycparser: 2.21
      pycrypto: Not Installed
  pycryptodome: 3.9.8
        pygit2: 1.14.1
  python-gnupg: 0.4.8
        PyYAML: 6.0.1
         PyZMQ: 23.2.0
        relenv: 0.14.2
         smmap: Not Installed
       timelib: 0.2.4
       Tornado: 4.5.3
           ZMQ: 4.3.4
 
System Versions:
          dist: ubuntu 20.04.6 focal
        locale: utf-8
       machine: x86_64
       release: 5.15.0-1057-azure
        system: Linux
       version: Ubuntu 20.04.6 focal

Additional context
Add any other context about the problem here.

[BUG] AzureFS doesn't work with latest versions of the Azure.Storage wheel

Copied from Salt issue 60801 opened by @hirez-masmith
saltstack/salt#60801 (comment)

Description
AzureFS filesystem module does not function with latest versions of azure-storage wheel due to missing version attribute within their wheel.
Microsoft has said they won't be fixing it.
Azure/azure-storage-python#535

Setup
Add azurefsfs (extra FS needed due to saltstack/salt#58041) to fileserver configuration after roots.

Please be as specific as possible and give set-up details.

  • on-prem machine
  • VM (Virtualbox, KVM, etc. please specify)
  • VM running on a cloud service, please be explicit and add details
  • container (Kubernetes, Docker, containerd, etc. please specify)
  • or a combination, please be explicit
  • jails if it is FreeBSD

Steps to Reproduce the behavior
I had to add custom logging into the azurefs.py file to detect the error properly because the module, as written, doesn't actually report anything to any logs when it fails to initialize. At a minimum, it would be nice for this module to report why it's not doing what it should be doing so this level of spelunking isn't necessary.

Custom logging was added to the try at the top of the file attempting to import azure.storage. I had to move the log instantiation above this try block as well.

except (ImportError, AttributeError) as e:
    HAS_AZURE = False
    log.error(e)

Error that was then reported to the saltmaster log is:

2021-08-27 14:23:35,120 [root :79 ][ERROR ][7246] module 'azure.storage' has no attribute '__version__'

After commenting out the version check (since Microsoft doesn't want to follow conventions stuck_out_tongue) I hit an error that the hashes directory wasn't found on disk.

FileNotFoundError: [Errno 2] No such file or directory: '/var/cache/salt/master/azurefs/hashes'

I created that directory to attempt to bypass the error (created as the same user the master is running as)

I then discovered that the CloudStorageAccount object being utilized has been moved in the latest azure storage wheel.
So I modified the file once again to import the object properly via:

from azure.storage.common.cloudstorageaccount import CloudStorageAccount

Within the same try block for the azure.storage wheel in general. I did the import this way as is convention within our internal codebase.

This finally allowed the FS to at least be able to query the available files / dirs within our private container.

Sending this in, in the hopes that I won't have to maintain these changes in all subsequent version updates of the salt master.

Expected behavior
The AzureFS filesystem package behaves properly with versions of the azure.storage wheel in line with latest iterations of the Azure Python SDK.

Versions Report

salt --versions-report (Provided by running salt --versions-report. Please also mention any differences in master/minion versions.)
Salt Version:
          Salt: 3002.2

Dependency Versions:
          cffi: 1.14.4
      cherrypy: unknown
      dateutil: 2.6.1
     docker-py: Not Installed
         gitdb: 2.0.3
     gitpython: 2.1.8
        Jinja2: 2.10
       libgit2: Not Installed
      M2Crypto: Not Installed
          Mako: Not Installed
       msgpack: 0.5.6
  msgpack-pure: Not Installed
  mysql-python: Not Installed
     pycparser: 2.20
      pycrypto: 2.6.1
  pycryptodome: 3.4.7
        pygit2: Not Installed
        Python: 3.6.9 (default, Jan 26 2021, 15:33:00)
  python-gnupg: 0.4.1
        PyYAML: 3.12
         PyZMQ: 17.1.2
         smmap: 2.0.3
       timelib: Not Installed
       Tornado: 4.5.3
           ZMQ: 4.2.5

System Versions:
          dist: ubuntu 18.04 Bionic Beaver
        locale: UTF-8
       machine: x86_64
       release: 5.4.0-1039-azure
        system: Linux
       version: Ubuntu 18.04 Bionic Beaver

Additional context
Add any other context about the problem here.

[BUG] NameError: name '__salt__' is not defined

Description
The cloud module seems unable to access the execution module code, as the __salt__ dunder isn't present.

[ERROR   ] Caught Exception, terminating workers
TRACE: name '__salt__' is not defined
Traceback (most recent call last):
  File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/cloud/__init__.py", line 56, in _call
    ret = func(*args, **kwargs)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/cloud/__init__.py", line 2297, in create_multiprocessing
    output = cloud.create(
  File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/cloud/__init__.py", line 1226, in create
    output = self.clouds[func](vm_)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 149, in __call__
    return self.loader.run(run_func, *args, **kwargs)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1232, in run
    return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1247, in _run_as
    return _func_or_method(*args, **kwargs)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/clouds/azurerm.py", line 1170, in create
    vm_request = request_instance(vm_=vm_)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/clouds/azurerm.py", line 794, in request_instance
    iface_data, public_ips, private_ips = create_network_interface(call="action", kwargs=vm_)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/clouds/azurerm.py", line 710, in create_network_interface
    pub_ip_data = __salt__["azurerm_network.public_ip_address_create_or_update"](
NameError: name '__salt__' is not defined

After implementing a quick workaround for the former error, the following issue was also found.

[ERROR   ] Failed to create VM saltmaster01. Configuration value 'ip_address' needs to be set
Traceback (most recent call last):
  File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/cloud/__init__.py", line 1226, in create
    output = self.clouds[func](vm_)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 149, in __call__
    return self.loader.run(run_func, *args, **kwargs)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1232, in run
    return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/salt/loader/lazy.py", line 1247, in _run_as
    return _func_or_method(*args, **kwargs)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/clouds/azurerm.py", line 1178, in create
    vm_request = request_instance(vm_=vm_)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/clouds/azurerm.py", line 802, in request_instance
    iface_data, public_ips, private_ips = create_network_interface(call="action", kwargs=vm_)
  File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/clouds/azurerm.py", line 741, in create_network_interface
    return _get_network_interface(kwargs["iface_name"], kwargs["resource_group"])
  File "/opt/saltstack/salt/lib/python3.10/site-packages/saltext/azurerm/clouds/azurerm.py", line 654, in _get_network_interface
    public_ips.append(public_ip["ip_address"])
KeyError: 'ip_address'

Expected behavior
Should be able to create a cloud instance with the cloud module.

[FEATURE REQUEST] support multiple NICs

Copied from Salt issue 56153 opened by @tkykm
saltstack/salt#56153 (comment)

Is your feature request related to a problem? Please describe.
It would be good to have a option about multiple NICs.
In some case, we want to associate a VM to 2 or more subnet e.g. frontend and backend

Thanks!

Describe the solution you'd like
Ideally profile

vm:
  provider: azure
  nics:
    - network: vnet1
       subnet: subnet1
    - network: vnet1
       subnet: subnet2
       security_group: sg1

Describe alternatives you've considered
N/A

Additional context
N/A

[BUG] azurefs filling master log with errors

Copied from Salt issue 55727 opened by @kveroneau
saltstack/salt#55727 (comment)

Description
When using the azurefs state backend the log file is filled with the following exception:

OSError: [Errno 2] No such file or directory: '/var/cache/salt/master/azurefs/hashes'
2019-12-22 05:14:37,392 [root             :272 ][ERROR   ][24987] Problem occurred trying to invalidate hash cach for azurefs
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/salt/fileserver/azurefs.py", line 270, in update
    shutil.rmtree(hash_cachedir)
  File "/usr/lib/python2.7/shutil.py", line 239, in rmtree
    onerror(os.listdir, path, sys.exc_info())
  File "/usr/lib/python2.7/shutil.py", line 237, in rmtree
    names = os.listdir(path)

I attempted to manually create the directory mentioned, however azurefs seems to just delete it, and continues to throw the exception. azurefs seems to work otherwise just fine.

Setup
Configure your salt state modules to use azurefs as a root,

fileserver_backend:
  - gitfs
  - azurefs

azurefs:
  - account_name: Retracted
    account_key: Retracted
    container_name: Retracted

Steps to Reproduce the behavior
Use the azurefs fileserver_backend and watch the /var/log/salt/master log file for the exceptions.

Versions Report

salt --versions-report (Provided by running salt --versions-report. Please also mention any differences in master/minion versions.)
Salt Version:
Salt: 2019.2.2

Dependency Versions:
cffi: Not Installed
cherrypy: Not Installed
dateutil: 2.5.3
docker-py: 1.9.0
gitdb: 2.0.0
gitpython: 2.1.1
ioflo: Not Installed
Jinja2: 2.9.4
libgit2: 0.24.5
libnacl: Not Installed
M2Crypto: Not Installed
Mako: Not Installed
msgpack-pure: Not Installed
msgpack-python: 0.4.8
mysql-python: Not Installed
pycparser: Not Installed
pycrypto: 2.6.1
pycryptodome: Not Installed
pygit2: 0.24.2
Python: 2.7.13 (default, Sep 26 2018, 18:42:22)
python-gnupg: Not Installed
PyYAML: 3.12
PyZMQ: 16.0.2
RAET: Not Installed
smmap: 2.0.1
timelib: Not Installed
Tornado: 4.4.3
ZMQ: 4.2.1

System Versions:
dist: debian 9.10
locale: UTF-8
machine: x86_64
release: 4.9.0-11-amd64
system: Linux
version: debian 9.10

[BUG] Cannot Create Instances with Cloud

Description
A clear and concise description of what the bug is.

Creating an instance with salt-cloud -p my-custom-profile myvm001 yields and InvalidParameter error, as shown below. The error states an empty value for the VM size despite the size being present in the Cloud Profile.

Have not ruled out a Configuration issue.

Setup
(Please provide relevant configs and/or SLS files (be sure to remove sensitive info. There is no general set-up of Salt.)

Please be as specific as possible and give set-up details.

  • on-prem machine
  • VM (Virtualbox, KVM, etc. please specify)
  • VM running on a cloud service, please be explicit and add details
  • container (Kubernetes, Docker, containerd, etc. please specify)
  • or a combination, please be explicit
  • jails if it is FreeBSD
  • classic packaging
  • onedir packaging
  • used bootstrap to install

/etc/salt/cloud.providers.d/my-provider.conf

my-azurerm-provider:
  client_id: <redacted>
  driver: azurerm
  location: eastus
  minion:
    master:
    - <redacted>
  resource_group: <redacted>
  secret: <redacted>
  subscription_id: <redacted>
  tenant: <redacted>

/etc/salt/cloud.profiles.d/my-profile.conf

my-azurerm-profile:
  allocate_public_ip: false
  image: <redacted>
  location: eastus
  network: <redacted>
  os_disk_size_gb: 30
  provider: <redacted>
  size: Standard_D8as_v5
  ssh_password: <redacted>
  ssh_username: <redacted>
  subnet: <redacted>
  userdata: <redacted>
  win_installer: false

Steps to Reproduce the behavior
(Include debug logs if possible and relevant)

salt-cloud -p my-azurerm-profile myvm001 yields the following error:

[ERROR   ] An Azure Resource Manager Compute ResourceNotFoundError has occurred: (InvalidParameter) The value  provided for the VM size is not valid. The valid sizes in the current region are: 
Standard_L8as_v3,Standard_L16as_v3,Standard_L32as_v3,Standard_L48as_v3,Standard_L64as_v3,Standard_L80as_v3,Standard_D2a_v4,Standard_D4a_v4,Standard_D8a_v4,Standard_D16a_v4,Standard_D32a_v4,Standard_D48a_v4,Standard_D64a_v4,Standard_D96a_v4,Standard_D2as_v4,Standard_D4as_v4,Standard_D8as_v4,Standard_D16as_v4,Standard_D32as_v4,Standard_D48as_v4,Standard_D64as_v4,Standard_D96as_v4,Standard_E2a_v4,Standard_E4a_v4,Standard_E8a_v4,Standard_E16a_v4,Standard_E20a_v4,Standard_E32a_v4,Standard_E48a_v4,Standard_E64a_v4,Standard_E96a_v4,Standard_E2as_v4,Standard_E4-2as_v4,Standard_E4as_v4,Standard_E8-2as_v4,Standard_E8-4as_v4,Standard_E8as_v4,Standard_E16-4as_v4,Standard_E16-8as_v4,Standard_E16as_v4,Standard_E20as_v4,Standard_E32-8as_v4,Standard_E32-16as_v4,Standard_E32as_v4,Standard_E48as_v4,Standard_E64-16as_v4,Standard_E64-32as_v4,Standard_E64as_v4,Standard_E96-24as_v4,Standard_E96-48as_v4,Standard_E96as_v4,Standard_D2as_v5,Standard_D4as_v5,Standard_D8as_v5,Standard_D16as_v5,Standard_D32as_v5,Standard_D48as_v5,Standard_D64as_v5,Standard_D96as_v5,Standard_E2as_v5,Standard_E4-2as_v5,Standard_E4as_v5,Standard_E8-2as_v5,Standard_E8-4as_v5,Standard_E8as_v5,Standard_E16-4as_v5,Standard_E16-8as_v5,Standard_E16as_v5,Standard_E20as_v5,Standard_E32-8as_v5,Standard_E32-16as_v5,Standard_E32as_v5,Standard_E48as_v5,Standard_E64-16as_v5,Standard_E64-32as_v5,Standard_E64as_v5,Standard_E96-24as_v5,Standard_E96-48as_v5,Standard_E96as_v5,Standard_D2ads_v5,Standard_D4ads_v5,Standard_D8ads_v5,Standard_D16ads_v5,Standard_D32ads_v5,Standard_D48ads_v5,Standard_D64ads_v5,Standard_D96ads_v5,Standard_E2ads_v5,Standard_E4-2ads_v5,Standard_E4ads_v5,Standard_E8-2ads_v5,Standard_E8-4ads_v5,Standard_E8ads_v5,Standard_E16-4ads_v5,Standard_E16-8ads_v5,Standard_E16ads_v5,Standard_E20ads_v5,Standard_E32-8ads_v5,Standard_E32-16ads_v5,Standard_E32ads_v5,Standard_E48ads_v5,Standard_E64-16ads_v5,Standard_E64-32ads_v5,Standard_E64ads_v5,Standard_E96-24ads_v5,Standard_E96-48ads_v5,Standard_E96ads_v5,Standard_B1ls,Standard_B1ms,Standard_B1s,Standard_B2ms,Standard_B2s,Standard_B4ms,Standard_B8ms,Standard_B12ms,Standard_B16ms,Standard_B20ms,Standard_D1_v2,Standard_D2_v2,Standard_D3_v2,Standard_D4_v2,Standard_D5_v2,Standard_D11_v2,Standard_D12_v2,Standard_D13_v2,Standard_D14_v2,Standard_D15_v2,Standard_D2_v2_Promo,Standard_D3_v2_Promo,Standard_D4_v2_Promo,Standard_D5_v2_Promo,Standard_D11_v2_Promo,Standard_D12_v2_Promo,Standard_D13_v2_Promo,Standard_D14_v2_Promo,Standard_DS2_v2_Promo,Standard_DS3_v2_Promo,Standard_DS4_v2_Promo,Standard_DS5_v2_Promo,Standard_DS11_v2_Promo,Standard_DS12_v2_Promo,Standard_DS13_v2_Promo,Standard_DS14_v2_Promo,Standard_F1,Standard_F2,Standard_F4,Standard_F8,Standard_F16,Standard_A1_v2,Standard_A2m_v2,Standard_A2_v2,Standard_A4m_v2,Standard_A4_v2,Standard_A8m_v2,Standard_A8_v2,Standard_D2_v3,Standard_D4_v3,Standard_D8_v3,Standard_D16_v3,Standard_D32_v3,Standard_D48_v3,Standard_D64_v3,Standard_E2_v3,Standard_E4_v3,Standard_E8_v3,Standard_E16_v3,Standard_E20_v3,Standard_E32_v3,Standard_E48_v3,Standard_E64_v3,Standard_D1,Standard_D2,Standard_D3,Standard_D4,Standard_D11,Standard_D12,Standard_D13,Standard_D14,Standard_DS1_v2,Standard_DS2_v2,Standard_DS3_v2,Standard_DS4_v2,Standard_DS5_v2,Standard_DS11-1_v2,Standard_DS11_v2,Standard_DS12-1_v2,Standard_DS12-2_v2,Standard_DS12_v2,Standard_DS13-2_v2,Standard_DS13-4_v2,Standard_DS13_v2,Standard_DS14-4_v2,Standard_DS14-8_v2,Standard_DS14_v2,Standard_DS15_v2,Standard_F1s,Standard_F2s,Standard_F4s,Standard_F8s,Standard_F16s,Standard_D2s_v3,Standard_D4s_v3,Standard_D8s_v3,Standard_D16s_v3,Standard_D32s_v3,Standard_D48s_v3,Standard_D64s_v3,Standard_E2s_v3,Standard_E4-2s_v3,Standard_E4s_v3,Standard_E8-2s_v3,Standard_E8-4s_v3,Standard_E8s_v3,Standard_E16-4s_v3,Standard_E16-8s_v3,Standard_E16s_v3,Standard_E20s_v3,Standard_E32-8s_v3,Standard_E32-16s_v3,Standard_E32s_v3,Standard_E48s_v3,Standard_E64-16s_v3,Standard_E64-32s_v3,Standard_E64s_v3,Standard_DS1,Standard_DS2,Standard_DS3,Standard_DS4,Standard_DS11,Standard_DS12,Standard_DS13,Standard_DS14,Standard_E2_v4,Standard_E4_v4,Standard_E8_v4,Standard_E16_v4,Standard_E20_v4,Standard_E32_v4,Standard_E48_v4,Standard_E64_v4,Standard_E2d_v4,Standard_E4d_v4,Standard_E8d_v4,Standard_E16d_v4,Standard_E20d_v4,Standard_E32d_v4,Standard_E48d_v4,Standard_E64d_v4,Standard_E2s_v4,Standard_E4-2s_v4,Standard_E4s_v4,Standard_E8-2s_v4,Standard_E8-4s_v4,Standard_E8s_v4,Standard_E16-4s_v4,Standard_E16-8s_v4,Standard_E16s_v4,Standard_E20s_v4,Standard_E32-8s_v4,Standard_E32-16s_v4,Standard_E32s_v4,Standard_E48s_v4,Standard_E64-16s_v4,Standard_E64-32s_v4,Standard_E64s_v4,Standard_E80is_v4,Standard_E2ds_v4,Standard_E4-2ds_v4,Standard_E4ds_v4,Standard_E8-2ds_v4,Standard_E8-4ds_v4,Standard_E8ds_v4,Standard_E16-4ds_v4,Standard_E16-8ds_v4,Standard_E16ds_v4,Standard_E20ds_v4,Standard_E32-8ds_v4,Standard_E32-16ds_v4,Standard_E32ds_v4,Standard_E48ds_v4,Standard_E64-16ds_v4,Standard_E64-32ds_v4,Standard_E64ds_v4,Standard_E80ids_v4,Standard_D2d_v4,Standard_D4d_v4,Standard_D8d_v4,Standard_D16d_v4,Standard_D32d_v4,Standard_D48d_v4,Standard_D64d_v4,Standard_D2_v4,Standard_D4_v4,Standard_D8_v4,Standard_D16_v4,Standard_D32_v4,Standard_D48_v4,Standard_D64_v4,Standard_D2ds_v4,Standard_D4ds_v4,Standard_D8ds_v4,Standard_D16ds_v4,Standard_D32ds_v4,Standard_D48ds_v4,Standard_D64ds_v4,Standard_D2s_v4,Standard_D4s_v4,Standard_D8s_v4,Standard_D16s_v4,Standard_D32s_v4,Standard_D48s_v4,Standard_D64s_v4,Standard_F2s_v2,Standard_F4s_v2,Standard_F8s_v2,Standard_F16s_v2,Standard_F32s_v2,Standard_F48s_v2,Standard_F64s_v2,Standard_F72s_v2,Standard_E112ias_v5,Standard_E112iads_v5,Standard_B2als_v2,Standard_B2as_v2,Standard_B2ats_v2,Standard_B4als_v2,Standard_B4as_v2,Standard_B8als_v2,Standard_B8as_v2,Standard_B16als_v2,Standard_B16as_v2,Standard_B32als_v2,Standard_B32as_v2,Standard_M64,Standard_M64m,Standard_M128,Standard_M128m,Standard_M8-2ms,Standard_M8-4ms,Standard_M8ms,Standard_M16-4ms,Standard_M16-8ms,Standard_M16ms,Standard_M32-8ms,Standard_M32-16ms,Standard_M32ls,Standard_M32ms,Standard_M32ts,Standard_M64-16ms,Standard_M64-32ms,Standard_M64ls,Standard_M64ms,Standard_M64s,Standard_M128-32ms,Standard_M128-64ms,Standard_M128ms,Standard_M128s,Standard_M32ms_v2,Standard_M64ms_v2,Standard_M64s_v2,Standard_M128ms_v2,Standard_M128s_v2,Standard_M192ims_v2,Standard_M192is_v2,Standard_M32dms_v2,Standard_M64dms_v2,Standard_M64ds_v2,Standard_M128dms_v2,Standard_M128ds_v2,Standard_M192idms_v2,Standard_M192ids_v2,Standard_DC2as_v5,Standard_DC4as_v5,Standard_DC8as_v5,Standard_DC16as_v5,Standard_DC32as_v5,Standard_DC48as_v5,Standard_DC64as_v5,Standard_DC96as_v5,Standard_DC2ads_v5,Standard_DC4ads_v5,Standard_DC8ads_v5,Standard_DC16ads_v5,Standard_DC32ads_v5,Standard_DC48ads_v5,Standard_DC64ads_v5,Standard_DC96ads_v5,Standard_EC2as_v5,Standard_EC4as_v5,Standard_EC8as_v5,Standard_EC16as_v5,Standard_EC20as_v5,Standard_EC32as_v5,Standard_EC48as_v5,Standard_EC64as_v5,Standard_EC96as_v5,Standard_EC96ias_v5,Standard_EC2ads_v5,Standard_EC4ads_v5,Standard_EC8ads_v5,Standard_EC16ads_v5,Standard_EC20ads_v5,Standard_EC32ads_v5,Standard_EC48ads_v5,Standard_EC64ads_v5,Standard_EC96ads_v5,Standard_EC96iads_v5,Standard_DC4as_cc_v5,Standard_DC8as_cc_v5,Standard_DC16as_cc_v5,Standard_DC32as_cc_v5,Standard_DC48as_cc_v5,Standard_DC64as_cc_v5,Standard_DC96as_cc_v5,Standard_DC4ads_cc_v5,Standard_DC8ads_cc_v5,Standard_DC16ads_cc_v5,Standard_DC32ads_cc_v5,Standard_DC48ads_cc_v5,Standard_DC64ads_cc_v5,Standard_DC96ads_cc_v5,Standard_EC4as_cc_v5,Standard_EC8as_cc_v5,Standard_EC16as_cc_v5,Standard_EC20as_cc_v5,Standard_EC32as_cc_v5,Standard_EC48as_cc_v5,Standard_EC64as_cc_v5,Standard_EC96as_cc_v5,Standard_EC4ads_cc_v5,Standard_EC8ads_cc_v5,Standard_EC16ads_cc_v5,Standard_EC20ads_cc_v5,Standard_EC32ads_cc_v5,Standard_EC48ads_cc_v5,Standard_EC64ads_cc_v5,Standard_EC96ads_cc_v5,Standard_E96ias_v4,Standard_D2ds_v5,Standard_D4ds_v5,Standard_D8ds_v5,Standard_D16ds_v5,Standard_D32ds_v5,Standard_D48ds_v5,Standard_D64ds_v5,Standard_D96ds_v5,Standard_D2d_v5,Standard_D4d_v5,Standard_D8d_v5,Standard_D16d_v5,Standard_D32d_v5,Standard_D48d_v5,Standard_D64d_v5,Standard_D96d_v5,Standard_D2s_v5,Standard_D4s_v5,Standard_D8s_v5,Standard_D16s_v5,Standard_D32s_v5,Standard_D48s_v5,Standard_D64s_v5,Standard_D96s_v5,Standard_D2_v5,Standard_D4_v5,Standard_D8_v5,Standard_D16_v5,Standard_D32_v5,Standard_D48_v5,Standard_D64_v5,Standard_D96_v5,Standard_E2ds_v5,Standard_E4-2ds_v5,Standard_E4ds_v5,Standard_E8-2ds_v5,Standard_E8-4ds_v5,Standard_E8ds_v5,Standard_E16-4ds_v5,Standard_E16-8ds_v5,Standard_E16ds_v5,Standard_E20ds_v5,Standard_E32-8ds_v5,Standard_E32-16ds_v5,Standard_E32ds_v5,Standard_E48ds_v5,Standard_E64-16ds_v5,Standard_E64-32ds_v5,Standard_E64ds_v5,Standard_E96-24ds_v5,Standard_E96-48ds_v5,Standard_E96ds_v5,Standard_E104ids_v5,Standard_E2d_v5,Standard_E4d_v5,Standard_E8d_v5,Standard_E16d_v5,Standard_E20d_v5,Standard_E32d_v5,Standard_E48d_v5,Standard_E64d_v5,Standard_E96d_v5,Standard_E104id_v5,Standard_E2s_v5,Standard_E4-2s_v5,Standard_E4s_v5,Standard_E8-2s_v5,Standard_E8-4s_v5,Standard_E8s_v5,Standard_E16-4s_v5,Standard_E16-8s_v5,Standard_E16s_v5,Standard_E20s_v5,Standard_E32-8s_v5,Standard_E32-16s_v5,Standard_E32s_v5,Standard_E48s_v5,Standard_E64-16s_v5,Standard_E64-32s_v5,Standard_E64s_v5,Standard_E96-24s_v5,Standard_E96-48s_v5,Standard_E96s_v5,Standard_E104is_v5,Standard_E2_v5,Standard_E4_v5,Standard_E8_v5,Standard_E16_v5,Standard_E20_v5,Standard_E32_v5,Standard_E48_v5,Standard_E64_v5,Standard_E96_v5,Standard_E104i_v5,Standard_E2bs_v5,Standard_E4bs_v5,Standard_E8bs_v5,Standard_E16bs_v5,Standard_E32bs_v5,Standard_E48bs_v5,Standard_E64bs_v5,Standard_E96bs_v5,Standard_E112ibs_v5,Standard_E2bds_v5,Standard_E4bds_v5,Standard_E8bds_v5,Standard_E16bds_v5,Standard_E32bds_v5,Standard_E48bds_v5,Standard_E64bds_v5,Standard_E96bds_v5,Standard_E112ibds_v5,Standard_D2ls_v5,Standard_D4ls_v5,Standard_D8ls_v5,Standard_D16ls_v5,Standard_D32ls_v5,Standard_D48ls_v5,Standard_D64ls_v5,Standard_D96ls_v5,Standard_D2lds_v5,Standard_D4lds_v5,Standard_D8lds_v5,Standard_D16lds_v5,Standard_D32lds_v5,Standard_D48lds_v5,Standard_D64lds_v5,Standard_D96lds_v5,Standard_B2ls_v2,Standard_B2s_v2,Standard_B2ts_v2,Standard_B4ls_v2,Standard_B4s_v2,Standard_B8ls_v2,Standard_B8s_v2,Standard_B16ls_v2,Standard_B16s_v2,Standard_B32ls_v2,Standard_B32s_v2,Standard_A0,Standard_A1,Standard_A2,Standard_A3,Standard_A5,Standard_A4,Standard_A6,Standard_A7,Basic_A0,Basic_A1,Basic_A2,Basic_A3,Basic_A4,Standard_M12s_v3,Standard_M24s_v3,Standard_M48s_1_v3,Standard_M96s_1_v3,Standard_M96s_2_v3,Standard_M176s_3_v3,Standard_M176s_4_v3,Standard_M12ds_v3,Standard_M24ds_v3,Standard_M48ds_1_v3,Standard_M96ds_1_v3,Standard_M96ds_2_v3,Standard_M176ds_3_v3,Standard_M176ds_4_v3,Standard_E64i_v3,Standard_E64is_v3,Standard_M208ms_v2,Standard_M208s_v2,Standard_M416-208s_v2,Standard_M416s_v2,Standard_M416-208ms_v2,Standard_M416ms_v2,Standard_M416s_8_v2,Standard_L8s_v3,Standard_L16s_v3,Standard_L32s_v3,Standard_L48s_v3,Standard_L64s_v3,Standard_L80s_v3,Standard_NC4as_T4_v3,Standard_NC8as_T4_v3,Standard_NC16as_T4_v3,Standard_NC64as_T4_v3,Standard_NV6s_v2,Standard_NV12s_v2,Standard_NV24s_v2,Standard_NV12s_v3,Standard_NV24s_v3,Standard_NV48s_v3,Standard_HB120-16rs_v2,Standard_HB120-32rs_v2,Standard_HB120-64rs_v2,Standard_HB120-96rs_v2,Standard_HB120rs_v2,Standard_D2plds_v5,Standard_D4plds_v5,Standard_D8plds_v5,Standard_D16plds_v5,Standard_D32plds_v5,Standard_D48plds_v5,Standard_D64plds_v5,Standard_D2pls_v5,Standard_D4pls_v5,Standard_D8pls_v5,Standard_D16pls_v5,Standard_D32pls_v5,Standard_D48pls_v5,Standard_D64pls_v5,Standard_D2pds_v5,Standard_D4pds_v5,Standard_D8pds_v5,Standard_D16pds_v5,Standard_D32pds_v5,Standard_D48pds_v5,Standard_D64pds_v5,Standard_D2ps_v5,Standard_D4ps_v5,Standard_D8ps_v5,Standard_D16ps_v5,Standard_D32ps_v5,Standard_D48ps_v5,Standard_D64ps_v5,Standard_E2pds_v5,Standard_E4pds_v5,Standard_E8pds_v5,Standard_E16pds_v5,Standard_E20pds_v5,Standard_E32pds_v5,Standard_E2ps_v5,Standard_E4ps_v5,Standard_E8ps_v5,Standard_E16ps_v5,Standard_E20ps_v5,Standard_E32ps_v5,Standard_B2pls_v2,Standard_B2ps_v2,Standard_B2pts_v2,Standard_B4pls_v2,Standard_B4ps_v2,Standard_B8pls_v2,Standard_B8ps_v2,Standard_B16pls_v2,Standard_B16ps_v2,Standard_NC24ads_A100_v4,Standard_NC48ads_A100_v4,Standard_NC96ads_A100_v4,Standard_L8s_v2,Standard_L16s_v2,Standard_L32s_v2,Standard_L48s_v2,Standard_L64s_v2,Standard_L80s_v2,Standard_NV6ads_A10_v5,Standard_NV12ads_A10_v5,Standard_NV18ads_A10_v5,Standard_NV36adms_A10_v5,Standard_NV36ads_A10_v5,Standard_NV72ads_A10_v5,Standard_DC8_v2,Standard_DC1s_v2,Standard_DC2s_v2,Standard_DC4s_v2,Standard_ND40rs_v2,Standard_HC44-16rs,Standard_HC44-32rs,Standard_HC44rs,Standard_HX176-24rs,Standard_HX176-48rs,Standard_HX176-96rs,Standard_HX176-144rs,Standard_HX176rs,Standard_HB176-24rs_v4,Standard_HB176-48rs_v4,Standard_HB176-96rs_v4,Standard_HB176-144rs_v4,Standard_HB176rs_v4,Standard_FX4mds,Standard_FX12mds,Standard_FX24mds,Standard_FX36mds,Standard_FX48mds,Standard_NP10s,Standard_NP20s,Standard_NP40s,Standard_NV4as_v4,Standard_NV8as_v4,Standard_NV16as_v4,Standard_NV32as_v4,Standard_ND96isr_H100_v5,Standard_ND96amsr_A100_v4,Standard_HB120-16rs_v3,Standard_HB120-32rs_v3,Standard_HB120-64rs_v3,Standard_HB120-96rs_v3,Standard_HB120rs_v3,Standard_NC6s_v3,Standard_NC12s_v3,Standard_NC24rs_v3,Standard_NC24s_v3,Standard_DC1s_v3,Standard_DC2s_v3,Standard_DC4s_v3,Standard_DC8s_v3,Standard_DC16s_v3,Standard_DC24s_v3,Standard_DC32s_v3,Standard_DC48s_v3,Standard_DC1ds_v3,Standard_DC2ds_v3,Standard_DC4ds_v3,Standard_DC8ds_v3,Standard_DC16ds_v3,Standard_DC24ds_v3,Standard_DC32ds_v3,Standard_DC48ds_v3,Standard_G1,Standard_G2,Standard_G3,Standard_G4,Standard_G5,Standard_GS1,Standard_GS2,Standard_GS3,Standard_GS4,Standard_GS4-4,Standard_GS4-8,Standard_GS5,Standard_GS5-8,Standard_GS5-16,Standard_L4s,Standard_L8s,Standard_L16s,Standard_L32s,Standard_PB6s,Standard_HB60-15rs,Standard_HB60-30rs,Standard_HB60-45rs,Standard_HB60rs,Standard_ND96asr_v4,Standard_ND40s_v3,Standard_NC40ads_H100_v5,Standard_NC80adis_H100_v5,Standard_NC8ads_A10_v4,Standard_NC16ads_A10_v4,Standard_NC32ads_A10_v4. Find out more on the valid VM sizes in each region at https://aka.ms/azure-regionservices.
Code: InvalidParameterMessage: The value  provided for the VM size is not valid. The valid sizes in the current region are: 
Standard_L8as_v3,Standard_L16as_v3,Standard_L32as_v3,Standard_L48as_v3,Standard_L64as_v3,Standard_L80as_v3,Standard_D2a_v4,Standard_D4a_v4,Standard_D8a_v4,Standard_D16a_v4,Standard_D32a_v4,Standard_D48a_v4,Standard_D64a_v4,Standard_D96a_v4,Standard_D2as_v4,Standard_D4as_v4,Standard_D8as_v4,Standard_D16as_v4,Standard_D32as_v4,Standard_D48as_v4,Standard_D64as_v4,Standard_D96as_v4,Standard_E2a_v4,Standard_E4a_v4,Standard_E8a_v4,Standard_E16a_v4,Standard_E20a_v4,Standard_E32a_v4,Standard_E48a_v4,Standard_E64a_v4,Standard_E96a_v4,Standard_E2as_v4,Standard_E4-2as_v4,Standard_E4as_v4,Standard_E8-2as_v4,Standard_E8-4as_v4,Standard_E8as_v4,Standard_E16-4as_v4,Standard_E16-8as_v4,Standard_E16as_v4,Standard_E20as_v4,Standard_E32-8as_v4,Standard_E32-16as_v4,Standard_E32as_v4,Standard_E48as_v4,Standard_E64-16as_v4,Standard_E64-32as_v4,Standard_E64as_v4,Standard_E96-24as_v4,Standard_E96-48as_v4,Standard_E96as_v4,Standard_D2as_v5,Standard_D4as_v5,Standard_D8as_v5,Standard_D16as_v5,Standard_D32as_v5,Standard_D48as_v5,Standard_D64as_v5,Standard_D96as_v5,Standard_E2as_v5,Standard_E4-2as_v5,Standard_E4as_v5,Standard_E8-2as_v5,Standard_E8-4as_v5,Standard_E8as_v5,Standard_E16-4as_v5,Standard_E16-8as_v5,Standard_E16as_v5,Standard_E20as_v5,Standard_E32-8as_v5,Standard_E32-16as_v5,Standard_E32as_v5,Standard_E48as_v5,Standard_E64-16as_v5,Standard_E64-32as_v5,Standard_E64as_v5,Standard_E96-24as_v5,Standard_E96-48as_v5,Standard_E96as_v5,Standard_D2ads_v5,Standard_D4ads_v5,Standard_D8ads_v5,Standard_D16ads_v5,Standard_D32ads_v5,Standard_D48ads_v5,Standard_D64ads_v5,Standard_D96ads_v5,Standard_E2ads_v5,Standard_E4-2ads_v5,Standard_E4ads_v5,Standard_E8-2ads_v5,Standard_E8-4ads_v5,Standard_E8ads_v5,Standard_E16-4ads_v5,Standard_E16-8ads_v5,Standard_E16ads_v5,Standard_E20ads_v5,Standard_E32-8ads_v5,Standard_E32-16ads_v5,Standard_E32ads_v5,Standard_E48ads_v5,Standard_E64-16ads_v5,Standard_E64-32ads_v5,Standard_E64ads_v5,Standard_E96-24ads_v5,Standard_E96-48ads_v5,Standard_E96ads_v5,Standard_B1ls,Standard_B1ms,Standard_B1s,Standard_B2ms,Standard_B2s,Standard_B4ms,Standard_B8ms,Standard_B12ms,Standard_B16ms,Standard_B20ms,Standard_D1_v2,Standard_D2_v2,Standard_D3_v2,Standard_D4_v2,Standard_D5_v2,Standard_D11_v2,Standard_D12_v2,Standard_D13_v2,Standard_D14_v2,Standard_D15_v2,Standard_D2_v2_Promo,Standard_D3_v2_Promo,Standard_D4_v2_Promo,Standard_D5_v2_Promo,Standard_D11_v2_Promo,Standard_D12_v2_Promo,Standard_D13_v2_Promo,Standard_D14_v2_Promo,Standard_DS2_v2_Promo,Standard_DS3_v2_Promo,Standard_DS4_v2_Promo,Standard_DS5_v2_Promo,Standard_DS11_v2_Promo,Standard_DS12_v2_Promo,Standard_DS13_v2_Promo,Standard_DS14_v2_Promo,Standard_F1,Standard_F2,Standard_F4,Standard_F8,Standard_F16,Standard_A1_v2,Standard_A2m_v2,Standard_A2_v2,Standard_A4m_v2,Standard_A4_v2,Standard_A8m_v2,Standard_A8_v2,Standard_D2_v3,Standard_D4_v3,Standard_D8_v3,Standard_D16_v3,Standard_D32_v3,Standard_D48_v3,Standard_D64_v3,Standard_E2_v3,Standard_E4_v3,Standard_E8_v3,Standard_E16_v3,Standard_E20_v3,Standard_E32_v3,Standard_E48_v3,Standard_E64_v3,Standard_D1,Standard_D2,Standard_D3,Standard_D4,Standard_D11,Standard_D12,Standard_D13,Standard_D14,Standard_DS1_v2,Standard_DS2_v2,Standard_DS3_v2,Standard_DS4_v2,Standard_DS5_v2,Standard_DS11-1_v2,Standard_DS11_v2,Standard_DS12-1_v2,Standard_DS12-2_v2,Standard_DS12_v2,Standard_DS13-2_v2,Standard_DS13-4_v2,Standard_DS13_v2,Standard_DS14-4_v2,Standard_DS14-8_v2,Standard_DS14_v2,Standard_DS15_v2,Standard_F1s,Standard_F2s,Standard_F4s,Standard_F8s,Standard_F16s,Standard_D2s_v3,Standard_D4s_v3,Standard_D8s_v3,Standard_D16s_v3,Standard_D32s_v3,Standard_D48s_v3,Standard_D64s_v3,Standard_E2s_v3,Standard_E4-2s_v3,Standard_E4s_v3,Standard_E8-2s_v3,Standard_E8-4s_v3,Standard_E8s_v3,Standard_E16-4s_v3,Standard_E16-8s_v3,Standard_E16s_v3,Standard_E20s_v3,Standard_E32-8s_v3,Standard_E32-16s_v3,Standard_E32s_v3,Standard_E48s_v3,Standard_E64-16s_v3,Standard_E64-32s_v3,Standard_E64s_v3,Standard_DS1,Standard_DS2,Standard_DS3,Standard_DS4,Standard_DS11,Standard_DS12,Standard_DS13,Standard_DS14,Standard_E2_v4,Standard_E4_v4,Standard_E8_v4,Standard_E16_v4,Standard_E20_v4,Standard_E32_v4,Standard_E48_v4,Standard_E64_v4,Standard_E2d_v4,Standard_E4d_v4,Standard_E8d_v4,Standard_E16d_v4,Standard_E20d_v4,Standard_E32d_v4,Standard_E48d_v4,Standard_E64d_v4,Standard_E2s_v4,Standard_E4-2s_v4,Standard_E4s_v4,Standard_E8-2s_v4,Standard_E8-4s_v4,Standard_E8s_v4,Standard_E16-4s_v4,Standard_E16-8s_v4,Standard_E16s_v4,Standard_E20s_v4,Standard_E32-8s_v4,Standard_E32-16s_v4,Standard_E32s_v4,Standard_E48s_v4,Standard_E64-16s_v4,Standard_E64-32s_v4,Standard_E64s_v4,Standard_E80is_v4,Standard_E2ds_v4,Standard_E4-2ds_v4,Standard_E4ds_v4,Standard_E8-2ds_v4,Standard_E8-4ds_v4,Standard_E8ds_v4,Standard_E16-4ds_v4,Standard_E16-8ds_v4,Standard_E16ds_v4,Standard_E20ds_v4,Standard_E32-8ds_v4,Standard_E32-16ds_v4,Standard_E32ds_v4,Standard_E48ds_v4,Standard_E64-16ds_v4,Standard_E64-32ds_v4,Standard_E64ds_v4,Standard_E80ids_v4,Standard_D2d_v4,Standard_D4d_v4,Standard_D8d_v4,Standard_D16d_v4,Standard_D32d_v4,Standard_D48d_v4,Standard_D64d_v4,Standard_D2_v4,Standard_D4_v4,Standard_D8_v4,Standard_D16_v4,Standard_D32_v4,Standard_D48_v4,Standard_D64_v4,Standard_D2ds_v4,Standard_D4ds_v4,Standard_D8ds_v4,Standard_D16ds_v4,Standard_D32ds_v4,Standard_D48ds_v4,Standard_D64ds_v4,Standard_D2s_v4,Standard_D4s_v4,Standard_D8s_v4,Standard_D16s_v4,Standard_D32s_v4,Standard_D48s_v4,Standard_D64s_v4,Standard_F2s_v2,Standard_F4s_v2,Standard_F8s_v2,Standard_F16s_v2,Standard_F32s_v2,Standard_F48s_v2,Standard_F64s_v2,Standard_F72s_v2,Standard_E112ias_v5,Standard_E112iads_v5,Standard_B2als_v2,Standard_B2as_v2,Standard_B2ats_v2,Standard_B4als_v2,Standard_B4as_v2,Standard_B8als_v2,Standard_B8as_v2,Standard_B16als_v2,Standard_B16as_v2,Standard_B32als_v2,Standard_B32as_v2,Standard_M64,Standard_M64m,Standard_M128,Standard_M128m,Standard_M8-2ms,Standard_M8-4ms,Standard_M8ms,Standard_M16-4ms,Standard_M16-8ms,Standard_M16ms,Standard_M32-8ms,Standard_M32-16ms,Standard_M32ls,Standard_M32ms,Standard_M32ts,Standard_M64-16ms,Standard_M64-32ms,Standard_M64ls,Standard_M64ms,Standard_M64s,Standard_M128-32ms,Standard_M128-64ms,Standard_M128ms,Standard_M128s,Standard_M32ms_v2,Standard_M64ms_v2,Standard_M64s_v2,Standard_M128ms_v2,Standard_M128s_v2,Standard_M192ims_v2,Standard_M192is_v2,Standard_M32dms_v2,Standard_M64dms_v2,Standard_M64ds_v2,Standard_M128dms_v2,Standard_M128ds_v2,Standard_M192idms_v2,Standard_M192ids_v2,Standard_DC2as_v5,Standard_DC4as_v5,Standard_DC8as_v5,Standard_DC16as_v5,Standard_DC32as_v5,Standard_DC48as_v5,Standard_DC64as_v5,Standard_DC96as_v5,Standard_DC2ads_v5,Standard_DC4ads_v5,Standard_DC8ads_v5,Standard_DC16ads_v5,Standard_DC32ads_v5,Standard_DC48ads_v5,Standard_DC64ads_v5,Standard_DC96ads_v5,Standard_EC2as_v5,Standard_EC4as_v5,Standard_EC8as_v5,Standard_EC16as_v5,Standard_EC20as_v5,Standard_EC32as_v5,Standard_EC48as_v5,Standard_EC64as_v5,Standard_EC96as_v5,Standard_EC96ias_v5,Standard_EC2ads_v5,Standard_EC4ads_v5,Standard_EC8ads_v5,Standard_EC16ads_v5,Standard_EC20ads_v5,Standard_EC32ads_v5,Standard_EC48ads_v5,Standard_EC64ads_v5,Standard_EC96ads_v5,Standard_EC96iads_v5,Standard_DC4as_cc_v5,Standard_DC8as_cc_v5,Standard_DC16as_cc_v5,Standard_DC32as_cc_v5,Standard_DC48as_cc_v5,Standard_DC64as_cc_v5,Standard_DC96as_cc_v5,Standard_DC4ads_cc_v5,Standard_DC8ads_cc_v5,Standard_DC16ads_cc_v5,Standard_DC32ads_cc_v5,Standard_DC48ads_cc_v5,Standard_DC64ads_cc_v5,Standard_DC96ads_cc_v5,Standard_EC4as_cc_v5,Standard_EC8as_cc_v5,Standard_EC16as_cc_v5,Standard_EC20as_cc_v5,Standard_EC32as_cc_v5,Standard_EC48as_cc_v5,Standard_EC64as_cc_v5,Standard_EC96as_cc_v5,Standard_EC4ads_cc_v5,Standard_EC8ads_cc_v5,Standard_EC16ads_cc_v5,Standard_EC20ads_cc_v5,Standard_EC32ads_cc_v5,Standard_EC48ads_cc_v5,Standard_EC64ads_cc_v5,Standard_EC96ads_cc_v5,Standard_E96ias_v4,Standard_D2ds_v5,Standard_D4ds_v5,Standard_D8ds_v5,Standard_D16ds_v5,Standard_D32ds_v5,Standard_D48ds_v5,Standard_D64ds_v5,Standard_D96ds_v5,Standard_D2d_v5,Standard_D4d_v5,Standard_D8d_v5,Standard_D16d_v5,Standard_D32d_v5,Standard_D48d_v5,Standard_D64d_v5,Standard_D96d_v5,Standard_D2s_v5,Standard_D4s_v5,Standard_D8s_v5,Standard_D16s_v5,Standard_D32s_v5,Standard_D48s_v5,Standard_D64s_v5,Standard_D96s_v5,Standard_D2_v5,Standard_D4_v5,Standard_D8_v5,Standard_D16_v5,Standard_D32_v5,Standard_D48_v5,Standard_D64_v5,Standard_D96_v5,Standard_E2ds_v5,Standard_E4-2ds_v5,Standard_E4ds_v5,Standard_E8-2ds_v5,Standard_E8-4ds_v5,Standard_E8ds_v5,Standard_E16-4ds_v5,Standard_E16-8ds_v5,Standard_E16ds_v5,Standard_E20ds_v5,Standard_E32-8ds_v5,Standard_E32-16ds_v5,Standard_E32ds_v5,Standard_E48ds_v5,Standard_E64-16ds_v5,Standard_E64-32ds_v5,Standard_E64ds_v5,Standard_E96-24ds_v5,Standard_E96-48ds_v5,Standard_E96ds_v5,Standard_E104ids_v5,Standard_E2d_v5,Standard_E4d_v5,Standard_E8d_v5,Standard_E16d_v5,Standard_E20d_v5,Standard_E32d_v5,Standard_E48d_v5,Standard_E64d_v5,Standard_E96d_v5,Standard_E104id_v5,Standard_E2s_v5,Standard_E4-2s_v5,Standard_E4s_v5,Standard_E8-2s_v5,Standard_E8-4s_v5,Standard_E8s_v5,Standard_E16-4s_v5,Standard_E16-8s_v5,Standard_E16s_v5,Standard_E20s_v5,Standard_E32-8s_v5,Standard_E32-16s_v5,Standard_E32s_v5,Standard_E48s_v5,Standard_E64-16s_v5,Standard_E64-32s_v5,Standard_E64s_v5,Standard_E96-24s_v5,Standard_E96-48s_v5,Standard_E96s_v5,Standard_E104is_v5,Standard_E2_v5,Standard_E4_v5,Standard_E8_v5,Standard_E16_v5,Standard_E20_v5,Standard_E32_v5,Standard_E48_v5,Standard_E64_v5,Standard_E96_v5,Standard_E104i_v5,Standard_E2bs_v5,Standard_E4bs_v5,Standard_E8bs_v5,Standard_E16bs_v5,Standard_E32bs_v5,Standard_E48bs_v5,Standard_E64bs_v5,Standard_E96bs_v5,Standard_E112ibs_v5,Standard_E2bds_v5,Standard_E4bds_v5,Standard_E8bds_v5,Standard_E16bds_v5,Standard_E32bds_v5,Standard_E48bds_v5,Standard_E64bds_v5,Standard_E96bds_v5,Standard_E112ibds_v5,Standard_D2ls_v5,Standard_D4ls_v5,Standard_D8ls_v5,Standard_D16ls_v5,Standard_D32ls_v5,Standard_D48ls_v5,Standard_D64ls_v5,Standard_D96ls_v5,Standard_D2lds_v5,Standard_D4lds_v5,Standard_D8lds_v5,Standard_D16lds_v5,Standard_D32lds_v5,Standard_D48lds_v5,Standard_D64lds_v5,Standard_D96lds_v5,Standard_B2ls_v2,Standard_B2s_v2,Standard_B2ts_v2,Standard_B4ls_v2,Standard_B4s_v2,Standard_B8ls_v2,Standard_B8s_v2,Standard_B16ls_v2,Standard_B16s_v2,Standard_B32ls_v2,Standard_B32s_v2,Standard_A0,Standard_A1,Standard_A2,Standard_A3,Standard_A5,Standard_A4,Standard_A6,Standard_A7,Basic_A0,Basic_A1,Basic_A2,Basic_A3,Basic_A4,Standard_M12s_v3,Standard_M24s_v3,Standard_M48s_1_v3,Standard_M96s_1_v3,Standard_M96s_2_v3,Standard_M176s_3_v3,Standard_M176s_4_v3,Standard_M12ds_v3,Standard_M24ds_v3,Standard_M48ds_1_v3,Standard_M96ds_1_v3,Standard_M96ds_2_v3,Standard_M176ds_3_v3,Standard_M176ds_4_v3,Standard_E64i_v3,Standard_E64is_v3,Standard_M208ms_v2,Standard_M208s_v2,Standard_M416-208s_v2,Standard_M416s_v2,Standard_M416-208ms_v2,Standard_M416ms_v2,Standard_M416s_8_v2,Standard_L8s_v3,Standard_L16s_v3,Standard_L32s_v3,Standard_L48s_v3,Standard_L64s_v3,Standard_L80s_v3,Standard_NC4as_T4_v3,Standard_NC8as_T4_v3,Standard_NC16as_T4_v3,Standard_NC64as_T4_v3,Standard_NV6s_v2,Standard_NV12s_v2,Standard_NV24s_v2,Standard_NV12s_v3,Standard_NV24s_v3,Standard_NV48s_v3,Standard_HB120-16rs_v2,Standard_HB120-32rs_v2,Standard_HB120-64rs_v2,Standard_HB120-96rs_v2,Standard_HB120rs_v2,Standard_D2plds_v5,Standard_D4plds_v5,Standard_D8plds_v5,Standard_D16plds_v5,Standard_D32plds_v5,Standard_D48plds_v5,Standard_D64plds_v5,Standard_D2pls_v5,Standard_D4pls_v5,Standard_D8pls_v5,Standard_D16pls_v5,Standard_D32pls_v5,Standard_D48pls_v5,Standard_D64pls_v5,Standard_D2pds_v5,Standard_D4pds_v5,Standard_D8pds_v5,Standard_D16pds_v5,Standard_D32pds_v5,Standard_D48pds_v5,Standard_D64pds_v5,Standard_D2ps_v5,Standard_D4ps_v5,Standard_D8ps_v5,Standard_D16ps_v5,Standard_D32ps_v5,Standard_D48ps_v5,Standard_D64ps_v5,Standard_E2pds_v5,Standard_E4pds_v5,Standard_E8pds_v5,Standard_E16pds_v5,Standard_E20pds_v5,Standard_E32pds_v5,Standard_E2ps_v5,Standard_E4ps_v5,Standard_E8ps_v5,Standard_E16ps_v5,Standard_E20ps_v5,Standard_E32ps_v5,Standard_B2pls_v2,Standard_B2ps_v2,Standard_B2pts_v2,Standard_B4pls_v2,Standard_B4ps_v2,Standard_B8pls_v2,Standard_B8ps_v2,Standard_B16pls_v2,Standard_B16ps_v2,Standard_NC24ads_A100_v4,Standard_NC48ads_A100_v4,Standard_NC96ads_A100_v4,Standard_L8s_v2,Standard_L16s_v2,Standard_L32s_v2,Standard_L48s_v2,Standard_L64s_v2,Standard_L80s_v2,Standard_NV6ads_A10_v5,Standard_NV12ads_A10_v5,Standard_NV18ads_A10_v5,Standard_NV36adms_A10_v5,Standard_NV36ads_A10_v5,Standard_NV72ads_A10_v5,Standard_DC8_v2,Standard_DC1s_v2,Standard_DC2s_v2,Standard_DC4s_v2,Standard_ND40rs_v2,Standard_HC44-16rs,Standard_HC44-32rs,Standard_HC44rs,Standard_HX176-24rs,Standard_HX176-48rs,Standard_HX176-96rs,Standard_HX176-144rs,Standard_HX176rs,Standard_HB176-24rs_v4,Standard_HB176-48rs_v4,Standard_HB176-96rs_v4,Standard_HB176-144rs_v4,Standard_HB176rs_v4,Standard_FX4mds,Standard_FX12mds,Standard_FX24mds,Standard_FX36mds,Standard_FX48mds,Standard_NP10s,Standard_NP20s,Standard_NP40s,Standard_NV4as_v4,Standard_NV8as_v4,Standard_NV16as_v4,Standard_NV32as_v4,Standard_ND96isr_H100_v5,Standard_ND96amsr_A100_v4,Standard_HB120-16rs_v3,Standard_HB120-32rs_v3,Standard_HB120-64rs_v3,Standard_HB120-96rs_v3,Standard_HB120rs_v3,Standard_NC6s_v3,Standard_NC12s_v3,Standard_NC24rs_v3,Standard_NC24s_v3,Standard_DC1s_v3,Standard_DC2s_v3,Standard_DC4s_v3,Standard_DC8s_v3,Standard_DC16s_v3,Standard_DC24s_v3,Standard_DC32s_v3,Standard_DC48s_v3,Standard_DC1ds_v3,Standard_DC2ds_v3,Standard_DC4ds_v3,Standard_DC8ds_v3,Standard_DC16ds_v3,Standard_DC24ds_v3,Standard_DC32ds_v3,Standard_DC48ds_v3,Standard_G1,Standard_G2,Standard_G3,Standard_G4,Standard_G5,Standard_GS1,Standard_GS2,Standard_GS3,Standard_GS4,Standard_GS4-4,Standard_GS4-8,Standard_GS5,Standard_GS5-8,Standard_GS5-16,Standard_L4s,Standard_L8s,Standard_L16s,Standard_L32s,Standard_PB6s,Standard_HB60-15rs,Standard_HB60-30rs,Standard_HB60-45rs,Standard_HB60rs,Standard_ND96asr_v4,Standard_ND40s_v3,Standard_NC40ads_H100_v5,Standard_NC80adis_H100_v5,Standard_NC8ads_A10_v4,Standard_NC16ads_A10_v4,Standard_NC32ads_A10_v4. Find out more on the valid VM sizes in each region at https://aka.ms/azure-regionservices.
Target: vmSize
[ERROR   ] Error creating VM myvm001! ({})
Error: There was a profile error: Error creating VM myvm001! ({})

Expected behavior
A clear and concise description of what you expected to happen.

salt-cloud -p my-azurerm-profile myvm001 should succeed without error

Screenshots
If applicable, add screenshots to help explain your problem.

Versions Report

salt --versions-report (Provided by running salt --versions-report. Please also mention any differences in master/minion versions.)
Salt Version:
            Salt: 3006.5
 
Python Version:
          Python: 3.10.13 (main, Nov 15 2023, 04:34:27) [GCC 11.2.0]
 
Dependency Versions:
            cffi: 1.14.6
        cherrypy: unknown
        dateutil: 2.8.1
       docker-py: Not Installed
           gitdb: Not Installed
       gitpython: Not Installed
          Jinja2: 3.1.2
         libgit2: 1.7.2
    looseversion: 1.0.2
        M2Crypto: Not Installed
            Mako: Not Installed
         msgpack: 1.0.2
    msgpack-pure: Not Installed
    mysql-python: Not Installed
       packaging: 22.0
       pycparser: 2.21
        pycrypto: Not Installed
    pycryptodome: 3.9.8
          pygit2: 1.14.1
    python-gnupg: 0.4.8
          PyYAML: 6.0.1
           PyZMQ: 23.2.0
          relenv: 0.14.2
           smmap: Not Installed
         timelib: 0.2.4
         Tornado: 4.5.3
             ZMQ: 4.3.4
 
Salt Extensions:
 saltext.azurerm: 4.1.0
 
System Versions:
            dist: ubuntu 20.04.6 focal
          locale: utf-8
         machine: x86_64
         release: 5.15.0-1060-azure
          system: Linux
         version: Ubuntu 20.04.6 focal

Additional context
Add any other context about the problem here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.