如何定义分子中仅名称不同的多个实例?

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