Ansible 如何解决间歇性问题?

Ansible 如何解决间歇性问题?,ansible,ansible-playbook,Ansible,Ansible Playbook,我敢肯定,在某个时刻,一定有人遇到过这样的情况,即无法通过ansible安装软件包,但同样的事情也可以通过登录到机器并这样做来轻松完成。这是非常间歇性的,但它是持续的。我为什么这么说?因为有时可能会出现包拒绝安装的错误,例如 failed: [10.12.10.57] => {"failed": true, "parsed": false} BECOME-SUCCESS-yqymkgrsndxbhkcnyfjgvzrxvoxpmads Traceback (most recent call

我敢肯定,在某个时刻,一定有人遇到过这样的情况,即无法通过ansible安装软件包,但同样的事情也可以通过登录到机器并这样做来轻松完成。这是非常间歇性的,但它是持续的。我为什么这么说?因为有时可能会出现包拒绝安装的错误,例如

failed: [10.12.10.57] => {"failed": true, "parsed": false}
BECOME-SUCCESS-yqymkgrsndxbhkcnyfjgvzrxvoxpmads
Traceback (most recent call last):
  File "/home/ubuntu/.ansible/tmp/ansible-tmp-1461058305.77-7941776655744/apt", line 2258, in <module>
    main()
  File "/home/ubuntu/.ansible/tmp/ansible-tmp-1461058305.77-7941776655744/apt", line 554, in main
    cache = apt.Cache()
  File "/usr/lib/python2.7/dist-packages/apt/cache.py", line 107, in __init__
    self.open(progress)
  File "/usr/lib/python2.7/dist-packages/apt/cache.py", line 151, in open
    self._cache = apt_pkg.Cache(progress)
SystemError: E:Unable to parse package file /var/lib/apt/lists/us-west-2.ec2.archive.ubuntu.com_ubuntu_dists_trusty-updates_main_i18n_Translation-en (1), E:The package lists or status file could not be parsed or opened.
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: auto-mux: Trying existing master
debug1: mux_client_request_session: master session id: 2
Shared connection to 10.12.10.57 closed.
failed:[10.12.10.57]=>{“failed”:true,“parsed”:false}
YQYMKGRSNDxHKCNYFJGVZRxVOXPMADS获得成功
回溯(最近一次呼叫最后一次):
文件“/home/ubuntu/.ansible/tmp/ansible-tmp-1461058305.77-7941776655744/apt”,第2258行,在
main()
文件“/home/ubuntu/.ansible/tmp/ansible-tmp-1461058305.77-7941776655744/apt”,第554行,主文件
cache=apt.cache()
文件“/usr/lib/python2.7/dist packages/apt/cache.py”,第107行,在__
自我开放(进度)
打开文件“/usr/lib/python2.7/dist packages/apt/cache.py”,第151行
self.\u cache=apt\u pkg.cache(进度)
系统错误:E:无法解析程序包文件/var/lib/apt/lists/us-west-2.ec2.archive.ubuntu.com\u ubuntu\u dists\u trusty-updates\u main\u i18n\u Translation-en(1),E:无法解析或打开程序包列表或状态文件。
OpenSSH_6.6.1、OpenSSL 1.0.1f 2014年1月6日
debug1:读取配置数据/etc/ssh/ssh\u config
debug1:/etc/ssh/ssh\u配置第19行:应用*
debug1:自动多路复用器:尝试现有主机
debug1:mux\u客户端请求\u会话:主会话id:2
与10.12.10.57的共享连接已关闭。

您可以一次又一次地运行该播放,但它不会消失,但一旦进入机器并执行类似于
apt get update
的操作,即使机器已经更新,它也会消失。100种情况中有1种会发生这种情况,但确实发生了,我不知道为什么会发生这种情况?

这可能是因为在EC2实例启动后,您尝试过快地运行playbook?我感觉其他客户机(比如说您的系统)正在锁定您的apt目录。如果是这种情况,请等待服务器完全启动。您还可以查看
/var/log/cloud init output.log
,查看该框在启动时的功能(您将在那里看到一些
apt get
输出)

当再次发生这种情况时,请尝试通过删除锁定文件来确定原因,如:

sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
再次运行剧本。如果它成功了,它确实指出这就是问题所在。此外,如果您发现问题是由于PrasBook运行得太快,您可能需要考虑添加一个类似于此处解释的延迟:或者任何其他类型的事件捕捉器,以确定系统是否准备好使用。