如何跟踪无人值守的升级或cloud-init的进度?

问题描述 投票:1回答:1

我希望使用Packer(生成映像)和Ansible(提供程序)来配置Ubuntu AMI。

"name": "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*",

我遇到困难,因为某些任务尝试使用apt安装软件包,但是该锁由另一个进程持有。我很难确定最重要的是哪个进程正在控制锁,该特定进程的进展如何。

默认情况下,亚马逊设置的AMI将在启动[0]时安装安全更新,因此我假设是这样。正如文档所解释的,它可能与cloud-init有关?我相信这也与无人值守升级有关,因为正如您在此[1]粘贴中所看到的那样,有一个无人值守升级关机过程正在等待其他进程(apt?)在关机前完成升级安装。

如果使用sudo lslocks,我会得到

    amazon-ebs:         "COMMAND           PID  TYPE SIZE MODE  M START END PATH",
    amazon-ebs:         "lvmetad           433 POSIX   4B WRITE 0     0   0 /run/lvmetad.pid",
    amazon-ebs:         "iscsid           1082 POSIX   5B WRITE 0     0   0 /run/iscsid.pid",
    amazon-ebs:         "lxcfs            1110 POSIX   5B WRITE 0     0   0 /run/lxcfs.pid",
    amazon-ebs:         "cron             1134 FLOCK   5B WRITE 0     0   0 /run/crond.pid",
    amazon-ebs:         "atd              1127 POSIX   5B WRITE 0     0   0 /run/atd.pid"

这不会告诉我很多我感兴趣的锁文件。

如果我tail /var/log/cloud-init-output.log,我看到cloud-init已完成工作。

如果我是tail /var/log/dpkg.log,我会看到9月13日(今天不是今天)的日志。

如果我是tail /var/log/apt/term.log,我会看到9月13日(今天不是今天)的日志。

>&1 sudo fuser '/var/lib/dpkg/lock-frontend' || echo aa ;
>&1 sudo fuser -vvv /var/lib/apt/lock || echo a ;
>&1 sudo lsof /var/lib/apt/lists/lock || echo b ;
>&1 sudo lsof /var/lib/dpkg/lock || echo c ;
>&1 sudo lsof /var/cache/apt/archives/lock || echo d ;

正在输出

aa
a
b
c
d

所以我知道这些锁定文件不存在。我很困惑,因为有关锁定文件的错误:Failed to lock apt for exclusive operation

我如何找到那个锁文件。最重要的是,我如何跟踪持有该锁的过程的进度?

谢谢!

[[0:安全更新文档]https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html

[[1:ps粘贴]https://pastebin.ubuntu.com/p/JGNkfVFHGJ/

ansible cloud ubuntu-server packer cloud-init
1个回答
1
投票

从cloud-init v.18.2或更高版本开始,cloud-init状态--wait将阻塞,直到cloud-init运行完毕。因此,在完成其余工作之前,脚本很容易利用。

© www.soinside.com 2019 - 2024. All rights reserved.