2017-07-25 18 views
0

我有一個Ansible playbook的問題,尤其是它的一個任務。這項任務看起來是這樣的:Ansible - 如何'循環'一個可靠的任務,如果它失敗?

- name: Start Integration Server 
    script: "{{ instDir_path }}start_All.sh" 
- name: Wait for Integration Server to start 
    wait_for: 
    port: 5515 
    delay: 10 

它所做的是運行start_All.sh,這是實際啓動兩臺服務器一個簡單的腳本。第一臺服務器每次都能快速而準確地啓動。第二個問題有時會在300秒的默認延遲wait_for內啓動。我不希望更改默認值,而是想要這樣:

如果服務器啓動 - 完成並轉到下一個劇本 如果服務器失敗開始 - 運行stop_All.sh關閉第一臺服務器正確,然後再次運行start_All.sh並再次重複wait_for過程,直到服務器正確啓動。或者可能不會一次又一次 - 但它必須嘗試啓動服務器至少3次。

Ansible甚至可能嗎? This

+1

Ansible的意思是儘可能的聲明。爲什麼不在start_All.sh中實施所有這些柺杖? –

回答

0

IntegrationServer(SoftwareAG我猜)應該在運行時創建鎖定文件。因此,也許你可以試試:

# wait until the lock file is present 
- wait_for: 
    path: /var/lock/file.lock 
    state: present 

從ansible文檔:

當檢查文件或存在的搜索字符串或開始將 確保文件或字符串,然後再繼續存在,在沒有 將檢查該文件是否缺失或刪除

相關問題