Uploaded image for project: 'Ansible Automation Platform RFEs'
  1. Ansible Automation Platform RFEs
  2. AAPRFE-2075

RFE - Update the microsoft.ldap.ad inventory plugin to use data tagging

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Unresolved
    • Icon: Normal Normal
    • None
    • 2.5
    • content
    • False
    • Hide

      None

      Show
      None
    • False

      What is the nature and description of the request?

      The current `microsoft.ldap.ad` inventory plugin marks attributes, sourced from external repository, as unsafe. This causes issues when trying to utilize the plugin in Ansible Automation Platform. The following issue occurs when trying to sync inventory with the plugin.

      Traceback (most recent call last):
        File "/var/lib/awx/venv/awx/lib64/python3.9/site-packages/awx/main/tasks/jobs.py", line 1691, in post_run_hook
          cmd.perform_update(options, data, inventory_update)
        File "/var/lib/awx/venv/awx/lib64/python3.9/site-packages/awx/main/management/commands/inventory_import.py", line 996, in perform_update
          inventory = dict_to_mem_data(data, inventory=inventory)
        File "/var/lib/awx/venv/awx/lib64/python3.9/site-packages/awx/main/utils/mem_inventory.py", line 260, in dict_to_mem_data
          host = inventory.get_host(hk)
        File "/var/lib/awx/venv/awx/lib64/python3.9/site-packages/awx/main/utils/mem_inventory.py", line 129, in get_host
          m = ipv6_port_re.match(name)
      TypeError: expected string or bytes-like object
      

      Specifically, a customer may want to use one fo the attributes from AD as the name of the group via the `keyed_groups` parameter.

      ---
      plugin: microsoft.ad.ldap
      search_base: OU=domain,DC=example,DC=org
      attributes:
        memberOf:
          computer_membership: this | map("regex_search", '^CN=(?P<name>.+?)((?<!\\),)', '\g<name>') | flatten
        operatingSystem:
          operating_system: this
        name:
          ad_name: this
        inventory_hostname: ad_name | lower
      groups:
        Windows: '"Windows" in operating_system'
      
      leading_separator: false
      keyed_groups:
        - key: computer_membership | default(omit)
          default_value: unknown
      

      Why does the customer need this? (List the business requirements here)

      Customer would like to base group names on an attribute from Active Directory.

      How would you like to achieve this? (List the functional requirements here)

      • Update the inventory plugin to use the new data tagging feature in ansible-core

      List any affected known dependencies: Doc, UI etc..

      Github Link if any

              stevefulme1 Stephen Fulmer
              rhn-support-mmitschk Max Mitschke
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: