6

是否可以仅在某个条件有效时包含模块参数,而不重复播放?

例子:

我有一个如下所示的游戏:

  - 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)
4

3 回答 3

2

我认为您仍然必须在某处使用条件(您最终想根据条件做不同的事情..:)。

我唯一能想到的就是避免你写两次任务(导致所有这些烦人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"
于 2016-04-26T12:59:59.877 回答
2

(现在)您可以使用这种内联条件机制

start_container_command: "java {{'-Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n,address={{debugPort}}' if not enableDebug else '' }} -jar {{containerImage}}-{{containerJarVersion}}.jar"
于 2018-10-31T08:33:37.937 回答
1

你可以像这样使用它:

  - 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

希望对你有帮助

于 2016-04-26T11:13:51.710 回答