2016-04-26 75 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