Ash*_*Ash 5 ansible ansible-playbook ansible-2.x
是否可以仅在特定条件有效时才包含模块参数,而不会重复播放?
例子:
我有一个如下所示的游戏:
- name: Start Container
docker:
name: "{{containerName}}"
state: reloaded
command: "java -jar {{containerImage}}-{{containerJarVersion}}.jar"
Run Code Online (Sandbox Code Playgroud)
我想根据条件是真还是假来更改命令参数的值?目前,我必须复制整个剧本并将其包装在一个条件中,这很可怕,因为只有一个参数不同。
当前解决方案:
- 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)
Run Code Online (Sandbox Code Playgroud)
小智 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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2013 次 |
| 最近记录: |