This playbook sets up Lmod in a Docker container for testing and validation workflows.
- name: Deploy Lmod with Docker
hosts: lmod
become: true
vars:
lmod_image: "ubuntu:24.04"
lmod_root: /opt/lmod
workspace_dir: "{{ lmod_root }}/workspace"
modulefiles_dir: "{{ lmod_root }}/modulefiles"
tasks:
- name: Install Docker dependencies
ansible.builtin.package:
name:
- docker.io
- docker-compose
state: present
- name: Ensure directories exist
ansible.builtin.file:
path: "{{ item }}"
state: directory
mode: "0755"
loop:
- "{{ lmod_root }}"
- "{{ workspace_dir }}"
- "{{ modulefiles_dir }}"
- name: Deploy Docker Compose configuration
ansible.builtin.copy:
dest: "{{ lmod_root }}/docker-compose.yml"
mode: "0644"
content: |
version: '3.8'
services:
lmod:
image: {{ lmod_image }}
container_name: lmod
volumes:
- {{ workspace_dir }}:/workspace
- {{ modulefiles_dir }}:/opt/modulefiles
working_dir: /workspace
command: >
bash -c "apt-get update &&
apt-get install -y lmod &&
source /etc/profile.d/lmod.sh &&
exec bash"
stdin_open: true
tty: true
environment:
- MODULEPATH=/opt/modulefiles
- name: Pull Lmod image
community.docker.docker_image:
name: "{{ lmod_image }}"
source: pull
register: image_result
- name: Test Lmod installation
ansible.builtin.command: >
docker run --rm {{ lmod_image }}
bash -lc "apt-get update && apt-get install -y lmod &&
source /etc/profile.d/lmod.sh && module --version"
register: lmod_version
changed_when: false
- name: Show Lmod version output
ansible.builtin.debug:
var: lmod_version.stdout_lines
community.docker collection is required for Docker image module support.