Molecule with systemd

Sun, 26 Mar. 2023     Thomas Bendler     ~ 2 min to read

Recently I noticed that previous configurations to spin up docker instances with systemd enabled within Molecule-powered tests didn’t work anymore. Unfortunately, I didn’t have the slightest clue why and how to fix this. Usually, a bit of Google search solves most of the problems, but either I used the wrong search strings or there was simply little documentation about this. Long story short, if nothing helps, there is still Jeff Geerling and his blog.

He stumbled upon the same issue and explained in his article Docker and systemd, getting rid of dreaded ‘Failed to connect to bus’ error what it’s about and how to fix. Essentially, the problem resulted when cgroups switched from version 1 to version 2. With cgroups v2 you need to add an additional switch “–cgroupns=host” to the Docker command to solve this issue. With Molecule, the full configuration looks like this one:

platforms:
  - name: AlmaLinux-9
    image: docker.io/almalinux/9-init
    command: ""
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:rw
      - /var/lib/containerd
    cgroupns_mode: host
    privileged: true
    pre_build_image: true

In this configuration I use AlmaLinux. They have pre-build images ending with init that indicates that they use systemd after start up. The command is set to nothing to use the command as defined in the Docker file.



Share on: