Search code examples
dockeransiblemolecule

Ansible molecule using docker - how to specify memory limit


I have a molecule test which spins up 2 Docker containers, for testing 2 application versions at once.

dependency:
  name: galaxy
driver:
  name: docker
lint:
  name: yamllint
platforms:
  - name: molecule1
    hostname: molecule1
    image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest"
    command: ${MOLECULE_DOCKER_COMMAND:-""}
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    privileged: true
    pre_build_image: true
  - name: molecule2
    hostname: molecule2
    image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest"
    command: ${MOLECULE_DOCKER_COMMAND:-""}
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    privileged: true
    pre_build_image: true
provisioner:
  name: ansible
  inventory:
    host_vars:
      molecule1:
        app_version: "v1"
      molecule2:
        app_version: "v2"
  lint:
    name: ansible-lint
scenario:
  name: default
  converge_sequence:
    - syntax
    - lint
    - create
    - prepare
    - converge
    - idempotence
    - verify
verifier:
  name: goss
  lint:
    name: yamllint

I am looking for a way to specify the memory like -m or --memory= as described here.

I understand that molecule makes use of the docker_container ansible module, which support the memory parameter, but somehow I cannot find a way to make this work in molecule.

Any ideas how to accomplish this?

PS: My guess is that this parameter is not yet implemented in molecule, if my assumption is correct that this is the implementation.

Thanks in advance.


Solution

  • ++Update++

    --memory is indeed not yet implemented in molecule docker provisioner.

    If anybody is interested, here is the relevant change to the source code:

    diff --git a/molecule/provisioner/ansible/playbooks/docker/create.yml b/molecule/provisioner/ansible/playbooks/docker/create.yml
    index 7a04b851..023a720a 100644
    --- a/molecule/provisioner/ansible/playbooks/docker/create.yml
    +++ b/molecule/provisioner/ansible/playbooks/docker/create.yml
    @@ -121,6 +121,8 @@
             hostname: "{{ item.hostname | default(item.name) }}"
             image: "{{ item.pre_build_image | default(false) | ternary('', 'molecule_local/') }}{{ item.image }}"
             pull: "{{ item.pull | default(omit) }}"
    +        kernel_memory: "{{ item.kernel_memory | default(omit) }}"
    +        memory: "{{ item.memory | default(omit) }}"
             state: started
             recreate: false
             log_driver: json-file
    

    My fork has now been merged to Molecule.