有没有办法在ansible docker_service模块中的volumes:
指令下挂载卷?
我想编写一个docker_compose,并有一个变量来选择要安装的正确卷。
- name: Add docker_service for the Ansible Container
docker_service:
project_name: jro
definition:
version: '3'
services:
ansible:
image: python:3.7.0a3-alpine3.7
volumes:
- {CONDITION xxx} then "xxx:ccc"
- {CONDITION yyy} then "yyy:ccc:
答案 0 :(得分:3)
这不是你通常会在Ansible剧本中处理条件的方式。你还没有告诉我们你的条件是什么,所以很难直接回答你的问题,但是你可以这样做:
- set_fact:
volume_to_mount: foo
when: condition1
- set_fact:
volume_to_mount: bar
when: condition2
- name: Add docker_service for the Ansible Container
docker_service:
project_name: jro
definition:
version: '3'
services:
ansible:
image: python:3.7.0a3-alpine3.7
volumes:
- "{{volume_to_mount}}:/mountpoint"
如果您的条件是主机名或组,您通常会通过使用组或主机变量文件来处理它。例如,如果你想安装音量" foo"适用于" foo_group"中的所有主机主机组和卷" bar"适用于" bar_group"中的所有主机在hostgroup中,您可以使用:
创建group_vars/foo_group.yml
volume_to_mount: foo
groups_vars/bar_group.yml
与:
volume_to_mount: bar
如果您需要挂载多个卷,您可以执行与上述类似的操作,但使用列表而不是单个值,例如:
volumes_to_mount:
- "bar:/mount_for_bar"
- "foo:/mount_for_foo"
然后在docker_service
任务中:
- name: Add docker_service for the Ansible Container
docker_service:
project_name: jro
definition:
version: '3'
services:
ansible:
image: python:3.7.0a3-alpine3.7
volumes: "{{ volumes_to_mount }}"
希望这里的某些内容能指向正确的方向。如果您想要更有针对性的答案,请随时提供有关您尝试做的更多详细信息。
答案 1 :(得分:2)
字面意思是问题中定义的问题:
volumes:
- "{{ 'xxx:ccc' if xxx else omit }}"
- "{{ 'yyy:ccc' if yyy else omit }}"
我现在无法验证,omit
是否适用于此特定模式
或者(猜猜你可能正在寻找的东西):
volumes:
- "{{ 'xxx:ccc' if my_condition else 'yyy:ccc' }}"