当playbook中有多个播放时,ansible生成* .retry文件错误

时间:2017-02-24 12:32:21

标签: ansible

例如,deploy.yml是一个安全的剧本。 deploy.yml,play1和play2中有两个播放。

$ cat deploy.yml
- hosts: nodes
  remote_user: cloud
  become: yes
  tasks:
  - name: play1
    copy: src=test1 dest=/root

- hosts: nodes
  remote_user: cloud
  become: yes
  tasks:
  - name: play2
    copy: src=test2 dest=/root

$ cat hosts
[nodes]
192.168.1.12
192.168.1.13

运行

ansible-playbook -i hosts deploy.yml

当play1在192.168.1.12上失败但在192.168.1.13上成功时,deploy.retry仅列出192.168.1.12但没有192.168.1.13。

$ cat deploy.retry
192.168.1.12

然后我跑

ansible-playbook -i hosts deploy.yml --limit @deploy.retry

我得到了错误的结果,因为我没有在192.168.1.13上运行游戏!有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

问题在于playbok文件,事实上,你在一个文件中有两个独立的playbook。我使用ansible 2.2.1.0测试了你的设置,并且第二次播放在play1中没有错误地正确运行,但是配置可能会有所不同。

正确的预期行为的剧本格式是

- hosts: nodes
  remote_user: cloud
  become: yes
  tasks:
  - name: play1
    copy: src=test1 dest=/root

  - name: play2
    copy: src=test2 dest=/root