2016-02-25 131 views
0

Folks, 我希望在每臺主機上單獨重新啓動一項服務,並等待用戶輸入,然後繼續訪問清單中的下一個主機。無法滾動重新啓動playboook

目前,如果你具備以下條件:

- name: Restart something 
    command: service foo restart 
    tags: 
    - foo 
- name: wait 
    pause: prompt="Make sure org.foo.FooOverload exception is not present" 
    tags: 
    - foo 

它只會提示一次,並沒有真正具有所期望的效果。

在每臺主機上運行重新啓動任務之前,等待用戶輸入的正確語法是什麼?

回答

2

使用劇本的serial屬性和step選項的組合。

playbook.yml

- name: Do it 
    hosts: myhosts 
    serial: 1 

    tasks: 
    - shell: hostname 

呼叫與--step選項

ansible-playbook playbook.yml --step 

系統將提示您爲每個主機的劇本。

Perform task: shell hostname (y/n/c): y 

    Perform task: shell hostname (y/n/c): **************************************** 
    changed: [y.y.y.y] 
    Perform task: shell hostname (y/n/c): y 

    Perform task: shell hostname (y/n/c): **************************************** 
    changed: [z.z.z.z] 

欲瞭解更多信息:Start and Step

+0

優秀的,謝謝! – Cmag

+0

以供參考:[劇本代表團](http://docs.ansible.com/ansible/playbooks_delegation.html)和[startnstep](http://docs.ansible.com/ansible/playbooks_startnstep.html#step) – Cmag

0

我這個徑自:

- name: Restart Datastax Agent 
    tags: 
    - agent 
    hosts: cassandra 
    sudo: yes 
    serial: 1 
    gather_facts: yes 
    tasks: 
    - name: Pause 
     pause: prompt="Hit RETURN to restart datastax agent on {{ inventory_hostname }}" 
    - name: Restarting Datastax Agent on {{ inventory_hostname }} 
     service: name=datastax-agent state=restarted 
+1

如果您稍後決定不在主持人之間暫停,則必須編輯您的操作手冊。在我的解決方案中,不要指定'--step'選項。 – helloV