This playbook deploys EasyBuild using Docker for containerized build workflows.
- name: Deploy EasyBuild with Docker
hosts: easybuild
become: true
vars:
easybuild_image: "ghcr.io/easybuilders/easybuild:latest"
easybuild_root: /opt/easybuild
workspace_dir: "{{ easybuild_root }}/workspace"
tasks:
- name: Install Docker dependencies
ansible.builtin.package:
name:
- docker.io
- docker-compose
state: present
- name: Ensure EasyBuild directories exist
ansible.builtin.file:
path: "{{ item }}"
state: directory
mode: "0755"
loop:
- "{{ easybuild_root }}"
- "{{ workspace_dir }}"
- "{{ easybuild_root }}/source"
- "{{ easybuild_root }}/install"
- name: Deploy Docker Compose configuration
ansible.builtin.copy:
dest: "{{ easybuild_root }}/docker-compose.yml"
mode: "0644"
content: |
version: '3.8'
services:
easybuild:
image: {{ easybuild_image }}
container_name: easybuild
volumes:
- {{ workspace_dir }}:/workspace
- {{ easybuild_root }}/source:/opt/source
- {{ easybuild_root }}/install:/opt/install
working_dir: /workspace
environment:
- EASYBUILD_INSTALLPATH={{ easybuild_root }}/install
- EASYBUILD_SOURCEPATH={{ easybuild_root }}/source
stdin_open: true
tty: true
- name: Verify EasyBuild image is available
community.docker.docker_image:
name: "{{ easybuild_image }}"
source: pull
register: image_result
- name: Show EasyBuild image status
ansible.builtin.debug:
msg: "EasyBuild image {{ easybuild_image }} is ready"
- name: Test EasyBuild container
ansible.builtin.command: >
docker run --rm {{ easybuild_image }} eb --version
register: eb_version
changed_when: false
- name: Show EasyBuild version
ansible.builtin.debug:
var: eb_version.stdout_lines
community.docker collection is required for Docker image module support.