Tower 服务器错误记录在 /var/log/tower
中。 监督程序日志可在 /var/log/supervisor/
中找到。 Nginx Web 服务器错误记录在 httpd 错误日志中。 在 /etc/tower/conf.d/
中配置其他 Tower 日志记录需求。
使用大多数浏览器内置的 JavaScript 控制台探索客户端问题,并将任何错误报告给 Ansible,方法是访问 Red Hat 客户门户网站 https://access.redhat.com/。
sosreport
是一个实用程序,它收集支持人员用来分析和调查您报告的问题的诊断信息。 为正确地向技术支持提供此信息,请参考 Red Hat 客户门户网站上的 sosreport 的知识库文章 执行以下步骤
安装 sosreport 实用程序。
将 sosreport 提供给 Red Hat 支持部门。
如果您无法从快速入门指南或其他剧本中运行 helloworld.yml
示例剧本,因为主机连接错误,请尝试以下操作
您可以 ssh
到您的主机吗? Ansible 依赖于对您正在管理的服务器的 SSH 访问。
您的主机名和 IP 是否已正确添加到您的清单文件中? (检查是否有拼写错误。)
对 Tower 的访问有意地通过安全协议 (HTTPS) 限制。 在您的配置设置为在负载均衡器或代理后面运行 Tower 节点作为“仅 HTTP”,并且您只想在没有 SSL 的情况下访问它(例如,用于故障排除)的情况下,您必须在 custom.py
文件中添加以下设置,该文件位于 Tower 实例的 /etc/tower/conf.d
中
SESSION_COOKIE_SECURE = False
CSRF_COOKIE_SECURE = False
将这些设置更改为 False
将允许 Tower 在使用 HTTP 协议时管理 cookie 和登录会话。 必须在集群安装的每个节点上执行此操作才能正常生效。
要应用更改,请运行
ansible-tower-service restart
Ansible Tower 使用 Tower 服务器上的端口 80/443 将剧本活动和其他事件的实时更新流式传输到客户端浏览器。 这些端口默认配置为 80/443,但如果它们被防火墙阻止,请关闭为先前的 websocket 端口打开或添加的任何防火墙规则,这将确保您的防火墙允许流量通过此端口。
如果您无法从快速入门指南或其他剧本中运行 helloworld.yml
示例剧本,因为剧本错误,请尝试以下操作
您是否正在使用当前运行命令的用户进行身份验证? 如果不是,请检查用户名是如何设置的,或者传递 --user=username
或 -u username
命令来指定用户。
您的 YAML 文件是否正确缩进? 您可能需要正确排列您的空格。 缩进级别在 YAML 中很重要。 您可以使用 yamlint
检查您的剧本。 有关更多信息,请参阅 YAML 简介:https://docs.ansible.org.cn/YAMLSyntax.html
以 -
开头的项目被视为列表项目或剧本。 格式为 key: value
的项目充当哈希或字典。 确保您没有额外的或缺少的 -
剧本。
如果您在从剧本运行作业时遇到问题,您应该查看剧本 YAML 文件。 导入剧本时(无论是手动还是通过源代码控制机制),请记住主机定义由 Tower 控制,应设置为 hosts: all
。
如果您的剧本没有出现在作业模板下拉列表中,您可以检查以下几个方面:
确保剧本是有效的 YML,并且可以被 Ansible 解析。
确保项目路径 (/var/lib/awx/projects) 的权限和所有权已设置好,以便“awx”系统用户可以查看文件。您可以运行以下命令来更改所有权:
chown awx -R /var/lib/awx/projects/
如果您尝试运行剧本作业,但它一直处于“挂起”状态,请尝试以下操作:
使用 supervisorctl status
确保所有 supervisor 服务都在运行。
检查确保 /var/
分区至少有 1 GB 的可用空间。如果 /var/
分区空间不足,作业将无法完成。
在 Tower 服务器上运行 ansible-tower-service restart
。
如果您仍然遇到问题,请在 Tower 服务器上以 root 用户身份运行 sosreport
,然后将结果提交 支持请求。
当对当前正在运行的 Tower 作业发出 cancel
请求时,Tower 会向 ansible-playbook
进程发送 SIGINT
。虽然这会导致 Ansible 停止调度新任务并退出,但在许多情况下,已调度到远程主机上的模块任务将继续运行至完成。此行为类似于在命令行 Ansible 运行过程中按下 Ctrl-C
。
关于软件依赖关系,如果正在运行的作业被取消,该作业实际上会被删除,但依赖关系将保留。
据报道,在后续节点安装过程中重用外部数据库会导致安装失败。
例如,假设您执行了集群安装。接下来,假设您需要再次执行此操作,并执行第二次集群安装,重用了相同的外部数据库,但这次后续安装失败了。
在设置用于先前安装的外部数据库时,必须先手动清除用于集群节点的数据库,然后才能成功进行任何其他安装。
Ansible Tower 中的 bubblewrap 功能限制了在剧本运行期间剧本可以查看和使用的 Tower 文件系统上的目录。您可能会发现,在某些情况下需要自定义 bubblewrap 设置。为了微调您的 bubblewrap 使用方式,可以设置某些变量。
要为运行作业(仅限剧本运行)禁用或启用 bubblewrap 支持,请确保您已以管理员用户身份登录。
从左侧导航栏中点击设置 () 图标。
点击 **作业** 选项卡。
在 **启用作业隔离** 中,将切换按钮选择更改为 **关闭** 以禁用 bubblewrap 支持,或选择 **开启** 以启用它。
默认情况下,Tower 将使用系统的 tmp
目录(默认情况下为 /tmp
)作为其暂存区域。这可以在配置 Tower 屏幕的 **作业执行路径** 字段中更改,或者通过更新 settings 文件中的以下条目进行更改:
AWX_PROOT_BASE_PATH = "/opt/tmp"
如果系统中有其他敏感信息需要隐藏,可以在配置 Tower 屏幕中的 **对隔离作业隐藏的路径** 中指定这些信息,或者通过更新 settings 文件中的以下条目进行更改:
AWX_PROOT_HIDE_PATHS = ['/list/of/', '/paths']
如果需要特别公开任何目录,可以在配置 Tower 屏幕中的 **对隔离作业公开的路径** 中指定这些信息,或者通过更新 settings 文件中的以下条目进行更改:
AWX_PROOT_SHOW_PATHS = ['/list/of/', '/paths']
注意
您可能想要添加到
AWX_PROOT_SHOW_PATHS
的主要文件是/var/lib/awx/.ssh
,如果您的剧本需要使用在那里定义的密钥或设置。
以上字段可以在作业设置窗口中找到。
如果您在 settings 文件中进行了更改,请确保在保存更改后使用 ansible-tower-service restart
命令重新启动服务。
默认情况下,Tower 只会显示与 VPC 中的实例关联的弹性 IP (EIP)。要查看您的所有 VPC 实例,请执行以下步骤:
在 Tower 界面中,选择您的库存。
点击源设置为 AWS 的组,然后点击源选项卡。
在 源 变量
框中,输入:
vpc_destination_variable: private_ip_address
接下来,保存并触发组的更新。完成此操作后,您应该能够看到您所有的 VPC 实例。
注意
如果您要配置这些实例,则 Tower 必须在可以访问这些实例的 VPC 中运行。
如果您在尝试通过 Tower 运行剧本时收到“跳过:没有主机匹配”消息,请检查以下几个方面:
确保剧本中的宿主声明行与库存中的组/宿主名称完全匹配(区分大小写)。
如果它确实匹配,并且您使用的是 Ansible Core 2.0 或更高版本,请检查您的组名称中是否有空格,并将它们修改为使用下划线或不使用空格,以确保可以识别这些组。
确保如果在作业模板中指定了限制,则它是一个有效的限制值,并且仍然与库存中的内容匹配。限制字段接受模式参数,此处有说明: https://docs.ansible.org.cn/intro_patterns.html
如果您在检查完这些选项后仍然遇到问题,请提交支持工单。