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