我使用 Ubuntu 作为控制节点,并希望从我的域控制器 (windows server 2022) 获取主机,LDAP 库存指南µsoft.ad.ldap inventory – Active Directory 的库存插件文档没有足够的帮助。
inventory.microsoft.ad.yml
我创建了一个名为also tried 的文件inventory.microsoft.ad.ldap.yml
,并在其中填充了以下内容:
plugin: microsoft.ad.ldap
server: ldap://example.domain.com
base_dn: dc=example,dc=com
bind_dn: cn=Administrator,cn=Users,dc=example,dc=com
bind_password: admin_pass
query_filter: (objectClass=computer)
之后我就跑了ansible-inventory -i /etc/ansible/inventory.microsoft.ad.yml --list
我收到以下错误:
[WARNING]: * Failed to parse /etc/ansible/inventory.microsoft.ad.yml with auto
plugin: inventory config '/etc/ansible/inventory.microsoft.ad.yml' specifies
unknown plugin 'microsoft.ad.ldap'
[WARNING]: * Failed to parse /etc/ansible/inventory.microsoft.ad.yml with yaml
plugin: Plugin configuration YAML file, not YAML inventory
[WARNING]: * Failed to parse /etc/ansible/inventory.microsoft.ad.yml with ini
plugin: Invalid host pattern 'plugin:' supplied, ending in ':' is not allowed,
this character is reserved to provide a port.
[WARNING]: Unable to parse /etc/ansible/inventory.microsoft.ad.yml as an
inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
不确定为什么它返回unknown plugin microsoft.ad.ldap
文档使用这个插件并且我通过运行验证了 microsoft.ad 已安装ansible-galaxy collection list
。
我还确保安装了文档中指定的要求:
- dnspython
- pyspnego >= 0.8.0
- pyspnego[kerberos]
- 桑斯德普
我甚至不确定我的步骤是否正确,因为我找不到任何解释如何为 Microsoft AD 创建动态库存的资料来源,我发现的只是与云提供商相关的内容。
我还发现互联网上有人为动态库存创建 Python 脚本,尽管没有在文档中看到它,不确定是否需要创建 Python 脚本或仅使用插件就足够了。
答案1
文件名必须是 microsoft.ad.ldap.yml 或 microsoft.ad.ldap.yaml。
文件应该位于 inventory 目录中。
库存/microsoft.ad.ldap.yml
如果您使用 AAP,则这里有一个示例:https://autodotes.com/posts/xnl1o59Sdls9p7vZleBf
答案2
而且这个问题有点老了,我刚刚自己解决了这个问题,并认为这个解决方案可以帮助别人。
正如罗伯特所说,库存文件必须命名为inventories/microsoft.ad.ldap.yml
(.yAml 也可以。
这对我来说还不够。默认的 awx-ee 执行环境没有 microsoft.ad 插件,使用 requirements.yml 文件强制安装对我来说不起作用。我必须构建一个自定义 EE,我使用 ansible builder v3 完成了这项工作。
为此,我创建了一个名为的文件,execution-environment.yml
其内容如下:
---
version: 3
images:
base_image:
name: quay.io/ansible/awx-ee:24.2.0
dependencies:
galaxy: requirements.yml
python:
- pyspnego
- sansldap
以及requirements.yml
包含以下内容的文件:
---
collections:
- name: awx.awx
- name: microsoft.ad
我用它来构建我的图像,ansible-builder
并将图像推送到 dockerhub 以供我的构建使用。我为 AWX 构建了它,因此选择了 base_image 和 collections。插入集合 awx.awx 可能是多余的,因为我怀疑它已经在 awx-ee 中了。
我浪费了大部分时间的问题是,我假设 LDAP 查询需要 bind_dn,并且我将一个可分辨名称作为用户名,而microsoft.ad.ldap
插件需要一种user@domain
格式。