This playbook installs Environment Modules natively on the host system and configures baseline module paths.
- name: Configure Environment Modules host
hosts: environment_modules
become: true
vars:
modules_user: root
modules_group: root
modulefiles_path: /opt/modulefiles
site_module_path: /etc/modulefiles
tasks:
- name: Install environment-modules package
ansible.builtin.package:
name: environment-modules
state: present
- name: Ensure site module directory exists
ansible.builtin.file:
path: "{{ modulefiles_path }}"
state: directory
owner: "{{ modules_user }}"
group: "{{ modules_group }}"
mode: "0755"
- name: Ensure site module path exists
ansible.builtin.file:
path: "{{ site_module_path }}"
state: directory
owner: "{{ modules_user }}"
group: "{{ modules_group }}"
mode: "0755"
- name: Configure MODULEPATH for site modules
ansible.builtin.lineinfile:
path: /etc/profile.d/modules.sh
line: 'export MODULEPATH={{ modulefiles_path }}:$MODULEPATH'
create: true
insertafter: EOF
- name: Create example modulefile
ansible.builtin.copy:
dest: "{{ modulefiles_path }}/example/1.0"
mode: "0644"
content: |
#%Module1.0
##
## Example modulefile
##
proc ModulesHelp { } {
puts stderr "Example module version 1.0"
}
module-whatis "Example module version 1.0"
set root /opt/example
prepend-path PATH $root/bin
prepend-path LD_LIBRARY_PATH $root/lib
- name: Verify module command
ansible.builtin.shell: . /etc/profile.d/modules.sh && module --version
args:
executable: /bin/bash
register: module_version
changed_when: false
- name: Show module version output
ansible.builtin.debug:
var: module_version.stdout_lines
- name: List available modules
ansible.builtin.shell: . /etc/profile.d/modules.sh && module avail
args:
executable: /bin/bash
register: module_avail
changed_when: false
- name: Show available modules
ansible.builtin.debug:
var: module_avail.stderr_lines