--- - name: Submit job to specific Slurm node hosts: slurm_controller become: true gather_facts: false tasks: - name: Require target_node ansible.builtin.fail: msg: "Use: ansible-playbook test-specific-node.yml -e target_node=" when: target_node is not defined - name: Submit test job to target node ansible.builtin.shell: | set -euo pipefail job_id="$( sudo -iu slurmuser sbatch --parsable </dev/null \ | head -n 1 \ | cut -d'|' -f1 \ | awk '{print $1}' )" if echo "$final_state" | grep -qE "COMPLETED|FAILED|CANCELLED|TIMEOUT|NODE_FAIL|OUT_OF_MEMORY"; then break fi sleep 1 done echo "FINAL_STATE=${final_state:-UNKNOWN}" echo "### sacct" sacct -j "$job_id" --format=JobID,JobName,User,Account,QOS,Partition,State,ExitCode,Elapsed,AllocCPUS,ReqMem,NodeList echo "### output" cat "/shared/node-test-${job_id}.out" if [ "${final_state:-UNKNOWN}" != "COMPLETED" ]; then echo "Job did not reach COMPLETED state according to sacct" exit 1 fi args: executable: /bin/bash register: node_test changed_when: true - name: Show node test result ansible.builtin.debug: var: node_test.stdout_lines