skip to Main Content

I’ve got a molecule.yml which looks a bit like this:

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

How can I define another instance, say testohpc-compute-2 which is exactly the same except for name? Do I really need to copy all the definition from -1 again?

Furthermore, if there’s a way of reusing an instance definition, can I share it between scenarios?

2

Answers


  1. You can take advantage of yaml anchor and merge key features. You can find a basic explanation on Learn yaml in Y minute.

    In your specific case, here is a possible solution.

    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
    

    Note: anchors and merge keys can only be used in the same yaml file. So this will not work between different scenario.

    Login or Signup to reply.
  2. If you really want exactly the same configuration for testohpc-compute-2, you can use environnement variable:

    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
    

    Then to execute the two instances:

    ~|⇒  mol test
    # Executes instance testohpc-compute-0
    ~|⇒  NUMBER=2 mol test
    # Executes instance testohpc-compute-2
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search