This playbook sets up Environment Modules in a Docker container for testing and validation workflows.
- name: Deploy Environment Modules with Docker
hosts: environment_modules
become: true
vars:
modules_image: "ubuntu:24.04"
modules_root: /opt/environment-modules
workspace_dir: "{{ modules_root }}/workspace"
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:
- "{{ modules_root }}"
- "{{ workspace_dir }}"
- "{{ modules_root }}/modulefiles"
- name: Deploy Docker Compose configuration
ansible.builtin.copy:
dest: "{{ modules_root }}/docker-compose.yml"
mode: "0644"
content: |
version: '3.8'
services:
environment-modules:
image: {{ modules_image }}
container_name: environment-modules
volumes:
- {{ workspace_dir }}:/workspace
- {{ modules_root }}/modulefiles:/opt/modulefiles
working_dir: /workspace
command: >
bash -c "apt-get update &&
apt-get install -y environment-modules &&
source /etc/profile.d/modules.sh &&
exec bash"
stdin_open: true
tty: true
environment:
- MODULEPATH=/opt/modulefiles
- name: Pull Environment Modules image
community.docker.docker_image:
name: "{{ modules_image }}"
source: pull
register: image_result
- name: Test Environment Modules installation
ansible.builtin.command: >
docker run --rm {{ modules_image }}
bash -lc "apt-get update && apt-get install -y environment-modules &&
source /etc/profile.d/modules.sh && module --version"
register: module_version
changed_when: false
- name: Show module version output
ansible.builtin.debug:
var: module_version.stdout_lines
community.docker collection is required for Docker image module support.