azure icon indicating copy to clipboard operation
azure copied to clipboard

Inventory Plugin ignores ANSIBLE_AZURE_AUTH_SOURCE, AZURE_CLIENT_ID env variables

Open kingsleyadam opened this issue 3 years ago • 3 comments

SUMMARY

When setting the environment variable ANSIBLE_AZURE_AUTH_SOURCE the inventory plugin ignores the setting and reverts to using the auto auth source which if nothing else is set, reverts to cli.

Also, when setting auth_source: msi we should also be able to set the AZURE_CLIENT_ID environment variable to tell the auth mechanism which user assigned identity to use (if multiple set) when authenticating with managed identities.

ISSUE TYPE
  • Bug Report
COMPONENT NAME

plugin: azure.azcollection.azure_rm

ANSIBLE VERSION
ansible 2.9.27
  config file = /opt/ansible-repo/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /opt/stackstorm/virtualenvs/ansible/lib/python3.8/site-packages/ansible
  executable location = /opt/stackstorm/virtualenvs/ansible/bin/ansible
  python version = 3.8.10 (default, Sep 28 2021, 16:10:42) [GCC 9.3.0]
COLLECTION VERSION
v1.10.0
CONFIGURATION
ANSIBLE_PIPELINING(/opt/ansible-repo/ansible.cfg) = True
COLLECTIONS_PATHS(/opt/ansible-repo/ansible.cfg) = ['/root/.ansible/collections', '/opt/ansible-repo/collections']
DEFAULT_FORKS(/opt/ansible-repo/ansible.cfg) = 50
DEFAULT_HOST_LIST(/opt/ansible-repo/ansible.cfg) = ['/opt/ansible-repo/hosts']
DEFAULT_LOOKUP_PLUGIN_PATH(/opt/ansible-repo/ansible.cfg) = ['/root/.ansible/plugins/lookup', '/usr/share/ansible/plugins/lookup', '/opt/ansible-repo/lookup_plugins']
DEFAULT_ROLES_PATH(/opt/ansible-repo/ansible.cfg) = ['/root/.ansible/roles', '/opt/ansible-repo/roles']
DEFAULT_SCP_IF_SSH(/opt/ansible-repo/ansible.cfg) = True
DEFAULT_TIMEOUT(/opt/ansible-repo/ansible.cfg) = 30
HOST_KEY_CHECKING(/opt/ansible-repo/ansible.cfg) = False
HOST_PATTERN_MISMATCH(/opt/ansible-repo/ansible.cfg) = ignore
INVENTORY_ENABLED(/opt/ansible-repo/ansible.cfg) = ['amazon.aws.aws_ec2', 'amazon.aws.aws_rds', 'azure.azcollection.azure_rm', 'constructed', 'ini', 'yaml', 'host_list']
RETRY_FILES_SAVE_PATH(/opt/ansible-repo/ansible.cfg) = /root
OS / ENVIRONMENT
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.3 LTS
Release:	20.04
Codename:	focal
STEPS TO REPRODUCE

Inventory Plugin Example

---
plugin: azure.azcollection.azure_rm
# auth_source: cli # Set this with environment variable ANSIBLE_AZURE_AUTH_SOURCE
include_vm_resource_groups:
  - '*'
hostnames:
  - default
exclude_host_filters:
  - powerstate != 'running'
hostvar_expressions:
  ansible_host: private_ipv4_addresses | first

Environment Variables

export ANSIBLE_AZURE_AUTH_SOURCE=msi
export AZURE_CLIENT_ID=<user assigned client id>

Playbook

---
- hosts: all
  tasks:
    - name: Ping hosts
      ping:
EXPECTED RESULTS

I would expect the inventory plugin to use MSI authentication with the AZURE_CLIENT_ID specified in the environment variable.

ACTUAL RESULTS

MSI authentication is being ignored and it fails to find any authentication mechanisms if the azure cli is not logged in.

Using /opt/ansible-repo/ansible.cfg as config file
[WARNING]:  * Failed to parse /opt/ansible-repo/inventory/ops-az/azure_rm.yml with ansible_collections.azure.azcollection.plugins.inventory.azure_rm plugin: Failed to get credentials. Either pass as parameters, set environment
variables, define a profile in ~/.azure/credentials, or log in with Azure CLI (`az login`).

kingsleyadam avatar Dec 20 '21 14:12 kingsleyadam

The same problem exists with auth_source: env. Setting environment variables AZURE_CLIENT_ID, AZURE_SECRET, AZURE_TENANT and AZURE_SUBSCRIPTION_ID leads to warning messages and then reverts to cli auth, as mentioned above.

Tested with ansible 2.12.1 and azcollection 1.10.0

rvolz avatar Feb 14 '22 09:02 rvolz

hi, any news on this? on azure.azcollection 1.12.0 this problems seems to be still there

Thanks

testotxt avatar Jul 29 '22 05:07 testotxt

@testotxt #713 still needs to be improved, it can't be merged yet! Thank you very much!

Fred-sun avatar Jul 30 '22 08:07 Fred-sun

@testotxt #713 still needs to be improved, it can't be merged yet! Thank you very much!

@Fred-sun, I've added test cases to the PR. Can we review it again to see if we can merge this in? Thanks!

kingsleyadam avatar Nov 16 '22 15:11 kingsleyadam