如何定义分子中仅名称不同的多个实例?
How to define multiple instances in molecule which differ only in name?
我有一个 molecule.yml
看起来有点像这样:
dependency:
name: galaxy
driver:
name: docker
platforms:
- name: testohpc-compute-0
image: docker.io/pycontribs/centos:7
pre_build_image: true
groups:
- testohpc_compute
command: /sbin/init
tmpfs:
- /run
- /tmp
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
networks:
- name: net1
我如何定义另一个实例,比如 testohpc-compute-2
除了名称完全相同?我真的需要再次复制 -1
中的所有定义吗?
此外,如果有重用实例定义的方法,我可以在场景之间共享它吗?
您可以利用 yaml 锚点和合并关键功能。您可以在 Learn yaml in Y minute.
上找到基本解释
根据您的具体情况,这里有一个可能的解决方案。
platforms:
- &default_platform
name: testohpc-compute-0
image: docker.io/pycontribs/centos:7
pre_build_image: true
groups:
- testohpc_compute
command: /sbin/init
tmpfs:
- /run
- /tmp
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
networks:
- name: net1
- <<: *default_platform
name: testohpc-compute-2
注意:anchors和merge key只能在同一个yaml文件中使用。所以这在不同的场景之间是行不通的。
如果你真的想要testohpc-compute-2
完全相同的配置,你可以使用环境变量:
dependency:
name: galaxy
driver:
name: docker
platforms:
- name: testohpc-compute-${NUMBER:-0}
image: docker.io/pycontribs/centos:7
pre_build_image: true
groups:
- testohpc_compute
command: /sbin/init
tmpfs:
- /run
- /tmp
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
networks:
- name: net1
然后执行两个实例:
~|⇒ mol test
# Executes instance testohpc-compute-0
~|⇒ NUMBER=2 mol test
# Executes instance testohpc-compute-2
我有一个 molecule.yml
看起来有点像这样:
dependency:
name: galaxy
driver:
name: docker
platforms:
- name: testohpc-compute-0
image: docker.io/pycontribs/centos:7
pre_build_image: true
groups:
- testohpc_compute
command: /sbin/init
tmpfs:
- /run
- /tmp
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
networks:
- name: net1
我如何定义另一个实例,比如 testohpc-compute-2
除了名称完全相同?我真的需要再次复制 -1
中的所有定义吗?
此外,如果有重用实例定义的方法,我可以在场景之间共享它吗?
您可以利用 yaml 锚点和合并关键功能。您可以在 Learn yaml in Y minute.
上找到基本解释根据您的具体情况,这里有一个可能的解决方案。
platforms:
- &default_platform
name: testohpc-compute-0
image: docker.io/pycontribs/centos:7
pre_build_image: true
groups:
- testohpc_compute
command: /sbin/init
tmpfs:
- /run
- /tmp
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
networks:
- name: net1
- <<: *default_platform
name: testohpc-compute-2
注意:anchors和merge key只能在同一个yaml文件中使用。所以这在不同的场景之间是行不通的。
如果你真的想要testohpc-compute-2
完全相同的配置,你可以使用环境变量:
dependency:
name: galaxy
driver:
name: docker
platforms:
- name: testohpc-compute-${NUMBER:-0}
image: docker.io/pycontribs/centos:7
pre_build_image: true
groups:
- testohpc_compute
command: /sbin/init
tmpfs:
- /run
- /tmp
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
networks:
- name: net1
然后执行两个实例:
~|⇒ mol test
# Executes instance testohpc-compute-0
~|⇒ NUMBER=2 mol test
# Executes instance testohpc-compute-2