我正在将这些值传递给模块参数docker_container
volumes:
- "/opt/projects/logs/{{ Appname }}-{{ item }}:/logs"
- "/opt/projects/config/{{ Appname }}-{{ item }}/config:/config"
...
..
.
with_items: "{{ exposedPorts }}"
但是,第二卷绑定取决于when: push_config | default(false) | bool
正在寻找类似"/opt/projects/config/{{ Appname }}-{{ item }}/config:/config ---> when push_config is true else default(omit)"
的东西,当涉及到循环项时,我正在努力处理| default(omit)
。
我在下面尝试过,但是即使push_config
作为true
传递,它也没有添加卷装入并引发错误。
volumes:
- "/apps/projects/logs/{{ Appname }}-{{ item }}:/logs"
- "{{ if 'push_config | default(false) | bool' '/apps/projects/logs/{{ Appname }}-{{ item }}/.configmap:/tibco/config' else default(omit) }}"
"msg": "The task includes an option with an undefined variable. The error was: 'item' is undefined
omit
是占位符,可完全跳过整个模块参数定义。
您的典型用法是:
volumes: "{{ my_volume_list | default(omit) }}"
不能像您在上面那样尝试替换列表的空元素。您需要计算每个项目的体积列表,然后将其作为参数传递。尝试以下类似的方法(未经测试,只是为了使您步入正轨):
- name: Create my container
vars:
default_mount: ["/opt/projects/logs/{{ Appname }}-{{ item }}:/logs"]
additional_mount_def: "/opt/projects/config/{{ Appname }}-{{ item }}/config:/config"
additional_mount: >-
{{ push_config | default(false) | bool | ternary ([additional_mount_def], []) }}
all_mount: "{{ default_mount + additional_mount }}"
docker_container:
#....#
volumes: "{{ all_mount }}"
with_items: "{{ exposedPorts }}"