希望你能帮助解决为什么我的剧本没有按预期完成。
环境
CONFIGURATION
没什么好激动的:
[defaults]
roles_path=./roles
host_key_checking = False
ssh_args= -t -t
allow_world_readable_tmpfiles = True
PLAYBOOK
我有一个合理的设置,在一个剧本中有很多戏剧。
该剧本针对不同的目标系统;生产现场和开发设备。 (请不要建议我将它们结合起来......它是一个物联网系统,而且非常复杂。)
这是我的编辑手册:
- hosts: all
roles:
- ...
- hosts: xmpp_server
roles:
- ...
- hosts: audit_server
roles:
- ...
- hosts: elk_server
roles:
- ...
- hosts: all
roles:
- ...
现在,请记住,我有一个IoT设置,其中包含各种冗余,复制和分发,所以尽管还有其他方法可以对猫进行蒙皮,但上面的分解为多个播放真的我的设置很整洁,我想保留它。
同样重要的是:我的开发工具中没有audit_server
或elk_server
个主机。这些群体目前是空的,因为我正在处理正交问题,并且不需要他们消耗有限的开发资源。我确实有那些正在制作中,而不是开发中。
预期行为
在制作网站上,我希望所有剧本都能触发并运行。
在开发工具上,我希望第一个游戏(all
)和xmpp_server
游戏运行,audit_server
和elk_server
播放跳过,最后一个(all
{1}})在那之后继续玩。
实际行为
生产站点完全按预期工作。所有比赛都在进行。
开发工具完成了xmpp_server
游戏,因为dev-piA
是xmpp_server
群组的成员。然后它默默地停止。没有错误,没有信息,没有。直接进行回顾。这是输出:
...
TASK [xmppserver : include] ****************************************************
included: /Users/al/Studio/Projects/smc/ansible/roles/xmppserver/tasks/./openfire.yml for dev-piA
TASK [xmppserver : Get openfire deb file] **************************************
ok: [dev-piA]
TASK [xmppserver : Install openfire deb file] **********************************
ok: [dev-piA]
TASK [xmppserver : Check if schema has been uploaded previously] ***************
ok: [dev-piA]
TASK [xmppserver : Install openfire schema to postgres db] *********************
skipping: [dev-piA]
to retry, use: --limit @fel.retry
PLAY RECAP *********************************************************************
dev-vagrant1 : ok=0 changed=0 unreachable=1 failed=0
dev-piA : ok=106 changed=3 unreachable=0 failed=0
dev-piB : ok=77 changed=3 unreachable=0 failed=0
dev-piC : ok=77 changed=3 unreachable=0 failed=0
...
所以,我用-vvvvv
运行它并没有更多用处:
...
TASK [xmppserver : Install openfire schema to postgres db] *********************
task path: /Users/al/Studio/Projects/smc/ansible/roles/xmppserver/tasks/openfire.yml:14
skipping: [dev-piA] => {"changed": false, "skip_reason": "Conditional check failed", "skipped": true}
to retry, use: --limit @fel.retry
PLAY RECAP *********************************************************************
dev-vagrant1 : ok=0 changed=0 unreachable=1 failed=0
dev-piA : ok=106 changed=2 unreachable=0 failed=0
dev-piB : ok=77 changed=3 unreachable=0 failed=0
dev-piC : ok=77 changed=3 unreachable=0 failed=0
...
需要帮助
所以,我的问题是:为什么剧本会停在那里?发生什么事了?!
它实际上没有明确说明没有剩余的主机用于audit_server播放;这是我最好的猜测。它就像它击中EOF一样停止。
我完全难过了。
编辑:注意:重试文件仅包含对当前关闭的流浪汉机器的引用。但如果问题的存在是问题,那么Ansible的逻辑是非常有缺陷的。我现在要检查以防万一
编辑:OMFG它实际上是丢失的流浪者盒子,与该死的东西无关。这令人震惊,我将其作为Ansible的一个问题提出来。但是......如果有人遇到同样的问题并且谷歌搜索它,我会把它留在这里。编辑:为清楚起见,除了特殊的“全部”游戏外,流浪汉机器不在任何游戏的主机列表中。情况下。
答案 0 :(得分:0)
如果游戏中的每个主人都不健康,Ansible就会中止执行
如果dev-vagrant1
是audit_server
组的唯一成员,则这是预期的行为(我们看到dev-vagrant1
被标记为unreachable
)。
然而,在PLAY [audit_server] ********
to retry, use...
答案 1 :(得分:0)
Ansible人回到我身边,并确认他们已经在2.1.1版本的这方面做了很多工作。
我更新到2.1.1.0并且工作正常。