27. AWX 故障排除
AWX 用户界面内置了一些故障排除工具,可以帮助您解决可能遇到的某些问题。要访问这些工具,请导航到设置,然后选择故障排除。
可用的选项是
启用或禁用 tmp 目录清理:选择您是否要清理
tmp
目录。调试 Web 请求:选择您是否要让 Web 请求记录用于调试的消息。
发布接收器工作:禁用清理作业 Pod。如果禁用此功能,作业 Pod 将无限期地保留在您的集群中,允许您在运行后检查它们。如果您在那里丢失了数据,请运行
kubectl logs <job-pod-name>
并将日志提供给问题报告。
点击编辑修改设置。使用切换开关启用或禁用相应的设置。
27.1. 错误日志记录和额外设置
AWX 服务器错误是流式传输的,不会被记录,但是您可能可以通过 AWX 规范文件传递它们。
使用 extra_settings
,您可以通过 awx-operator
传递多个自定义设置。参数 extra_settings
将被追加到 /etc/tower/settings.py
文件,并且可以作为 extra_volumes
参数的替代方案。
名称 |
描述 |
默认值 |
extra_settings |
额外设置 |
‘’ |
在 extra_settings
中配置的参数在 AWX 中被设置为只读设置。因此,在部署后无法在 UI 中更改它们。如果您需要在初始部署后更改设置,则需要在 AWX CR 规范中进行更改。
extra_settings
参数的示例配置
spec:
extra_settings:
- setting: MAX_PAGE_SIZE
value: "500"
- setting: AUTH_LDAP_BIND_DN
value: "cn=admin,dc=example,dc=com"
- setting: LOG_AGGREGATOR_LEVEL
value: "'DEBUG'"
对于某些设置,例如 LOG_AGGREGATOR_LEVEL
,该值可能需要双引号,如上面的示例所示。
27.2. sosreport
sosreport
是一个用于收集诊断信息的实用程序,用于根本原因分析。
27.3. 连接到主机的故障
如果您无法从快速入门指南或其他剧本运行 helloworld.yml
示例剧本,因为主机连接错误,请尝试以下操作
您可以
ssh
到您的主机吗?Ansible 依赖于对您正在管理的服务器的 SSH 访问。您的主机名和 IP 是否已正确添加到您的清单文件?(检查是否有错别字。)
27.4. 无法通过 HTTP 登录 AWX
通过安全协议(HTTPS)有意限制对 AWX 的访问。在您的配置设置为在负载均衡器或代理后面运行 AWX 节点作为“仅 HTTP”,并且您只想在没有 SSL 的情况下访问它(例如,用于故障排除)的情况下,您可以更改 AWX 实例的 /etc/tower/conf.d
的设置。该操作员有 extra_settings
,允许您在 OCP 中更改基于文件的设置。有关详细信息,请参阅 错误日志记录和额外设置。
一旦进入规范,请根据需要设置以下内容
SESSION_COOKIE_SECURE = False
CSRF_COOKIE_SECURE = False
将这些设置更改为 False
将允许 AWX 在使用 HTTP 协议时管理 cookie 和登录会话。这必须在集群安装的每个节点上完成才能生效。
要应用更改,请运行
awx-service restart
27.5. 直播事件的 WebSockets 端口无法正常工作
AWX 使用 AWX 服务器上的端口 80/443 将剧本活动和其他事件的实时更新流式传输到客户端浏览器。默认情况下,这些端口配置为 80/443,但如果它们被防火墙阻止,请关闭为以前的 websocket 端口打开或添加的任何防火墙规则,这将确保您的防火墙允许流量通过此端口。
27.6. 运行剧本时出现问题
如果您无法从快速入门指南或其他剧本运行 helloworld.yml
示例剧本,因为剧本错误,请尝试以下操作
您是否正在使用当前运行命令的用户进行身份验证?如果没有,请检查用户名是如何设置的,或者传递
--user=username
或-u username
命令来指定用户。您的 YAML 文件缩进是否正确?您可能需要正确地对齐您的空格。缩进级别在 YAML 中很重要。您可以使用
yamlint
检查您的剧本。有关更多信息,请参阅 YAML 简介:https://docs.ansible.org.cn/YAMLSyntax.html以
-
开头的项被认为是列表项或剧本。格式为key: value
的项充当哈希或字典。确保您没有额外的或缺少的-
剧本。
27.7. 运行作业时出现问题
如果您在从剧本运行作业时遇到问题,您应该查看剧本 YAML 文件。在手动导入剧本或通过源代码控制机制导入剧本时,请记住,主机定义由 AWX 控制,应设置为 hosts: all
。
27.8. 剧本未显示在“作业模板”下拉列表中
如果您的剧本未显示在作业模板下拉列表中,您可以检查以下几点
确保剧本是有效的 YML,并且可以由 Ansible 解析。
确保项目路径 (/var/lib/awx/projects) 的权限和所有权已设置,以便“awx”系统用户可以查看文件。您可以运行以下命令更改所有权
chown awx -R /var/lib/awx/projects/
27.9. 剧本一直处于挂起状态
如果您尝试运行剧本作业并且它一直处于“挂起”状态,请尝试以下操作
确保所有 supervisor 服务都通过
supervisorctl status
运行。检查以确保
/var/
分区有超过 1 GB 的可用空间。作业将不会在/var/
分区空间不足的情况下完成。在 AWX 服务器上运行
awx-service restart
。
如果您继续遇到问题,请在 AWX 服务器上以 root 身份运行 sosreport
,然后将结果提交 支持请求。
27.10. 取消 AWX 作业
当对当前正在运行的 AWX 作业发出 cancel
请求时,AWX 会向 ansible-playbook
进程发出 SIGINT
。虽然这会导致 Ansible 停止调度新任务并退出,但在许多情况下,已经调度到远程主机上的模块任务将继续运行到完成。此行为类似于在命令行 Ansible 运行期间按 Ctrl-C
。
关于软件依赖关系,如果正在运行的作业被取消,则该作业实际上会被删除,但依赖关系会保留。
27.11. 重复使用外部数据库会导致安装失败
据报道,在节点的后续安装过程中重复使用外部数据库会导致安装失败。
例如,假设您执行了集群安装。接下来,假设您需要再次执行此操作并执行第二次集群安装,但重复使用相同的外部数据库,只有这次后续安装失败。
在设置之前安装中使用过的外部数据库时,必须在任何其他安装成功之前手动清除用于集群节点的数据库。
27.12. AWX 库存中的私有 EC2 VPC 实例
默认情况下,AWX 只显示 VPC 中与弹性 IP (EIP) 关联的实例。要查看所有 VPC 实例,请执行以下步骤
在 AWX 界面中,选择您的库存。
单击源设置为 AWS 的组,然后单击源选项卡。
在
Source Variables
框中,输入
vpc_destination_variable: private_ip_address
接下来,保存然后触发组的更新。完成此操作后,您应该能够看到所有 VPC 实例。
注意
如果您想配置这些实例,AWX 必须在具有访问这些实例权限的 VPC 中运行。
27.13. 排查“错误:提供的宿主列表为空”
如果您在尝试通过 AWX 运行剧本时收到“跳过:没有匹配的宿主”消息,以下是一些需要检查的事项
确保剧本中宿主声明行与库存中组/宿主的名称完全匹配(区分大小写)。
如果它确实匹配,并且您使用的是 Ansible Core 2.0 或更高版本,请检查您的组名称是否有空格,并修改它们以使用下划线或无空格,以确保组可以被识别。
确保如果您在作业模板中指定了限制,它是一个有效的限制值,并且仍然与库存中的内容匹配。Limit 字段接受模式参数,此处有说明: https://docs.ansible.org.cn/intro_patterns.html
如果您在检查完这些选项后仍然遇到问题,请提交支持工单。