This playbook installs EasyBuild natively on the host system along with required build toolchains.
- name: Configure EasyBuild host
hosts: easybuild
become: true
vars:
easybuild_user: easybuild
easybuild_group: easybuild
easybuild_prefix: /opt/easybuild
easybuild_sourcepath: /opt/easybuild/sources
easybuild_installpath: /opt/easybuild/install
easybuild_repositorypath: /opt/easybuild/ebfiles_repo
python_version: "3"
tasks:
- name: Create EasyBuild user and group
ansible.builtin.user:
name: "{{ easybuild_user }}"
group: "{{ easybuild_group }}"
shell: /bin/bash
create_home: true
system: false
- name: Install build prerequisites
ansible.builtin.package:
name:
- gcc
- g++
- gfortran
- make
- cmake
- patch
- python{{ python_version }}
- python{{ python_version }}-pip
- python{{ python_version }}-dev
- environment-modules
- git
- wget
- curl
state: present
- name: Install EasyBuild
ansible.builtin.pip:
name: easybuild
executable: pip{{ python_version }}
state: present
- name: Create EasyBuild directory structure
ansible.builtin.file:
path: "{{ item }}"
state: directory
owner: "{{ easybuild_user }}"
group: "{{ easybuild_group }}"
mode: "0755"
loop:
- "{{ easybuild_prefix }}"
- "{{ easybuild_sourcepath }}"
- "{{ easybuild_installpath }}"
- "{{ easybuild_repositorypath }}"
- name: Configure EasyBuild site configuration
ansible.builtin.copy:
dest: /etc/easybuild.d/site.cfg
mode: "0644"
content: |
[CONFIG]
installpath = {{ easybuild_installpath }}
sourcepath = {{ easybuild_sourcepath }}
repositorypath = {{ easybuild_repositorypath }}
repository = FileRepository
modules-tool = EnvironmentModules
module-naming-scheme = HierarchicalMNS
- name: Set up Environment Modules initialization
ansible.builtin.lineinfile:
path: /etc/bash.bashrc
line: '. /etc/profile.d/modules.sh'
create: true
- name: Verify EasyBuild installation
ansible.builtin.command: eb --version
become: true
become_user: "{{ easybuild_user }}"
register: eb_version
changed_when: false
- name: Show EasyBuild version
ansible.builtin.debug:
var: eb_version.stdout_lines