27. AWX 故障排除

AWX 用户界面内置了一些故障排除工具,可以帮助您解决可能遇到的某些问题。要访问这些工具,请导航到设置,然后选择故障排除

../_images/settings_troubleshooting_highlighted.png

可用的选项是

  • 启用或禁用 tmp 目录清理:选择您是否要清理 tmp 目录。

  • 调试 Web 请求:选择您是否要让 Web 请求记录用于调试的消息。

  • 发布接收器工作:禁用清理作业 Pod。如果禁用此功能,作业 Pod 将无限期地保留在您的集群中,允许您在运行后检查它们。如果您在那里丢失了数据,请运行 kubectl logs <job-pod-name> 并将日志提供给问题报告。

../_images/troubleshooting_options.png

点击编辑修改设置。使用切换开关启用或禁用相应的设置。

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 实例,请执行以下步骤

  1. 在 AWX 界面中,选择您的库存。

  2. 单击源设置为 AWS 的组,然后单击源选项卡。

  3. 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

如果您在检查完这些选项后仍然遇到问题,请提交支持工单。