控制器服务器的错误被记录在 /var/log/tower
中。监控器日志可在 /var/log/supervisor/
中找到。Nginx 网页服务器错误记录在 httpd 错误日志中。在 /etc/tower/conf.d/
中配置其他控制器日志记录需要。
使用内置于大多数浏览器中的 JavaScript 控制台来查看客户端的问题,并通过红帽客户门户网站(https://access.redhat.com/)向 Ansible 报告任何错误。
sosreport
是一个工具程序,可以用来收集对问题进行诊断分析所需要的数据。根据红帽客户门户网站中的 Knowledgebase article for sosreport 的内容来执行以下步骤:
Install the sosreport 工具程序。
向红帽支持提供 sosreport。
当运行快速启动指南中的 helloworld.yml
示例 playbook 或其他 playbook 时出现主机连接错误,请尝试以下操作:
您能 ssh
到您的主机吗?Ansible 需要通过 SSH 连接到被管理的服务器。
您的主机名和 IP 是否正确添加到您的清单文件中?(检查拼写错误。)
对控制器的访问被有意限制为需要通过安全协议 (HTTPS) 进行。当您的配置被设置为在负载均衡器或“仅限 HTTP”代理后面运行控制器节点,且您希望在不使用 SSL 的情况下访问它时(例如,进行故障排除),您必须将以下设置添加到控制器实例的 /etc/tower/conf.d
目录的 custom.py
文件中。
SESSION_COOKIE_SECURE = False
CSRF_COOKIE_SECURE = False
将这些设置修改为 False
将允许控制器在使用 HTTP 协议时管理 cookie 和登录会话。必须在集群安装的每个节点中执行此操作才能正确生效。
要应用这些更改,请运行:
automation-controller-service restart
automation controller 使用控制器服务器上的端口 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 时,请记住主机定义是由控制器控制,应该设置为 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/
分区空间不足,作业将无法完成。
在控制器服务器中运行 automation-controller-service restart
。
如果问题仍然存在,请以 root 用户身份在控制器服务器上运行 sosreport
,然后提交 support request 并包括运行命令的结果。
在当前运行的控制器作业上发出 cancel
请求时,控制器会发出 SIGINT
给 ansible-playbook
进程。这会导致 Ansible 停止分配新的任务并退出,在很多情况下,已经分配给远程主机的模块任务将会完成运行。此行为与命令行 Ansible 运行期间按 Ctrl-C
类似。
对于软件依赖项,如果取消正在运行的作业,则该作业将基本删除,但依赖项仍会保留。
在后续安装节点时重新使用外部 DB 会导致安装失败。
例如,您执行了集群的安装。然后,您需要再次进行安装,并使用相同的外部数据库执行第二次集群的安装。则第二次安装会失败。
在设置之前安装中使用的外部数据库时,必须在后续的安装进行前,手动清除在前一次安装时集群节点使用的数据库。
Automation controller 使用容器技术将作业相互隔离。默认情况下,只有当前项目公开给运行作业模板的容器。
您可能会发现,您需要自定义 playbook 运行以公开其他目录。要微调作业隔离的使用,可以设置某些变量。
默认情况下,automation controller 将使用系统的 tmp
目录(默认为``/tmp`` )作为其临时区域。这可以在作业设置屏幕的 Job Execution Path 字段中进行修改,也可以在位于 /api/v2/settings/jobs
的 REST API 中更改:
AWX_ISOLATION_BASE_PATH = "/opt/tmp"
如果应该从主机向运行 playbook 的容器公开任何其他目录,您可以在 Jobs 设置 scren 的 Paths to Expose to Isolated Jobs 字段中指定,或者在位于 /api/v2/settings/jobs
的 REST API 中指定它们:
AWX_ISOLATION_SHOW_PATHS = ['/list/of/', '/paths']
注解
如果 playbook 需要使用在
/var/lib/awx/.ssh
中定义的密钥或设置,则需要把它做为主文件添加到AWX_ISOLATION_SHOW_PATHS
。以上字段可在 Jobs Settings 窗口中找到:
28.12. 控制器清单中的私有 EC2 VPC 实例¶
默认情况下,控制器只显示 VPC 中具有与它们关联的弹性 IP (EIP) 的实例。要查看您的 VPC 实例,请执行以下步骤:
在控制器界面中,选择您的清单。
点击来源设置为 AWS 的组,并点击 Source 选项卡。
Source Variables
在方框中输入:vpc_destination_variable: private_ip_address接下来,保存并触发组更新。完成后,您应该可以看到所有 VPC 实例。
注解
如果要配置这些实例,必须在 VPC 中运行控制器,并可访问这些实例。
28.13. “Error: provided hosts list is empty” 的故障排除¶
如果您在试图通过控制器运行 playbook 时收到"Skipping: No Hosts Matched"消息,请检查以下几个问题:
确保 playbook 中的主机声明行与清单中您的组/主机的名称完全匹配(这些内容区分大小写)。
如果匹配,且您正在使用 Ansible Core 2.0 或更高版本,请检查您的组名称中包括的空格,把它们改为下划线或不包括空格以确保这些组可以被识别。
如果在作业模板中指定了 Limit,请确保它是一个有效的限制值,并且仍然匹配清单中的内容。Limit 字段采用模式参数,如下所述:http://docs.ansible.com/intro_patterns.html
如果您在检查这些选项后仍然遇到问题,请创建支持问题单。