![AWX 在配置回调期间找不到主机](https://linux22.com/image/783536/AWX%20%E5%9C%A8%E9%85%8D%E7%BD%AE%E5%9B%9E%E8%B0%83%E6%9C%9F%E9%97%B4%E6%89%BE%E4%B8%8D%E5%88%B0%E4%B8%BB%E6%9C%BA.png)
我最近设置了 RHEL Satellite,现在正在与我们的 AWX/Ansible Tower 实现集成。我使用的 curl 请求如下:
/usr/bin/curl -k -s --data "host_config_key={REDACTED}" https://awx.fqdn.com/api/v2/job_templates/34/callback/
这似乎(正确地)启动了库存同步(并且主机位于 Satellite 库存中),但 AWX 服务器返回{"msg":"No matching host could be found!"}
我发现的关于这个主题的文档很少,但指出主机名或 IP 可用于确定库存中的主机。
hostnamectl 返回的主机名是主机的 FQDN(与清单中的主机名完全匹配),但我也尝试将其设置为短名称,结果相同。
我昨天发现了一个 rDNS 问题,但已经解决了,所以现在 IP 也可以正确解析为库存主机名。
AWX 如何确定要使用的主机名?是否有任何日志可供参考?
编辑:我还应该补充一点,我尝试使用管理员用户名/密码发出 GET 请求,但 matching_hosts 数组为空。
curl http://admin:[email protected]/api/v2/job_templates/34/callback/
{"host_config_key":"{REDACTED}","matching_hosts":[]}
答案1
好吧,我明白了。我正在使用 Kubernetes 部署,由于请求是通过 Nginx 代理的,因此 AWX 看不到客户端的真实 IP。
查看 Web 服务器容器日志让我找到了正确的方向,因为它们显示的是 nginx 入口 IP,而不是客户端设备。解决方案很简单,只需在我的 AWX 规范中设置 HTTP_X_FORWARDED_FOR 并重新启动部署即可。
我也会在这里做一些记录,希望它能对别人有帮助...
- AWX 似乎仅根据清单就从 IP 解析主机(我最初认为不需要 rDNS)
- AWX 返回的 matching_hosts 数组仅包含与当前请求的 IP 匹配的主机(可能很明显,但我一度认为它可能会返回完整的清单)
- 在此初始阶段,仅更新/检查清单,剧本中配置的主机部分无关紧要。只有在更新清单并与主机匹配后,剧本才会被调用。(再次强调,这可能很明显,但我并不是 100% 清楚)