Ansible 如何跟踪无人值守升级或云初始化的进度?

Ansible 如何跟踪无人值守升级或云初始化的进度?,ansible,cloud,ubuntu-server,packer,cloud-init,Ansible,Cloud,Ubuntu Server,Packer,Cloud Init,我希望使用Packer(构建图像)和Ansible(provisioner)来提供Ubuntu AMI “名称”:“ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*”, 我遇到了一些困难,因为有些任务试图使用apt安装软件包,但锁被另一个进程持有。我很难确定哪些流程处于锁定状态最重要的是,特定流程的进展情况如何 默认情况下,amazon设置的AMI将在启动[0]时安装安全更新,因此我假设就是这样。正如文档所解释的,它可能与cloud init有关

我希望使用Packer(构建图像)和Ansible(provisioner)来提供Ubuntu AMI

“名称”:“ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*”,

我遇到了一些困难,因为有些任务试图使用apt安装软件包,但锁被另一个进程持有。我很难确定哪些流程处于锁定状态最重要的是,特定流程的进展情况如何

默认情况下,amazon设置的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日的日志,而不是今天

这个

正在输出

aa
a
b
c
d
所以我知道这些锁文件不存在。我很困惑,因为锁定文件有一个错误:
无法锁定apt进行独占操作

我怎样才能找到那是什么锁文件呢。最重要的是,我如何跟踪持有该锁的过程的进度

谢谢大家!

[0:安全更新文档]

[1:ps粘贴]

从cloud init v.18.2或更高版本开始,cloud init状态—等待将被阻止,直到cloud init完成运行。因此,对于脚本来说,在完成其余工作之前,这是一个很容易利用的“钩子”。

似乎将Packer与Ansible一起使用会使事情变得有点复杂。出于某种原因,我在打包机配置中设置了EC2将通过ssh使用ubuntu用户,Ansible将使用root用户。这导致Ansible没有尝试运行“sudo”,因为它认为它已经是root了。因此,它无法获得锁来安装软件包


但是,这并不能回答如何跟踪软件包的安装进度。我认为通过查看cloud init可以很好地了解正在发生的事情。cloudinit已完成工作。apt日志没有显示任何进展,因此我相信它没有安装任何东西。

谢谢Chad。看起来,即使cloud init完成工作,我也无法保持apt锁。请参阅此Unix exchange答案,
aa
a
b
c
d