如何为 MAAS 安装启用更多调试?

如何为 MAAS 安装启用更多调试?

我目前无法安装每日 Wily 版本(失败)。我只能获得:

initctl:未知作业:lldpd stop:未知实例:

我希望在安装过程中获得更多/更好的调试输出,以帮助识别这里到底发生了什么。

答案1

当使用 MAAS 和 curtin 安装程序(这是默认的,因为版本 1.7)节点安装按照以下步骤进行:

  1. 节点 PXE 使用您选择安装的 Ubuntu 版本启动到临时环境。
  2. cloud-init 从 MAAS 下载用户数据,包括 ssh 密钥和 curtin。
  3. cloud-init 设置 ssh 密钥并开始 curtin 安装节点。
  4. curtin 完成安装并重新启动节点。

看起来步骤 1 对您有用。要调试步骤 2 及后续步骤,您需要在节点启动时捕获来自节点的控制台输出。如果您实际部署的是 VM(而不是裸机),这很容易 - 只需访问主机的输出即可。对于裸机情况,您需要使用远程 KVM 或 LAN 上串行功能来捕获控制台输出。控制台输出将包含 cloud-init 日志消息,指示其进展情况。它可能以各种方式失败,因此您需要进一步深入研究在那里看到的内容。

如果您无法远程获取控制台,在此阶段进一步深入研究故障的一种方法是使用用户/密码对临时安装映像进行后门操作,以便您通过控制台或 ssh 登录。操作方法如下:

  • 首先,在 MAAS 服务器的设置页面上禁用图像同步。这可以防止 MAAS 覆盖后门图像。
  • 然后,可以使用该脚本在服务器的所有图像上设置后门。

    sudo apt-get install --assume-yes bzr
    bzr branch lp:~maas-maintainers/maas/backdoor-image backdoor-image
    
    imgs=$(echo /var/lib/maas/boot-resources/*/*/*/*/*/*/root-image)
    for img in $imgs; do
        [ -f "$img.dist" ] || sudo cp -a --sparse=always $img $img.dist
    done
    
    cd backdoor-image
    for img in $imgs; do
        sudo ./backdoor-image -v --user=backdoor --password-auth --password=ubuntu $img
    done
    
  • 现在,重新尝试安装节点。一旦节点启动 ssh,您应该能够使用用户“backdoor”和密码“ubuntu”登录。如果 SSH 从未启动,您可以使用相同的用户和密码登录控制台。登录后,您可以使用“sudo”进行调试。

  • 一旦您找出问题并解决它,请务必重新启用图像同步,并用库存图像替换后门图像:

    imgs=$(echo /var/lib/maas/boot-resources/*/*/*/*/*/*/root-image)
    for img in $imgs; do
        [ -f "$img.dist" ] && sudo mv -f $img.dist $img
    done
    

即使没有后门,也有一段时间可以通过 ssh 进入,因为在安装过程中 cloud-init 会设置 ssh 密钥并启动 sshd。设置好 ssh 密钥后,curtin 便开始安装;此时,您可以使用“ubuntu”用户和 MAAS 用户的 ssh 密钥通过 ssh 进入系统。您必须快速完成此操作,以免 curtin 完成并重新启动系统。为防止 curtin 关闭节点,请运行

touch /tmp/block-poweroff

只要您登录即可。您可以在 while 循环中执行此操作,以避免需要精确地掌握时间;这应该在您触发安装后立即运行:

while true; do ssh node-foo.maas touch /tmp/block-poweroff && break; done

此时你应该能够正常地 ssh 而不必担心 curtin 关闭节点。

无论您通过哪种方式登录系统,请记住您可以sudoubuntu用户身份使用;例如,这可以让您访问系统上的所有日志。

相关内容