我正在运行安装了 Landscape On-Premises 16.06 的 Ubuntu Server 16.04.1,并且连接了 3 台计算机。几天以来,更新安全脚本不再运行,其他一切都按预期运行。为了确保我的设置没有问题,我从头开始执行了新安装。问题仍然存在,我收到永久警报,提示脚本update_security_db.sh
未运行 - 实际上,自全新安装以来它从未运行过。
这是我从中获得的错误信息/var/log/landscape-server/update-security-db.log
:
Sep 1 19:15:08 update-security-db ERR Unhandled error in Deferred:
Sep 1 19:15:08 update-security-db ERR
Sep 1 19:15:08 update-security-db ERR
Sep 1 19:15:08 update-security-db ERR Traceback (most recent call last):
Sep 1 19:15:08 update-security-db ERR Failure: txamqp.client.Closed: [Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.ConnectionLost'>: Connection to the other side was los$
Sep 1 19:15:08 update-security-db ERR ]
尝试update_security_db.sh
以景观用户身份手动运行脚本失败的。
(sudo -u landscape bash -x /opt/canonical/landscape/scripts/update_security_db.sh
)
所有连接的计算机(1 台服务器和 2 台工作站)都安装了最新的可用更新。根本原因是什么?要做什么才能使其再次正常运行?
答案1
该脚本在 中有自己的日志文件/var/log/landscape-server
。它使用 curl(1) 从 Ubuntu 服务器下载文件并在本地解析。我怀疑你可能有一个代理,并且正在https://bugs.launchpad.net/landscape/+bug/1523950(横向 cron 作业没有获得代理设置)。
日志会告诉你发生了什么。
答案2
虽然这已经过时了,但仍然具有现实意义,我有一个更新的解决方案。如果您更改了运行 Landscape 的主机名,则必须重新配置 RabbitMQ,无论大小写。
获取已配置的 RabbitMQ 景观用户的密码
sudo less /opt/canonical/landscape/configs/standalone/service.conf
在 [broker] 部分下,密码是 base64 编码的,因此复制 b64: 后面的所有内容,然后对其进行解码
echo the_base64_string | base64 -d
返回的输出是实际密码。现在获取该值并创建 RabbitMQ 景观用户,
sudo rabbitmqctl add_user landscape the_password_above
创建虚拟主机,设置景观用户权限并重新启动
sudo rabbitmqctl add_vhost landscape
sudo rabbitmqctl set_permissions -p landscape landscape ".*" ".*" ".*"
sudo service rabbitmq-server restart
主机名更改后,一切都应该可以正常工作。
答案3
我终于自己搞清楚了……一切都与原始服务器主机名有关。我在解决问题时发现:如何在 Landscape On-Premises 中正确使用 Landscape APIlandscape-server
,在主机名包含大写字母的服务器上使用会导致landscape-api
无法使用的问题。在恢复 clonezilla 基本服务器映像并使用全部小写字母重命名主机后,我认为现在一切都应该正常工作了……
我完全错了 - 旧主机名一定被缓存在某个地方,尽管我编辑了和文件/etc/hostname
,etc/hosts
然后重新启动了服务器系统。然后我决定从 Ubuntu Server 16.04 USB 介质执行全新安装。现在一切都按预期运行 - 脚本update_security_db.sh
错误消失了。吸取教训!使用 Landscape 时切勿使用大写字母并更改主机名。