2016-04-26 144 views
3

當某個條件有效時,是否可以只包含模塊參數,而不重複播放?Ansible條件模塊參數

例子:

我有一齣戲,看起來像下面這樣:

- name: Start Container 
    docker: 
     name: "{{containerName}}" 
     state: reloaded 
     command: "java -jar {{containerImage}}-{{containerJarVersion}}.jar" 

我要改變依靠,如果條件是假的真命令參數的值?目前,我必須複製整個遊戲並將其包裝在一個條件中,這是非常可怕的,因爲只有一個參數是不同的。

目前的解決方案:

- name: Start Container Debug 
    docker: 
     name: "{{containerName}}" 
     state: reloaded 
     command: "java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n,address={{debugPort}} -jar {{containerImage}}-{{containerJarVersion}}.jar" 
    when: ({{enableDebug}} == true) 

    - name: Start Container 
    docker: 
     name: "{{containerName}}" 
     state: reloaded 
     command: "java -jar {{containerImage}}-{{containerJarVersion}}.jar" 
    when: ({{enableDebug}} == false) 
+0

對不起,我可能會得到這個錯誤..有什麼區別兩項任務之間?他們對我來說看起來是一樣的。 – shaps

+0

抱歉複製並粘貼錯誤,更新了代碼示例! – Ash

回答

1

我認爲你仍然必須在某個地方使用條件(你想根據條件來做不同的事情.. :)。

我能想到的唯一的事情就是避免你寫你的任務兩次(導致所有那些煩人的skipped),你可以做到以下幾點:

 # file: play.yml 

    - include_vars: debug_vars.yml 
     when: enableDebug == True 

    - include_vars: prod_vars.yml 
     when: enableDebug == False 


    - name: Start Container 
     docker: 
      name: "{{containerName}}" 
      state: reloaded 
      command: "{{ start_container_command }}" 



     # file: debug_vars.yml 
     start_container_command: "java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n,address={{debugPort}} -jar {{containerImage}}-{{containerJarVersion}}.jar" 

     # file: prod_vars.yml 
     start_container_command: "java -jar {{containerImage}}-{{containerJarVersion}}.jar" 
0

您可以使用它像這樣:

- name: Start Container Debug 
    docker: 
     name: "{{containerName}}" 
     state: reloaded 
     command: "java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n,address={{debugPort}} -jar {{containerImage}}-{{containerJarVersion}}.jar" 
    when: enableDebug # Will run when the value of eanbleDebug is True 

    - name: Start Container 
    docker: 
     name: "{{containerName}}" 
     state: reloaded 
     command: "java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n,address={{debugPort}} -jar {{containerImage}}-{{containerJarVersion}}.jar" 
    when: not enableDebug # Will run when the value of eanbleDebug is False 

我假設的eanbleDebug將是這樣的:

eanbleDebug: True 
or 
eanbleDebug: False 

希望這將幫助你

+0

這或多或少正是我所擁有的?我希望能有一個解決方案,這意味着我不必複製劇本...... – Ash