This playbook deploys Spack using Docker for containerized package management workflows.
- name: Deploy Spack with Docker
hosts: spack
become: true
vars:
spack_image: "ghcr.io/spack/ubuntu-jammy:latest"
spack_root: /opt/spack
workspace_dir: "{{ spack_root }}/workspace"
tasks:
- name: Install Docker dependencies
ansible.builtin.package:
name:
- docker.io
- docker-compose
state: present
- name: Ensure Spack directories exist
ansible.builtin.file:
path: "{{ item }}"
state: directory
mode: "0755"
loop:
- "{{ spack_root }}"
- "{{ workspace_dir }}"
- "{{ spack_root }}/mirror"
- "{{ spack_root }}/config"
- name: Deploy Docker Compose configuration
ansible.builtin.copy:
dest: "{{ spack_root }}/docker-compose.yml"
mode: "0644"
content: |
version: '3.8'
services:
spack:
image: {{ spack_image }}
container_name: spack
volumes:
- {{ workspace_dir }}:/workspace
- {{ spack_root }}/mirror:/opt/mirror
- {{ spack_root }}/config:/opt/config
working_dir: /workspace
environment:
- SPACK_ROOT=/opt/spack
stdin_open: true
tty: true
- name: Pull Spack image
community.docker.docker_image:
name: "{{ spack_image }}"
source: pull
register: image_result
- name: Test Spack installation
ansible.builtin.command: >
docker run --rm {{ spack_image }} spack --version
register: spack_version
changed_when: false
- name: Show Spack version output
ansible.builtin.debug:
var: spack_version.stdout_lines
community.docker collection is required for Docker image module support.