2017-06-12 24 views
0

我想檢查是否在以前的任務中的變量定義,如果是,什麼是它的價值。

爲了做到這一點我必須先檢查變量存在,再後來檢查它的值或任務崩潰。 這是我到目前爲止(但不作爲,如果裏面如果明明不工作):Ansible:如果在內部如何製作?

- name: "Checking other server availbility" 
    uri: 
     url: http://www.google.pl 
     timeout: 5 
    register: command_result_2 
    when: command_result.status != 200 

    - name: "Setting default server" 
    command: echo http://www.google.pl 
    register: SERVER_PATH 
    when: 
     - command_result_2 is defined 
     - command_result_2.status == 200 

在我的代碼的第一個任務可以或不可以註冊command_result_2變量。

+0

你能告訴我們你需要的server_path的 - 也許還有一個更優雅的方式來做到這一點? – qubsup

+0

有兩臺服務器,我需要檢查,如果第一個是主動和設置的server_path它的地址,如果不檢查第二個,如果沒有激活我需要停止腳本。 –

回答

2

我怕你正在試圖解決您的解決方案,而不是你真正的問題出了問題,但這裏是一個問題的答案。

可以使用default filter返回一個值時,不定義的變量(在下面的例子中0永遠等於200,所以當command_result_2被定義和等於200的任務將只運行):

- name: "Setting default server" 
    command: echo http://www.google.pl 
    register: SERVER_PATH 
    when: command_result_2|default(0) == 200 

請注意,上述任務(command: echo + register)在Ansible中沒有多大意義。而且,即使你使用更合適set_fact,我不知道爲什麼你要運行放在首位這樣的任務。

+0

感謝您指出這一點,我沒有注意到我正在提前做出解決方法。如何處理這些知識仍然對我的進一步發展非常有用。謝謝 –