2016-04-26 3 views
3

Возможно ли включать аргумент модуля только в том случае, если определенное условие действительно, без дублирования воспроизведения?Необязательные аргументы условного модуля

Пример:

У меня есть игра, которая выглядит следующим образом:

- 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

Смежные вопросы