Ansible多重播放剧本默默无视播放

时间:2016-08-01 15:17:08

标签: ansible ansible-playbook

希望你能帮助解决为什么我的剧本没有按预期完成。

环境

  • OSX El Capitan
  • ansible 2.1.0.0

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_serverelk_server个主机。这些群体目前是空的,因为我正在处理正交问题,并且不需要他们消耗有限的开发资源。我确实有那些正在制作中,而不是开发中。

预期行为

在制作网站上,我希望所有剧本都能触发并运行。

在开发工具上,我希望第一个游戏(all)和xmpp_server游戏运行,audit_serverelk_server播放跳过,最后一个(all {1}})在那之后继续玩。

实际行为

生产站点完全按预期工作。所有比赛都在进行。

开发工具完成了xmpp_server游戏,因为dev-piAxmpp_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的一个问题提出来。但是......如果有人遇到同样的问题并且谷歌搜索它,我会把它留在这里。

编辑:为清楚起见,除了特殊的“全部”游戏外,流浪汉机器不在任何游戏的主机列表中。情况下。

2 个答案:

答案 0 :(得分:0)

如果游戏中的每个主人都不健康,Ansible就会中止执行 如果dev-vagrant1audit_server组的唯一成员,则这是预期的行为(我们看到dev-vagrant1被标记为unreachable)。

然而,在PLAY [audit_server] ********

之前应该有一行to retry, use...

答案 1 :(得分:0)

Ansible人回到我身边,并确认他们已经在2.1.1版本的这方面做了很多工作。

我更新到2.1.1.0并且工作正常。